~youssef
← back

From Excel to ERP: Building a System That Actually Works

2026-01-10

I started working at my dad's company in 2021. Like most small businesses trying to keep costs low, everything ran on paper. Quotes, invoices, accounts, journals, tax returns — all manual.

It worked, until Egypt introduced the electronic invoicing system. Suddenly we had to digitize everything overnight.

I started small. Excel spreadsheets. Then Excel with macros. Then Python scripts feeding into Excel. Then Grist. Each step reduced some friction but still required me to be in the loop. If I was busy or unavailable, the whole workflow stalled.

The real solution was to remove myself from the equation entirely.

So I built a cross-platform ERP system that now runs across multiple companies. The core idea was simple: automate the full quote-to-tax lifecycle so that anyone — even my 12-year-old brother — could handle the entire workflow with five minutes of training.

What the system does

It generates quotes and invoices, digitally signs and submits e-invoices to the Egyptian Tax Authority, and tracks everything through status updates. A dedicated server at the company handles submissions with fault-tolerance so nothing gets lost if something goes down.

The mobile app handles day-to-day operations. The desktop app serves the office. Both share the same backend.

The hard parts

The ETA integration was the trickiest piece. Egyptian e-invoicing has specific formatting requirements, digital signature standards, and submission protocols. Getting this right meant a lot of trial and error with the tax authority's test environment.

The other challenge was the data layer. With multiple companies and branches using the same system, search across all entities needed to be fast. Not "acceptable." Fast. When a client calls asking about an invoice from two years ago, you can't put them on hold for ten seconds.

What changed for me

This project taught me more about real-world software engineering than any course I've taken. Things like handling state across platforms, building a system that non-technical users can actually use, and what fault tolerance means when someone's business operations depend on your code.

The tech stack ended up being React Native and Expo for mobile, Electron for desktop, Supabase for the backend, and TypeScript across the board. But the tech was never the point. The point was solving a real problem that paper couldn't handle anymore.