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%
InvoicePdf.render(invoice) returns A4 PDF bytes. Layout: title + number, horizontal rule, two-column FROM/BILL TO, meta strip (issued/due/currency/ status) bracketed by rules, line items table, right-aligned totals with optional GEL equivalent, payment block (Bank of Georgia IBAN), optional notes, repeating footer with issuer ID and page number. Both party columns capture pdf.y after rendering and the global cursor jumps to whichever ran longer — avoids the bbox cursor-restore footgun that was collapsing the meta strip into the FROM column. Noto Sans Georgian is registered as a fallback family so the Georgian legal name renders without needing a separate text run. Issuer details (legal name, tax ID, registration, address, bank) are hardcoded as a constant — these are public on the rendered site already and change rarely enough that a config file would be overkill. |
||
|---|---|---|
| .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 | ||