Commit Graph

10 Commits (11bceedacadc4d9faa5eb90dba2fecac84150d5e)

Author SHA1 Message Date
Talha Ahmed 11bceedaca Add change-password: users update their own password from Settings
POST /api/auth/change-password requires the current password; admins
still reset others via manage.py set-password. UI on the Settings page
(signed-in users only) with match/length validation.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-08-19 19:07:28 +05:00
Talha Ahmed d823a45cb2 Production readiness: month separation, auth, FX service, AWS deployment
Month management & data separation:
- Fix double-count bug: re-uploading a filename updates the existing
  session_files row in place; identical content (sha256) is skipped —
  a closing can never parse the same file twice
- Guard against duplicate closings per reporting month (409 unless
  explicitly overridden); dashboard flags duplicates
- Default new closings to carry-forward openings; month switcher in the
  closing header; publish state visible everywhere; Accounts Summary
  lists unpublished months with the reason instead of dropping them
- Completed closings are locked read-only with an explicit reopen

Authentication (stdlib only, no new deps):
- Per-user login (scrypt + HMAC tokens), AR_AUTH=auto turns on with the
  first user; manage.py add-user/set-password/deactivate-user
- Verified identity feeds reviewed_by/approved_by/confirmed_by

Exchange rates:
- fx_service with provider abstraction: Frankfurter (free, keyless,
  ECB) default, exchangerate-api stub; month-end + daily fetch
  endpoints and UI buttons; rates arrive unconfirmed so Control C5
  still gates the close; cache table; certifi CA bundle

Deployment & hardening:
- Production Docker stack: caddy (auto-HTTPS) + nginx + single-worker
  backend + mysql:8.4; per-context .dockerignore (images carry no
  financial data); .env.example with local+production sections
- deploy/DEPLOY.md runbook + nightly S3 backup script
- Stale-job recovery on startup; export retention (AR_RETENTION_DAYS);
  deep /api/health; request/job logging; Gitea Actions CI
- Repo reorganized: launchers in scripts/, dated lowercase docs,
  root README, .gitattributes for deterministic line endings

Tests: 152 passed (25+ new: dedup, month locking, auth, FX orientation)

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-08-19 18:46:47 +05:00
Talha Ahmed c322437599 fix isuses 2026-08-18 19:37:57 +05:00
sheheryarsoomro12 60c4489415 New 2026-08-17 15:41:46 +05:00
sheheryarsoomro12 bacd13c8b5 New 2026-08-04 11:41:50 +05:00
sheheryarsoomro12 1fe6487681 Merge origin/main into new-changes.
Resolve models.py conflict by keeping session controls/payout fields and MySQL column lengths.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-03 12:26:31 +05:00
sheheryarsoomro12 b795d51aa7 Enhance API functionality and session management 2026-08-03 11:38:48 +05:00
bahawal.baloch 2135dc873c Implement MySQL support in AR aging app. Update README with configuration instructions, modify requirements for PyMySQL and dotenv, and refactor database setup to use MySQL. Adjust models and queries for compatibility with MySQL, including column size specifications. Enhance Vite config for API proxying. 2026-07-29 18:52:37 +05:00
sheheryarsoomro12 73a004d2e1 Stop tracking SQLite WAL/SHM runtime files.
Extend gitignore so local database sidecars are not committed.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-07-29 18:07:50 +05:00
sheheryarsoomro12 bf0cdc14c3 Initial commit: AR aging app with root gitignore.
Ignore financial workbooks, OS junk, and build artifacts; track app source and project skills.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-07-29 18:07:21 +05:00