Initial Commit
This commit is contained in:
93
.kiro/steering/tech.md
Normal file
93
.kiro/steering/tech.md
Normal file
@@ -0,0 +1,93 @@
|
||||
# Technology Stack
|
||||
|
||||
## Frontend
|
||||
|
||||
- **React 19** with **TypeScript** for type-safe development
|
||||
- **Vite** for build tooling and dev server
|
||||
- **React Router** for client-side routing
|
||||
- **Tailwind CSS v4** for styling (utility-first)
|
||||
- **Clerk** (@clerk/clerk-react) for authentication
|
||||
- **React Query** (@tanstack/react-query) for server state management
|
||||
|
||||
### Mapping & Visualization
|
||||
|
||||
- **Leaflet** for interactive maps (free, open-source)
|
||||
- **OpenStreetMap** tiles as base layer
|
||||
- **Leaflet.heat** for heat map overlays
|
||||
- **Leaflet.markercluster** for marker clustering
|
||||
- **Recharts** for charts and data visualization
|
||||
|
||||
### Utilities
|
||||
|
||||
- **date-fns** for date manipulation
|
||||
|
||||
## Backend (Planned)
|
||||
|
||||
- **Node.js** with **Express.js** REST API
|
||||
- **MySQL 8.0+** database with spatial data support
|
||||
- **Prisma** ORM for database access
|
||||
- **Clerk** for authentication (backend SDK)
|
||||
- **Multer** for file uploads
|
||||
- **exifr** for EXIF metadata extraction
|
||||
- **Redis** for caching external API responses
|
||||
|
||||
## Path Aliases
|
||||
|
||||
Use TypeScript path aliases for cleaner imports:
|
||||
|
||||
```typescript
|
||||
import { Report } from '@/types';
|
||||
import { apiClient } from '@/services/api';
|
||||
import { useGeolocation } from '@/hooks';
|
||||
```
|
||||
|
||||
Available aliases:
|
||||
- `@/*` → `src/*`
|
||||
- `@/components/*` → `src/components/*`
|
||||
- `@/pages/*` → `src/pages/*`
|
||||
- `@/services/*` → `src/services/*`
|
||||
- `@/hooks/*` → `src/hooks/*`
|
||||
- `@/utils/*` → `src/utils/*`
|
||||
- `@/types/*` → `src/types/*`
|
||||
|
||||
## Environment Variables
|
||||
|
||||
Required in `.env.local`:
|
||||
|
||||
```env
|
||||
# Clerk Authentication
|
||||
VITE_CLERK_PUBLISHABLE_KEY=your_publishable_key
|
||||
|
||||
# API Configuration
|
||||
VITE_API_BASE_URL=http://localhost:3000/api
|
||||
```
|
||||
|
||||
## Common Commands
|
||||
|
||||
```bash
|
||||
# Development
|
||||
npm run dev # Start dev server (http://localhost:5173)
|
||||
|
||||
# Build
|
||||
npm run build # Production build to dist/
|
||||
|
||||
# Preview
|
||||
npm run preview # Preview production build locally
|
||||
|
||||
# Linting
|
||||
npm run lint # Run ESLint
|
||||
```
|
||||
|
||||
## TypeScript Configuration
|
||||
|
||||
- **Strict mode** enabled
|
||||
- **noUnusedLocals** and **noUnusedParameters** enforced
|
||||
- **noUncheckedIndexedAccess** for safer array/object access
|
||||
- **JSX**: react-jsx (React 17+ transform)
|
||||
- **Module resolution**: bundler mode
|
||||
|
||||
## Code Quality
|
||||
|
||||
- ESLint with React hooks and React refresh plugins
|
||||
- Strict TypeScript checking
|
||||
- No unused variables/parameters allowed
|
||||
Reference in New Issue
Block a user