Behairy Consulting Engineering (BCE) has run bridge, residential, industrial, and administration projects out of Cairo since 1970. Before this, project costs, client invoices, and documents lived across spreadsheets and paper. I designed and built a single internal platform that gives everyone — from the CEO to a junior engineer — exactly the access they need, a full paper trail on every cost, and native support for Egyptian tax rules.
BCE is a global engineering and project-management firm, privately owned and based in Dokki, Cairo, operating since 1970. Their public work spans bridges, residential developments, industrial facilities, and administration buildings — the internal platform below is the software that runs their business behind that work: costs, invoices, staff, and client records, not the buildings themselves.
Visit bce-eg.com ↗A 50-year-old engineering and project-management firm — with decades of bridge, residential, industrial, and administration work behind it — was still running day-to-day operations on spreadsheets and paper trails. Project costs, client invoices, and staff assignments were scattered across files with no single source of truth, no permission model, and no way to see a project's real financial picture without manually reconstructing it.
A full Django platform covering projects, clients, cost tracking, invoicing, staff assignments, and virtual folders — all gated by a role-based permission system spanning CEO, Senior, Team Lead, and Junior. It's deployed on a self-hosted Windows server converted to run Docker, with WebSocket support for live updates and a full backup/disaster-recovery system underneath it.
BCE isn't one feature — it's a set of Django apps that share the same data and permission layer. A few of the more involved ones got their own full write-ups, linked below.
The core records everything else hangs off — projects, their clients, locations, and status — with visibility scoped by role from the query level up, not just hidden in the UI.
Project costs auto-generate their related indirect-cost and tax records at fixed amounts (not percentages), feeding role-based dashboards and PDF/Excel/CSV exports.
Full case study →Client invoices generated directly from project cost records, keeping the paper trail between what was spent and what was billed in one place instead of two.
Staff assignments per project, plus a time tracking and correction system where edit permissions follow the same CEO → Junior hierarchy as everything else.
Document and drawing storage per project, with streaming ZIP downloads and bulk permission checks added after usage outgrew the original design.
Full case study →One-click, print-ready PDF profile sheets per project — or bulk-exported for several at once — built around WeasyPrint's layout quirks.
Full case study →A unified database-and-media backup model, CEO-only, with Windows-to-Docker path translation so restores work identically from either side.
Full case study →Daphne/WebSocket support pushes live updates to the UI — status changes, new assignments — without anyone needing to refresh the page.
Four tiers, enforced the same way across every module above — not just a label on a user account.
Full visibility across every project, client, and financial record. The only role with backup and restore access.
Broad visibility across projects and financial reports; can approve costs and manage staff assignments.
Scoped to assigned projects; manages their team's tasks and reviews time entries within that scope.
Scoped to their own assigned tasks and time entries — corrections require sign-off from Team Lead or above.
Projects, clients, costs, invoices, and staff assignments as connected Django models — the single source of truth everything else builds on.
Four permission tiers (CEO, Senior, Team Lead, Junior) control exactly what each person can see and touch, enforced at the view and query level.
Cost entries auto-generate their related tax and indirect-cost records; profile sheets and financial reports export with one click.
The server itself started as a Windows PC, converted to run the full stack in Docker — Nginx, Gunicorn, PostgreSQL, Redis, Celery, and Daphne for WebSockets — after migrating off an earlier Waitress/WhiteNoise setup that kept crashing under load.
This isn't a demo project — it's the system a real, 50-year-old engineering firm runs its actual business on, every day. That changes what "finished" means: it's not about shipping a feature, it's about a CEO trusting the numbers enough to make payroll decisions from them.