Go + PostgreSQL backend for CTF01D training platform.
Roadmap | Concept | Experemental Frontend
- REST API (OpenAPI 3)
- User/team management
- Game and scoreboard logic
- PostgreSQL migrations
# 1. Запуск БД (PostgreSQL)
docker run -d --name ctf01d-postgres -e POSTGRES_DB=ctf01d -e POSTGRES_USER=postgres -e POSTGRES_PASSWORD=postgres -p 5432:5432 postgres
# 2. Установка зависимостей
go mod download && go mod tidy
# 3. Сборка и запуск
go build -o main cmd/main.go
./main
Сервер будет доступен на http://localhost:4102
Default admin credentials: admin/admin
- Go 1.24+
- Docker (для локальной БД)
oapi-codegen -generate models,gin -o internal/server/httpserver.gen.go --package routers api/openapi.yaml
go run scripts/create-migration.go
- Конфиг:
configs/config.*.yml
- Подключение:
db: driver: postgres data_source: postgres://postgres@localhost:5432/ctf01d
- Подключение к контейнеру:
docker exec -it ctf01d-postgres psql -U postgres
.
├── api # openapi schema
│ └── openapi.yaml
├── build # docker files
├── cmd # main app
│ └── main.go
├── configs # app config and other config (linter)
│ ├── config.*.yml
│ ├── golangci
│ │ └── golangci.yml
│ └── spectral
│ └── spectral.yaml
├── docs # project documentation
│ └── *.md
├── html # current frontend
├── internal
│ ├── config
│ │ └── config.go
│ ├── handler # backend handlers
│ │ └── *.go
│ ├── helper # shared code
│ │ └── helper.go
│ ├── logger
│ │ └── logger.go
│ ├── migrations # sql migrations
│ │ └── psql
│ │ ├── struct_updater.go
│ │ └── update*.go
│ ├── model # api json template
│ │ └── *.go
│ ├── repository # work with db, query ...
│ │ └── *.go
│ ├── httpserver # autogenerated code from oapi-codegen
│ │ ├── html_spa.go
│ │ └── httpserver.gen.go
│ └── view
│ └── session.go
├── pkg
│ └── avatar # uniq pic for user
│ └── avatar.go
├── scripts
│ └── create-migration.go # make new file for migration
└── test
└── server_integration_test.go