Ty Clifford 6686388834 - Implemented the complete first-run experience:
Account creation and guarded onboarding flow.
Current-cash starting balance with automatic rollover enabled.
Dynamic bill generation, shared/custom categories, recurring targets, 
and optional same-day onboarding transactions.
Optional dormant reserve and additional categories.
Mailgun email or authenticator-app 2FA configuration.
Responsive dark/light UI with no overflow at 390px.
Fixed administrator session-ID creation bug.
Core implementation: [OnboardingService.php (line 
59)](/Users/tyemeclifford/Documents/GH/budget/app/OnboardingService.php:59), 
[onboarding.php (line 
19)](/Users/tyemeclifford/Documents/GH/budget/views/onboarding.php:19), 
and [index.php (line 
143)](/Users/tyemeclifford/Documents/GH/budget/public/index.php:143).
Verification passed: financial self-test, onboarding integration test, 
full browser walkthrough, mobile layout, routing guards, and zero 
browser console errors. Live email delivery requires actual Mailgun 
credentials and was not sent during testing.
2026-06-15 14:51:44 -04:00
-
2026-06-14 15:25:31 -04:00
-
2026-06-14 15:25:31 -04:00
-
2026-06-14 15:25:31 -04:00
2026-06-11 23:33:17 +00:00
-
2026-06-15 10:33:55 -04:00
-
2026-06-14 15:25:31 -04:00

Neon Ledger

A self-contained monthly financial planner built with PHP, SQLite, JavaScript, and HTML5. It tracks rolling budget remainders, income withholding, bill progress, categorized expenses, dormant savings, calendar due dates, comparisons, and Mailgun reminders from an administrator dashboard.

Requirements

  • PHP 8.1 or newer
  • PDO SQLite extension
  • Optional: PDO MySQL for MySQL/MariaDB migration
  • HTTPS is recommended outside local development

No Composer or Node dependencies are required.

Start locally

php -S 127.0.0.1:8080 router.php

Open http://127.0.0.1:8080 and create the first administrator account. The SQLite database is created automatically at storage/database/budget.sqlite.

Run the accounting and export smoke test with:

php scripts/self-test.php

For Apache, use public/ as the document root and enable mod_rewrite.

Core behavior

  • Each month has a manual starting income and an explicit previous-month remainder.
  • Positive remaining funds can roll into the next month. Use Recalculate to refresh an existing month's rollover after changing the prior month.
  • Income and expense rules can move a percentage or fixed amount into the dormant account automatically.
  • Dormant deposits reduce usable funds; restorations can return to monthly income or be tagged to a specific budget target.
  • Payments linked to a budget item progress its paid and owing totals.
  • Monthly and yearly recurring items materialize from the latest matching series, even when a month was skipped.
  • Annual fresh-income totals exclude rollover so carried money is not counted twice.
  • JSON exports use the neon-ledger/budget-planner version 1 format and exclude credentials, 2FA secrets, and the Mailgun API key.

Bill reminders

Configure Mailgun, recipient, alert windows, and reminder times in Settings. Run the reminder worker every minute:

* * * * * cd /path/to/neon-ledger && php scripts/send-reminders.php

Use php scripts/send-reminders.php --force to scan immediately. Duplicate reminders for the same bill, recipient, window, and day are suppressed.

Optional MySQL/MariaDB mode

SQLite is the default and is always sufficient. The Import & export screen can create the MySQL schema, copy all SQLite records, and update config/database.json in one step. The original SQLite file remains untouched as a fallback snapshot.

Create the target database and user before running the transfer. The PHP runtime must include pdo_mysql.

Backup

Use Export JSON for a portable planner package. For a direct SQLite backup, copy storage/database/budget.sqlite while the app is stopped.

Security

  • Passwords use PHP's current PASSWORD_DEFAULT algorithm.
  • All state-changing forms use CSRF tokens.
  • Optional TOTP two-factor authentication works with standard authenticator apps.
  • The application should be served with public/ as its web root.
S
Description
A self-contained monthly financial planner built with PHP, SQLite, JavaScript, and HTML5. It tracks rolling budget remainders, income withholding, bill progress, categorized expenses, dormant savings, calendar due dates, comparisons, and Mailgun reminders from an administrator dashboard.
Readme Unlicense 1.6 MiB
Languages
PHP 76%
CSS 18%
JavaScript 6%