No description
Find a file
Claude f4aa6972e1
feat: shared Postgres with per-app schemas
One Postgres 16 instance runs in the infra stack (docker-compose).
Each app can be given its own isolated schema with a dedicated,
scoped Postgres user via the new Database card on the app detail page.

What was added:

infra/
  docker-compose.yml  — postgres:16-alpine service + hiy-pg-data
                        volume; POSTGRES_URL injected into server
  .env.example        — POSTGRES_PASSWORD entry

server/
  Cargo.toml          — sqlx postgres feature
  src/db.rs           — databases table (SQLite) migration
  src/models.rs       — Database model
  src/main.rs         — PgPool (lazy) added to AppState;
                        /api/apps/:id/database routes registered
  src/routes/mod.rs   — databases module
  src/routes/databases.rs — GET / POST / DELETE handlers:
      provision  — creates schema + scoped PG user, sets search_path,
                   injects DATABASE_URL env var
      deprovision — DROP OWNED BY + DROP ROLE + DROP SCHEMA CASCADE,
                   removes SQLite record
  src/routes/ui.rs    — app_detail queries databases table, renders
                        db_card based on provisioning state
  templates/app_detail.html — {{db_card}} placeholder +
                              provisionDb / deprovisionDb JS

Apps connect via:
  postgres://hiy-<app>:<pw>@postgres:5432/hiy
search_path is set on the role so no URL option is needed.

https://claude.ai/code/session_01FKCW3FDjNFj6jve4niMFXH
2026-03-24 13:16:39 +00:00
builder fix: restore app reachability after platform restart 2026-03-24 12:47:32 +00:00
docs Add roadmap: Podman + git push deploy + self-hosted git 2026-03-20 14:46:14 +00:00
infra feat: shared Postgres with per-app schemas 2026-03-24 13:16:39 +00:00
proxy chore: gitignore generated proxy/caddy.json 2026-03-22 18:18:08 +00:00
scripts feat: git push deploy (roadmap step 2) 2026-03-23 08:54:55 +00:00
server feat: shared Postgres with per-app schemas 2026-03-24 13:16:39 +00:00
.dockerignore Add .dockerignore to drop build context from ~1.8 GB to a few KB 2026-03-22 10:13:53 +00:00
.env.example Add session-based auth to dashboard and API 2026-03-20 13:45:16 +00:00
.gitattributes Add .gitattributes: force LF line endings for shell scripts 2026-03-19 09:40:26 +00:00
.gitignore chore: gitignore generated proxy/caddy.json 2026-03-22 18:18:08 +00:00
Cargo.lock chore: update Cargo.lock (add base64 0.22) 2026-03-23 12:59:30 +00:00
Cargo.toml M1: Rust control plane, builder, dashboard, and infra 2026-03-19 08:25:59 +00:00
plan.md Add MVP plan for self-hosted Heroku clone on Raspberry Pi 2026-03-19 07:38:17 +00:00