FinTracker - монорепозиторий персонального финансового трекера.
Проект состоит из:
- backend: REST API на Go + chi
- frontend: Next.js приложение (App Router)
- postgres: база данных PostgreSQL в Docker Compose
- Go 1.25
- chi v5
- cors middleware
- slog (структурированные логи)
- PostgreSQL 16
- Next.js 14 (App Router)
- React 18
- TypeScript 5 (strict)
- Tailwind CSS v3
- TanStack Query v5
- Zustand (auth)
- Axios
- React Hook Form + Zod
- Vitest + Testing Library
.
├── backend/
│ ├── cmd/api/main.go
│ ├── internal/
│ │ ├── config/
│ │ ├── domain/
│ │ ├── http/
│ │ └── repo/
├── frontend/
│ ├── app/
│ ├── src/
│ └── __tests__/
├── docker-compose.yml
├── Makefile
└── .env.example
Скопируйте шаблон окружения и заполните секреты:
cp .env.example .envМинимально обязательно поменять:
POSTGRES_PASSWORDJWT_SECRET
make upЗапустятся сервисы:
- postgres:
localhost:5432 - backend:
http://localhost:8080 - frontend:
http://localhost:5173
curl -i http://localhost:8080/healthОжидается HTTP/1.1 200 OK.
make logs # логи всех сервисов
make down # остановить контейнеры
make db-shell # psql внутри контейнера postgrescd backend
go run ./cmd/apicd frontend
npm install
npm run devПо умолчанию frontend будет доступен на http://localhost:3000.
Важно: в Docker Compose frontend работает на 5173, а CORS в backend сейчас разрешает origin http://localhost:5173.
Источник правды: .env.example.
Ключевые переменные:
POSTGRES_USERPOSTGRES_PASSWORDPOSTGRES_DBDB_HOSTDB_PORTDB_SSLMODEHTTP_HOSTBACKEND_PORTFRONTEND_PORTJWT_SECRETAPP_ENVNEXT_PUBLIC_API_URL
Пример для frontend API:
NEXT_PUBLIC_API_URL=http://localhost:8080/api/v1
Базовый префикс API: /api/v1
Маршруты:
/api/v1/accounts(GET, POST)/api/v1/accounts/{id}(GET, PUT, DELETE)/api/v1/transactions(GET, POST)/api/v1/transactions/{id}(GET, PUT, DELETE)/health(GET)
Текущее состояние:
- роуты подключены
- хендлеры
accountsиtransactionsпока возвращают501 Not Implemented - endpoint
/auth/loginпока не реализован в backend (но вызывается frontend)
/login/dashboard/accounts/accounts/[id]/transactions
cd frontend
npm run lint
npm run typecheck
npm run testcd backend
go build ./...
go vet ./...
go test ./...- Сервисный слой backend (
handler -> service -> repo) в процессе реализации. - Полный auth flow (JWT login endpoint + middleware) в процессе реализации.
- Часть UI работает с реальным API-клиентом, но зависит от незавершенных backend endpoint-ов.
Лицензия не указана.