Add a cache-optimized multi-stage Dockerfile with non-root runtime, compose service definitions for local/dev execution, CI Go version alignment, and docs/path cleanup updates. Made-with: Cursor
This commit is contained in:
@@ -36,7 +36,7 @@ isProject: false
|
||||
|
||||
## Current Project Context
|
||||
|
||||
- No existing backend source files were found in `/home/ano/projects/produktor.io/tenerife.baby/backend`, so this plan assumes a greenfield implementation in that directory.
|
||||
- No existing backend source files were found in this repository root, so this plan assumes a greenfield implementation.
|
||||
- Stack confirmed: **Go + PostgreSQL (+ PostGIS)**.
|
||||
- Invitation model confirmed: **Hybrid** (signed token + inviter lineage tracking).
|
||||
- Client scope confirmed: **both** a reusable TS library and a plain JS frontend integration.
|
||||
@@ -72,31 +72,31 @@ flowchart TD
|
||||
## Planned Files and Components
|
||||
|
||||
- Backend bootstrap:
|
||||
- `/home/ano/projects/produktor.io/tenerife.baby/backend/cmd/api/main.go`
|
||||
- `/home/ano/projects/produktor.io/tenerife.baby/backend/internal/http/routes.go`
|
||||
- `/home/ano/projects/produktor.io/tenerife.baby/backend/internal/config/config.go`
|
||||
- `cmd/api/main.go`
|
||||
- `internal/http/routes.go`
|
||||
- `internal/config/config.go`
|
||||
- Auth/invitation domain:
|
||||
- `/home/ano/projects/produktor.io/tenerife.baby/backend/internal/auth/challenge.go`
|
||||
- `/home/ano/projects/produktor.io/tenerife.baby/backend/internal/auth/ed25519_verify.go`
|
||||
- `/home/ano/projects/produktor.io/tenerife.baby/backend/internal/invite/token.go`
|
||||
- `/home/ano/projects/produktor.io/tenerife.baby/backend/internal/invite/service.go`
|
||||
- `internal/auth/challenge.go`
|
||||
- `internal/auth/ed25519_verify.go`
|
||||
- `internal/invite/token.go`
|
||||
- `internal/invite/service.go`
|
||||
- Geo domain:
|
||||
- `/home/ano/projects/produktor.io/tenerife.baby/backend/internal/geo/collections_service.go`
|
||||
- `/home/ano/projects/produktor.io/tenerife.baby/backend/internal/geo/features_service.go`
|
||||
- `internal/geo/collections_service.go`
|
||||
- `internal/geo/features_service.go`
|
||||
- Database:
|
||||
- `/home/ano/projects/produktor.io/tenerife.baby/backend/migrations/0001_init_users_invites.sql`
|
||||
- `/home/ano/projects/produktor.io/tenerife.baby/backend/migrations/0002_geo_collections_features.sql`
|
||||
- `migrations/0001_init_users_invites.sql`
|
||||
- `migrations/0002_geo_collections_features.sql`
|
||||
- Frontend (no npm/bundling):
|
||||
- `/home/ano/projects/produktor.io/tenerife.baby/backend/web/index.html`
|
||||
- `/home/ano/projects/produktor.io/tenerife.baby/backend/web/app.js`
|
||||
- `/home/ano/projects/produktor.io/tenerife.baby/backend/web/api.js`
|
||||
- `web/index.html`
|
||||
- `web/app.js`
|
||||
- `web/api.js`
|
||||
- Reusable TypeScript client library (separate package):
|
||||
- `/home/ano/projects/produktor.io/tenerife.baby/backend/libs/geo-api-client/package.json`
|
||||
- `/home/ano/projects/produktor.io/tenerife.baby/backend/libs/geo-api-client/tsconfig.json`
|
||||
- `/home/ano/projects/produktor.io/tenerife.baby/backend/libs/geo-api-client/src/GeoApiClient.ts`
|
||||
- `/home/ano/projects/produktor.io/tenerife.baby/backend/libs/geo-api-client/src/keys.ts`
|
||||
- `/home/ano/projects/produktor.io/tenerife.baby/backend/libs/geo-api-client/src/storage.ts`
|
||||
- `/home/ano/projects/produktor.io/tenerife.baby/backend/libs/geo-api-client/dist/` (build output consumed by frontend)
|
||||
- `libs/geo-api-client/package.json`
|
||||
- `libs/geo-api-client/tsconfig.json`
|
||||
- `libs/geo-api-client/src/GeoApiClient.ts`
|
||||
- `libs/geo-api-client/src/keys.ts`
|
||||
- `libs/geo-api-client/src/storage.ts`
|
||||
- `libs/geo-api-client/dist/` (build output consumed by frontend)
|
||||
|
||||
## API Surface (v1)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user