reinit
This commit is contained in:
commit
ad8c238e78
53 changed files with 10091 additions and 0 deletions
93
CLAUDE.md
Normal file
93
CLAUDE.md
Normal file
|
@ -0,0 +1,93 @@
|
|||
# CLAUDE.md
|
||||
|
||||
This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.
|
||||
|
||||
## Architecture Overview
|
||||
|
||||
GoCheck is a real-time collaborative checklist application with an **SSE-first architecture**:
|
||||
- **Backend**: Go server with SQLite (one DB per checklist) - located in `backend/` directory
|
||||
- **Frontend**: React TypeScript SPA with Radix UI and Tailwind CSS - located in `frontend/` directory
|
||||
- **Real-time**: All data flows through Server-Sent Events - no polling or API calls for data retrieval
|
||||
- **Embedded**: Frontend is built and embedded into the Go binary for single-file deployment
|
||||
|
||||
## Common Development Commands
|
||||
|
||||
### Backend (Go)
|
||||
```bash
|
||||
# Build the complete application (frontend + backend)
|
||||
./build.sh
|
||||
|
||||
# Run the server
|
||||
./gocheck
|
||||
|
||||
# Development with hot reload (requires Air)
|
||||
cd backend && air
|
||||
|
||||
# Full dev environment (backend + frontend hot reload)
|
||||
./dev.sh
|
||||
```
|
||||
|
||||
### Frontend (React/TypeScript)
|
||||
```bash
|
||||
# Install dependencies
|
||||
cd frontend && npm install
|
||||
|
||||
# Development server (proxies to backend on :8080)
|
||||
cd frontend && npm run dev
|
||||
|
||||
# Build for production
|
||||
cd frontend && npm run build
|
||||
|
||||
# Lint code
|
||||
cd frontend && npm run lint
|
||||
|
||||
# Type checking
|
||||
cd frontend && npm run build # TypeScript checking is part of build
|
||||
```
|
||||
|
||||
### Container Operations
|
||||
```bash
|
||||
# Build and push multi-arch container
|
||||
./build-and-push.sh
|
||||
|
||||
# Docker development environment
|
||||
./dev-docker.sh
|
||||
```
|
||||
|
||||
## Key Architecture Patterns
|
||||
|
||||
### SSE-First Data Flow
|
||||
The application **never** uses REST endpoints for data retrieval. All checklist data flows through SSE:
|
||||
1. Client connects to `/api/checklists/{uuid}/sse`
|
||||
2. Server sends complete state on connection
|
||||
3. All updates broadcast via SSE events
|
||||
4. Frontend maintains state purely from SSE messages
|
||||
|
||||
### Database Design
|
||||
- Each checklist has its own SQLite database in `backend/data/{uuid}.db`
|
||||
- Schema includes: `checklist_info`, `items`, and `dependencies` tables
|
||||
- Item dependencies and date constraints are core features
|
||||
|
||||
### API Endpoints
|
||||
All endpoints return consistent JSON with `success` and `message` fields:
|
||||
- `POST /api/checklists` - Create checklist
|
||||
- `POST /api/checklists/{uuid}/items` - Add item
|
||||
- `PATCH /api/checklists/{uuid}/items/{id}` - Update item
|
||||
- `DELETE /api/checklists/{uuid}/items/{id}` - Delete item
|
||||
- `POST /api/checklists/{uuid}/items/{id}/lock` - Lock item
|
||||
- `GET /api/checklists/{uuid}/sse` - SSE stream (primary data source)
|
||||
|
||||
### Frontend Structure
|
||||
- `frontend/src/pages/`: Home and Checklist pages
|
||||
- `frontend/src/components/`: Reusable components (ChecklistItem, DependencyManager, etc.)
|
||||
- `frontend/src/hooks/`: Custom hooks including `useSSE` for real-time updates
|
||||
- Uses React Router for navigation
|
||||
- Uses Radix UI for accessible, modern UI components
|
||||
- Local storage for saving checklist UUIDs
|
||||
|
||||
### Development Notes
|
||||
- No test suite currently exists
|
||||
- ESLint configured with no-semicolon style
|
||||
- Frontend uses Vite for fast development
|
||||
- Backend embeds frontend dist for production deployment
|
||||
- Container builds support multi-arch (amd64/arm64)
|
Loading…
Add table
Add a link
Reference in a new issue