Prerequisites
Before you begin, ensure you have the following installed:- Node.js >= 18
- npm >= 9
- Git for version control
Getting Started
Fork the repository
Navigate to the TarkovKappaNavi repository and click the “Fork” button in the top right corner to create your own copy.
Clone your fork
Clone your forked repository to your local machine:Replace
YOUR_USERNAME with your GitHub username.Available Scripts
The project includes several npm scripts for development:Script Details
npm run dev- Starts Vite development server with hot module replacementnpm run build- Runs TypeScript type checking (tsc -b) followed by production buildnpm run preview- Preview the production build locallynpm run lint- Run ESLint to check code qualitynpm run test- Run all tests once using Vitestnpm run test:watch- Run tests in watch mode for active development
The build command includes TypeScript type checking, so you’ll see type errors during the build process if any exist.
Project Structure
Understanding the project structure will help you navigate the codebase:Architecture Overview
Tarkov Kappa Navi uses a client-side architecture:- API Data: Fetched from tarkov.dev GraphQL API, cached in memory with TanStack Query (12h TTL)
- User Data: Persisted in IndexedDB using Dexie (profile, progress, notes, pins, etc.)
- UI State: Managed with Zustand stores
- Domain Logic: Pure functions for unlock detection, filtering, and recommendations
Technology Stack
| Category | Technology |
|---|---|
| Framework | React 18 + TypeScript |
| Build Tool | Vite 7 |
| State Management | Zustand v5 |
| Server State | TanStack Query v5 |
| Local Database | Dexie v4 (IndexedDB) |
| Validation | Zod v4 |
| Routing | React Router v7 |
| Styling | CSS Modules |
| Testing | Vitest |
| Linting | ESLint |
| Icons | Lucide React |
Next Steps
Now that your environment is set up:- Read the Contributing Guidelines to understand our coding standards
- Learn about our Testing Strategy
- Check the GitHub Issues for tasks to work on
This project is fully client-side with no backend required. All user data is stored locally in the browser’s IndexedDB.