Ajoute la migration initiale (migrations/0001_initial_schema.sql, incluant la table users nécessaire à l'adapter d'auth du ticket #48), le runner de migration (bin/migrate.dart) et l'accès Postgres (infrastructure/postgres/postgres_database.dart). dart pub get OK, dart analyze clean, dart test vert (le test PostgreSQL réel est skip faute de TEST_DATABASE_URL/Docker disponible dans ce sandbox ; SQL de migration revu manuellement). Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
GameTime server
Headless Dart server for future GameTime account, sync and sharing features. This package is separate from the Flutter app at the repository root.
Local run
Install dependencies from this directory:
dart pub get
Run the server:
dart run bin/server.dart
The HTTP server binds to 0.0.0.0 and reads PORT from the environment.
When PORT is not set, it listens on 8080.
PORT=9090 dart run bin/server.dart
PostgreSQL
Ticket #49 adds the initial sync-ready PostgreSQL schema and a minimal connection/migration utility.
Database environment variables:
DATABASE_HOST: PostgreSQL host.DATABASE_PORT: PostgreSQL port, defaults to5432when omitted.DATABASE_NAME: database name.DATABASE_USER: database user.DATABASE_PASSWORD: database password.
Apply migrations from server/:
DATABASE_HOST=localhost \
DATABASE_PORT=5432 \
DATABASE_NAME=gametime \
DATABASE_USER=gametime \
DATABASE_PASSWORD=gametime \
dart run bin/migrate.dart
Migrations are read from server/migrations/ in alphabetical order. The v1
runner is intentionally simple; SQL files use idempotent DDL where practical.
The PostgreSQL integration test is skipped unless TEST_DATABASE_URL is set:
TEST_DATABASE_URL=postgres://gametime:gametime@localhost:5432/gametime dart test
Healthcheck:
curl http://localhost:8080/health
Expected response:
{"status":"ok"}
Scope
Ticket #47 only scaffolds the Dart server, the hexagonal directory layout and
the /health endpoint. Ticket #49 adds the first PostgreSQL schema only; auth,
sync endpoints and sharing behavior are still implemented in later tickets.
Upcoming tickets will fill the empty adapters and use cases:
- #48: user authentication and API tokens.
- #49: PostgreSQL schema and repositories.
- #50: incremental sync API.
- #51: targeted sharing.
- #52: Docker and registry packaging.
- #53: API, contract and integration tests.