Банковский монорепозиторий: Go backend + Angular frontend.
Проект находится в стадии миграции от legacy-функциональности задач к банковским модулям. Основной вектор развития: счета, карты и переводы.
Specto объединяет:
- Backend на Go с HTTP API и triple-store архитектурой: PostgreSQL + Redis + BoltDB.
- Frontend на Angular + TypeScript для пользовательского интерфейса.
- Локальную инфраструктуру (PostgreSQL + pgAdmin + Redis) через Docker Compose.
На текущий момент в кодовой базе присутствует legacy-логика задач (tasks) для совместимости. Новые изменения должны идти в банковские модули.
- Backend: Go 1.26, net/http, ServeMux, Cobra, slog.
- Storage: PostgreSQL (ACID-ядро), Redis (server-side сессии/rate-limit/кэш), BoltDB (append-only audit log).
- Frontend: Angular 19, TypeScript, RxJS.
- CI/CD: GitHub Actions.
- Локальная инфраструктура: Docker Compose.
.
├── backend/ # Go backend
│ ├── cmd/specto/ # CLI команды (server, seed)
│ ├── internal/
│ │ ├── config/ # Конфигурация из env
│ │ ├── database/ # PostgreSQL/BoltDB, миграции, tx
│ │ ├── domain/ # Доменные модели и ошибки
│ │ ├── service/ # Бизнес-логика
│ │ └── web/ # HTTP handlers, middleware, router
│ ├── tests/integration/ # Интеграционные тесты
│ └── go.mod
├── frontend/ # Angular frontend
├── .github/workflows/ci.yml # CI pipeline
├── docker-compose.yml # PostgreSQL + pgAdmin + Redis
└── README.md
Требования:
- Go 1.26+
- Node.js 22+
- Docker Desktop (для PostgreSQL/pgAdmin)
docker compose up -dПосле запуска:
- PostgreSQL: localhost:5432
- pgAdmin: http://localhost:5050
- Redis: localhost:6379
cd backend
go test -count=1 ./...
go run ./cmd/specto serverBackend по умолчанию слушает порт 8080.
cd frontend
npm install
npm startFrontend по умолчанию доступен на http://localhost:4200.
Ключевые переменные окружения:
- SPECTO_HOST
- SPECTO_PORT
- SPECTO_LOG_LEVEL
- SPECTO_POSTGRES_DSN
- SPECTO_REDIS_ADDR
- SPECTO_REDIS_PASSWORD
- SPECTO_REDIS_DB
- SPECTO_BOLT_PATH
- SPECTO_RATE_LIMIT_PER_MINUTE
- SPECTO_BALANCE_CACHE_TTL
- SPECTO_AUTH_SECRET
- SPECTO_AUTH_SESSION_TTL
- SPECTO_AUTH_SECURE_COOKIES
Рекомендуется хранить секреты во внешнем env-файле и не коммитить их в репозиторий.
cd backend
go test -count=1 ./...
go test -race -count=1 -coverprofile=coverage.out ./...Интеграционные тесты:
cd backend
SPECTO_RUN_INTEGRATION=1 go test -tags integration -race -count=1 -timeout 120s ./tests/integration/cd frontend
npm test -- --watch=false --browsers=ChromeHeadless
npm run buildGitHub Actions настроен в .github/workflows/ci.yml :
- Backend lint/test/integration/build
- Frontend build/test
- Реализована монорепозиторная структура backend/frontend.
- Настроены базовые пайплайны CI.
- В проекте еще присутствует legacy task-функциональность.
- Следующие шаги: выделение и развитие банковских модулей accounts, cards, transfers.
- Backend документация: backend/README.md
- Frontend документация: frontend/README.md
- Backend доменные модели: backend/internal/domain/models.go
- Backend роутер: backend/internal/web/router.go
- Миграции БД: backend/internal/database/migrations/001_init.up.sql
- CI workflow: .github/workflows/ci.yml