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%
issuer_profiles is one row per user with all the legal-entity fields that previously lived in the ISSUER constant — legal name, tax id, reg number, bank details — plus per-user defaults (invoice prefix, currency, due days, notes). On invoice creation these get snapshotted onto the invoice row so historical PDFs render unchanged when the user later edits their profile. clients is per-user, case-insensitive unique on (owner_id, email). Partial index on active clients for the dropdown. Soft-archive only; ON DELETE RESTRICT to honor the indefinite-retention rule. |
||
|---|---|---|
| .forgejo/workflows | ||
| db/migrations | ||
| lib | ||
| public | ||
| views | ||
| .dockerignore | ||
| .env.example | ||
| .gitignore | ||
| asxpio.rb | ||
| CLAUDE.md | ||
| config.ru | ||
| docker-compose.yml | ||
| Dockerfile | ||
| flake.lock | ||
| flake.nix | ||
| Gemfile | ||
| Gemfile.lock | ||