e252ddb952
- Organize backend into src/ (routes/, services/, db/) per package.json entrypoint - Add migrations/import-mdb.js for one-time .mdb → SQLite migration - Add public/ frontend: check ledger table, slide-in new/edit panel, PDF generation - Add docker/Dockerfile and docker-compose.yml for self-hosted deployment - Add .github/workflows: Docker Hub build+push on main/tags, TODO→Issues scanner - Add GnuMICR font files (GPL-2.0) for MICR E-13B line rendering
3.4 KiB
3.4 KiB
TODO
MVP
- Build
public/index.html-- app shell, header with company name and current check number - Build
public/css/style.css-- functional, dense layout; ledger table is primary view - Build
public/js/app.js-- all frontend logic viafetch() - Check ledger table -- columns: check #, date, payee, amount, memo, printed status
- Ledger: filter by printed / unprinted
- Ledger: sort by check number and date
- New check form -- fields: payee, amount, date, memo, note1, note2; address fields collapsed by default
- New check form -- slide-in panel or modal, not a separate page
- Edit mode for unprinted checks (inline or same panel as new check form)
- Checkbox selection of 1--3 checks for print; enforce the 3-check maximum in the UI
- "Generate PDF" button -- POST to
/api/pdf, open resulting PDF in a new browser tab - Reprint flow -- allow re-generating PDF for already-printed checks without re-marking (
?mark_printed=false) - Delete confirmation for unprinted checks
- Basic error display for API failures (failed PDF generation, validation errors)
- Amount input validation -- numeric, two decimal places, greater than zero
- Date input defaults to today
- Check number display -- show next check number on new check form (read from account)
- Run migration against
Montana Dinosaur Center.mdband verify all check records import correctly - Verify PDF output: spot-check field positions against a printed check from the original software
- Verify MICR line renders using GnuMICR.otf and lands at correct Y position
- Docker Compose smoke test -- confirm app starts, DB initializes, and PDF endpoint responds
Post-MVP / Future Features
These exist in the original ezCheckPrinting software but are intentionally out of scope for MVP.
Multi-account support
- Account switcher -- the original software has ~14 accounts across TMDC, Lions, District 37, etc.
account_idforeign key onchecksandlayout_fieldstables- Account management UI -- create, edit, delete accounts
- Per-account logo and signature image upload
- Per-account bank configuration (routing, account number, transit code, company info)
Check layout editor
- Visual layout editor -- drag or nudge field positions (X/Y in inches)
- Per-field font, size, and visibility toggles
- Printer offset calibration UI (offset left/right/up/down) for aligning to check stock
- Preview panel that reflects layout changes before saving
Payee management
- Payee address book -- store and recall payee name + address lines
- Autocomplete payee field from address book on new check form
Check stub
- 1-up with stub layout (alternative to 3-up) -- stub fields are already in
layout_fields - Stub field rendering in PDF service (fields prefixed
Stubinlayout_fields)
Reporting and ledger features
- Date range filter on ledger
- Search/filter by payee name
- Total amount display for filtered ledger view
- CSV export of check ledger
Import / migration
- Multi-account
.mdbimport -- run migration script per account, associate with account record - Import logo from
.mdbSettingstable for accounts that have one (already implemented in script, needs UI trigger)
Authentication
- Basic auth or simple password gate for any deployment that leaves the local network