A basic full-stack todo list application with a Go (Golang) REST API backend and a React frontend with a professional-grade storage architecture.
- Backend (Go + Gin): RESTful API with CRUD operations.
- Frontend (React + Vite): Modern reactive UI with Hooks (useState, useEffect).
- Styling (Tailwind CSS): Dark-mode interface with optimistic UI.
- Persistence: File-based JSON storage.
- Architecture: Refactored into "Standard Go Layout" (cmd, internal).
- Containerization: Docker & Docker Compose for Dev/Prod.
capuchin/
├── backend/
│ ├── cmd/
│ │ └── server/
│ │ └── main.go # Entry point
│ ├── db/
│ │ └── db.json # Database
│ ├── internal/
│ │ ├── api/
│ │ ├── models/
│ │ │ └── todo.go # Data structures
│ │ └── store/
│ │ └── file.go # File I/O logic
│ ├── Dockerfile # Backend Container
│ ├── air.toml # Hot Reload Config
│ ├── go.mod # Dependencies
│ └── go.sum
├── frontend/
│ ├── src/
│ │ ├── App.tsx
│ │ ├── App.css
│ │ └── main.tsx
│ ├── Dockerfile # Frontend Container
│ ├── vite.config.ts # Build Config
│ └── package.json
├── docker-compose.yml # Prod Orchestration
├── docker-compose.dev.yml # Dev Mode Overrides
└── makefile # Command shortcuts
└── package.json
- Backend: Go (REST API)
- Frontend: React, TypeScript
- Containerize: Docker
- Database: File System storage
- Backend Framework: Gin
- Frontend: React, TypeScript
- Containerize: Docker
- Database: File System storage
Open Terminal 1
cd backend
go run cmd/server/main.goServer runs on localhost:8080
Open Terminal 2
cd frontend
npm run devClient opens at localhost:5173
Install npm packages
npm iRun npx script
npx concurrently "cd ./backend/cmd/server && go run main.go" "npm run dev --prefix ./frontend"- Frontend: http://localhost:5173
- Health Check: http://localhost:8080/health
- Backend API: http://localhost:8080/todos
We support two modes: Development (Hot-Reload) and Production (Lean Static Builds).
Runs the backend with Air (Go hot-reload) and Frontend with Vite (HMR). Changes to code are reflected instantly.
make dev
# OR
docker compose -f docker-compose.yml -f docker-compose.dev.yml up --build- Frontend: http://localhost:5173
- Health Check: http://localhost:8080/health
- Backend API: http://localhost:8080/todos
Runs a lean, production-ready build (scratch image for Go, nginx for React).
make prod
# OR
docker compose up --build- App: http://localhost
- Health Check: http://localhost:8080/health
- Backend API: http://localhost:8080/todos
make down
# OR
#in active terminal
ctrl+c or cmd+c - Go: Structs, Slices, JSON Marshalling, Modules, Package Exporting.
- React: Functional Components, Hooks, API Integration (fetch, async/await), Controlled Inputs.
- Docker: Multi-stage builds, Scratch images, Docker Compose overrides.
- General: REST API Design, CORS, JSON Persistence, Refactoring,TypeScript(for styling), axios (for API calls)
Plans for v1: auth real db mcp server
Long term plans:folder todo collaborators real time update organization authentication groups and access sharelink auth login schedule with reminder version control mcp server