Main page. Just simple HTML, CSS and JS. https://asxp.io
  • Ruby 57.4%
  • HTML 22.2%
  • CSS 10.3%
  • JavaScript 7.5%
  • Nix 1%
  • Other 1.6%
Find a file
Sergei Poljanski 2c1d66dce5
All checks were successful
Build and Deploy to Production / build (push) Successful in 48s
Build and Deploy to Production / deploy (push) Successful in 25s
docs: storage stack, invoicing routes, secrets table
Updates CLAUDE.md to reflect what the site actually is now (entity page +
invoicing, not just contact form):

- "What this is" expanded to two responsibilities.
- New "Storage stack dependency" section explaining the Postgres + MinIO
  split, the storage repo, and the failure mode if storage is down.
- Stack list gains Sequel/pg, Prawn, aws-sdk-s3, AdminAuth, the two
  external Docker networks, and postgres in the dev shell.
- New "Invoicing" section: routes (admin + public), storage model with
  the uuid mass-assignment caveat, PDF rendering + Noto Georgian fallback,
  frontend touch, and the open caveats (single-process number allocator,
  UUID == access).
- Secrets table extended with ADMIN_*, ASXPIO_DB_PASSWORD,
  ASXPIO_S3_ACCESS_KEY, ASXPIO_S3_SECRET_KEY and their rotation rules
  (dual-repo update, push storage first).
- Records the URL-safe-password lesson from the deploy that broke prod
  twice, with a generator one-liner.
- Recovery snippet uses a <prod-host> placeholder rather than the real
  internal IP, since this file lives in a public repo.

Also drops the global-prefs lines from Hard Rules — those belong in the
user-level CLAUDE.md, not the project file.
2026-05-26 18:51:26 +03:00
.forgejo/workflows deploy: write invoicing env vars to .env 2026-05-26 18:07:15 +03:00
db/migrations db: connection helper and invoices migration 2026-05-26 17:43:18 +03:00
lib fix: assign uuid after Invoice.new to avoid mass-assignment restriction 2026-05-26 18:34:45 +03:00
public css: invoice list, badges, item form, download button 2026-05-26 17:54:48 +03:00
views invoicing: admin and public views 2026-05-26 17:54:40 +03:00
.dockerignore ruby rework with contact form 2026-05-05 00:45:27 +04:00
.env.example ruby rework with contact form 2026-05-05 00:45:27 +04:00
.gitignore ruby rework with contact form 2026-05-05 00:45:27 +04:00
asxpio.rb invoicing: admin and public routes 2026-05-26 17:54:31 +03:00
CLAUDE.md docs: storage stack, invoicing routes, secrets table 2026-05-26 18:51:26 +03:00
config.ru ruby rework with contact form 2026-05-05 00:45:27 +04:00
docker-compose.yml compose: join external storage network 2026-05-26 17:29:09 +03:00
Dockerfile gems: add pg, sequel, prawn, aws-sdk-s3 for invoicing 2026-05-26 17:29:21 +03:00
flake.lock ruby rework with contact form 2026-05-05 00:45:27 +04:00
flake.nix gems: add pg, sequel, prawn, aws-sdk-s3 for invoicing 2026-05-26 17:29:21 +03:00
Gemfile gems: add pg, sequel, prawn, aws-sdk-s3 for invoicing 2026-05-26 17:29:21 +03:00
Gemfile.lock gems: add pg, sequel, prawn, aws-sdk-s3 for invoicing 2026-05-26 17:29:21 +03:00