Skip to content

Latest commit

 

History

History
129 lines (99 loc) · 3.02 KB

README.md

File metadata and controls

129 lines (99 loc) · 3.02 KB

ctf01d-training-platform Backend

Go + PostgreSQL backend for CTF01D training platform.

Roadmap | Concept | Experemental Frontend


Features

  • REST API (OpenAPI 3)
  • User/team management
  • Game and scoreboard logic
  • PostgreSQL migrations

Quick Start

# 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


Development

Requirements

  • Go 1.24+
  • Docker (для локальной БД)

Генерация кода из OpenAPI

oapi-codegen -generate models,gin -o internal/server/httpserver.gen.go --package routers api/openapi.yaml

Создание миграции

go run scripts/create-migration.go

Database

  • Конфиг: configs/config.*.yml
  • Подключение:
    db:
      driver: postgres
      data_source: postgres://postgres@localhost:5432/ctf01d
    
  • Подключение к контейнеру:
    docker exec -it ctf01d-postgres psql -U postgres

Project Structure

.
├── 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

Contributing

See Contributing Guidelines.