efficient 01
to open Overview on 2,239 transactions. It took 507 ms before a request cache, 50-row registers and bundled fonts.
Welcome to Lightning.
Lightning is a free, local-first money app for salaried people in Egypt. The code is public, so every claim here comes with the file or command that proves it. Pick one small task and build it with us, in your browser.
You don't need to know finance, or all of the code. Pick the one you know and follow its link: most go straight to open tasks.
Arabic and right to left. Lines still in English, figures out of order. Read Arabic and can edit a template? Open Arabic good first issues.
Screens and charts. Small fixes in Jinja, CSS and plain JavaScript, each with the file named: open good first issues.
Backend. Small, with the file and the test named: open Python good first issues. Bigger: routes that are honestly sync or async.
Android, then iOS. The phone app runs Python through Chaquopy; next is a Play-ready build. Know Python on iOS, or SQLCipher builds? Talk to us on Discord.
Your own PC and bank. Run the Windows build with sample data and open an issue for what breaks. Know a bank's SMS or CSV format we don't read? Send redacted samples, never real ones.
Open a good first issue and comment /take. A bot assigns it to you; /drop gives it back.
Open a Codespace: the demo runs in your browser. Edit the file the issue names, then commit and sync.
Write Closes #123 and how you checked it. Checks run, we review, and the issue closes when it merges.
// stuck? ask on the issue, we answer there · bigger plans: the roadmap
Lightning shows a salaried person in Egypt where their money stands, what is coming, and why. Bank, wallet, cash at home, certificates, THNDR and gold, in EGP, on their own PC and phone.
A money app asks for trust. We would rather show our working. With the source public, anyone can check how a figure is calculated, how the data is locked, and what happens when something breaks.
And the more people can read it, the faster it gets better for every Egyptian who plans with it.
Who we are. Lightning started with one person who logged every pound by hand for years, and wanted a tool that showed it all in one place (the story). Today the founder, a small team and three AI teammates build it in public, through the same pull requests you would open.
Everything above is true. This is also true.
I work in finance. I can price a three-year certificate in my head and tell you what a gram of 21-karat did last March. What I can't tell you is why a test that passed at 11 p.m. fails at 2 a.m. with no change in between.
After enough of those nights, opening the code stopped being a principle and became a plan: if more people can read it, fewer of the bugs are mine to find alone.
So yes, transparency. And also: please send help. Pull requests are cheaper than therapy.
// the founder, still debuggingThree words are easy to write. Here is the number behind each, and where to check it.
to open Overview on 2,239 transactions. It took 507 ms before a request cache, 50-row registers and bundled fonts.
Every figure has one name, one formula and one function. Screens read their labels from one registry, and a test checks every function it names exists.
SQLCipher encryption at rest, with the key held under Argon2id locks. The app serves on 127.0.0.1 only, and needs no account.
The terminal replays the real commands and their real results. When it finishes, it is yours: type help.
// counted 2026-11-09 on main. Clone it and run the same commands: if a number is wrong, that's an issue we want.
A single-user modular monolith: one Python process, one SQLite database, pages rendered on the server. A backup is a copy.
↓ imports only point down · lint-imports fails the build otherwise
# money is never a float from decimal import Decimal # python: Decimal · sqlite: scaled integers amount_e6 = 450_000_000 # 450 EGP # a posting that doesn't balance never lands if internal_total != ZERO: raise ValidationError("Internal movements must net to zero")
// trimmed from lightning/core/ledger.py ↗
Good engineering is honest about its edges. These are ours, today. What comes after them is on the roadmap →
Fully working, still evolving. Ordinary-PC acceptance, legacy import and in-app backup restore are still being finished. Keep your own backup of anything real, as you would with any app.
Restore safety is tested, not proven: the reboot drill on an ordinary Windows PC is still to do, and power-loss behaviour is unverified.
Freed memory is not wiped. Decrypted fragments may persist in freed memory, crash dumps or the page file. Nothing protects an unlocked PC from malware.
Statement import reads CSV, Excel and text-based CIB statements in the released app (v2.1.2). Any other PDF still needs a CSV; the app writes a prompt that helps an AI tool prepare one.
Routes are async def with synchronous database work inside. It works; it isn't right yet.
// three steps, all in your browser · chat, if you like: discord