CORE PLATFORM

The system a 50-year-old engineering firm actually runs on.

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.

PythonDjangoCeleryPostgreSQLRedisDocker
BCE / System Overview
Client since1970 — bridges, residential, industrial, administration
Est. 1970
RolesCEO · Senior · Team Lead · Junior
4 tiers
Modules connectedProjects · Costs · Invoices · Files · Backups
11 total
DeploymentDocker on a self-hosted Windows server
24/7
The Client

Behairy Consulting Engineering.

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 ↗
The Breakdown

The Problem

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.

What I Built

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.

Under the Hood

Eleven connected modules.

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.

Projects & Clients

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.

Cost & Financial Reporting

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 →

Invoicing

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, Roles & Time Tracking

Staff assignments per project, plus a time tracking and correction system where edit permissions follow the same CEO → Junior hierarchy as everything else.

Virtual Folders & Files

Document and drawing storage per project, with streaming ZIP downloads and bulk permission checks added after usage outgrew the original design.

Full case study →

Project Profile Exports

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 →

Backup & Disaster Recovery

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 →

Notifications & Real-Time Updates

Daphne/WebSocket support pushes live updates to the UI — status changes, new assignments — without anyone needing to refresh the page.

Who can see what.

Four tiers, enforced the same way across every module above — not just a label on a user account.

CEO

Full visibility across every project, client, and financial record. The only role with backup and restore access.

Senior

Broad visibility across projects and financial reports; can approve costs and manage staff assignments.

Team Lead

Scoped to assigned projects; manages their team's tasks and reviews time entries within that scope.

Junior

Scoped to their own assigned tasks and time entries — corrections require sign-off from Team Lead or above.

Process

How it works.

01

Model the business

Projects, clients, costs, invoices, and staff assignments as connected Django models — the single source of truth everything else builds on.

02

Gate by role

Four permission tiers (CEO, Senior, Team Lead, Junior) control exactly what each person can see and touch, enforced at the view and query level.

03

Automate the paperwork

Cost entries auto-generate their related tax and indirect-cost records; profile sheets and financial reports export with one click.

04

Keep it running

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.

Outcome
30+
PEOPLE USE IT
DAILY, 4 ACCESS LEVELS
96%
FEWER DB LOOKUPS
ON BUSIEST REPORTS
11
CONNECTED
MODULES
54
YEARS OF CLIENT
HISTORY, NOW DIGITAL
Why it matters

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.