Work · 2026 · In production

ورشجي

Warshagy

A managed manufacturing platform for Egypt, starting with CNC machining.

  • warshagy.com
  • Private repository
  • Product design · Backend · Frontend · Infrastructure
This case study wears Warshagy's own colours
Warshagy home page: a machined gear under a headline in Arabic
Home, Arabic by defaultDesktop · 1440

المشكلةThe problem

Egyptian engineers with STEP files and drawings need machined parts quoted, reviewed and delivered, and they do not want to manage a supplier network to get there. Warshagy takes the geometry in, puts an engineer between the file and the price, and hands the part back.

البناءThe build

A Django and DRF API with Celery workers; a Next.js customer app and a separate staff console built from the same source on its own domain; MinIO for CAD and drawings; and a small OpenCascade service that reads every uploaded model and computes bounding box, volume and face inventory before a human sees it. Customers sign in with a WhatsApp code, staff with Google. Arabic and English carry equal weight in the type system, and the dark machine-bay design language came from a written brief, not a template. A set of public engineering calculators doubles as the marketing surface.

التشغيلHow it runs

Thirteen containers in one Compose stack: Postgres, Redis, MinIO, the API, two frontends, the CAD analyser, a Celery worker and beat. nginx terminates behind Cloudflare with an origin certificate, so there is no certbot and nothing to renew. Every push to main redeploys, migrations included, and load-test scripts cover the quote path.

System · النظام

How Warshagy is put together

392 files in 139 folders, without dependencies or vendored code. TypeScript 52% · Python 34% · JavaScript 3%. The repository is private; the structure stays that way.

One Compose stack, thirteen containersEngineer's browserArabic or EnglishEngineer's browser · Arabic or EnglishCloudflareproxied DNS · origin certCloudflare · proxied DNS · origin certnginxTLS · two vhostsnginx · TLS · two vhostsCustomer appNext.js · warshagy.comCustomer app · Next.js · warshagy.comStaff consoleNext.js · ops.warshagy.comStaff console · Next.js · ops.warshagy.comGoogle sign-instaff onlyGoogle sign-in · staff onlyAPIDjango · DRFAPI · Django · DRFWhatsApp sidecarone-time codesWhatsApp sidecar · one-time codesCelery worker + beatnotifications · schedulesCelery worker + beat · notifications · schedulesCAD analyserOpenCascade · condaCAD analyser · OpenCascade · condaPostgresRFQs · quotes · ordersPostgres · RFQs · quotes · ordersRedisbroker · cacheRedis · broker · cacheMinIOCAD · drawings · proofsMinIO · CAD · drawings · proofs
  • the product's own code
  • services it runs
  • data
  • outside providers

One request · رحلة طلب

An engineer uploads a STEP file

Step by step through the system above. The tags name the parts each step touches.

  1. Upload

    The request form takes CAD, drawings or photos. Files stream into MinIO; the request row lands in Postgres with its material, quantity and delivery constraints.

    • Customer app
    • API
    • MinIO
    • Postgres
  2. Hand-off

    The API asks the CAD analyser to look at the geometry, passing an internal token and the object key, and answers the customer immediately instead of waiting.

    • API
    • CAD analyser
  3. Analysis

    The analyser reads the model from MinIO, computes bounding box, volume, centre of mass and a face inventory, and patches the result back with a content hash, so the same geometry is never analysed twice.

    • CAD analyser
    • MinIO
    • API
  4. Review

    The staff console shows the request with its geometry as evidence. An engineer checks manufacturability, chooses materials and finishes, and drafts a quote by hand. Celery sends the notifications.

    • Staff console
    • Celery worker + beat
  5. Quote

    The customer opens the quote from a signed link, signs in with a WhatsApp code, and accepts it or asks a question.

    • Customer app
    • WhatsApp sidecar
  6. Order

    Payment proof is uploaded and verified by a person. The order then moves through QC, logistics and a status history the customer can follow.

    • Staff console
    • MinIO
    • Postgres

Decisions · قرارات

Why Warshagy is built this way

  • A separate CAD analyser service

    The OpenCascade bindings are only reliable from conda-forge, so they cannot live in the slim pip-based Django image. Isolating them also keeps a heavy geometry kernel off the web workers.

    CostOne more container and an internal callback contract to keep honest.

  • Analyse geometry once, apply materials later

    Results are material-independent and keyed by the content hash of the bytes. Mass is density times volume on the Django side, so a part quoted in three alloys is analysed one time.

  • Manual quotation, not instant pricing

    Engineering review before a price is the promise. The platform structures the review, collects the evidence and tracks the outcome; it does not pretend to replace the engineer.

  • Two frontends from one source

    The staff console is the same Next.js codebase built in an operations variant on its own domain. Customer and staff surfaces share components without sharing exposure.

  • Bilingual from the first commit

    Arabic and English carry equal typographic authority, with Alexandria and Sora, and every layout is tested in both directions. Retrofitting right-to-left is far more expensive than starting with it.

  • Cloudflare origin certificates instead of certbot

    TLS is strict end to end and there is no renewal job to babysit. The origin only ever talks to Cloudflare.

Design system · نظام التصميم

How Warshagy looks

The digital machine bay: a real machined part under precise light, with drawings, materials and process states legible around it.

Palette

  • Forge black#121212Ground
  • Tool steel#2B2D31Surface
  • Ignition orange#F97316Action and the current process step
  • Machined white#F5F5F5Ink
  • Readable steel#A1A7B2Secondary text
  • Inspection paper#F5F3EFBright-mode ground

Type

Sora · display and interfaceWarshagy Aa Bb 0123

Alexandria · Arabicورشجي أبجد هوز ٠١٢٣

Principles · design docs

  • The evidence rule: every high-impact visual is a part, a drawing, a tolerance or a quote action. Decorative futurism is prohibited.
  • The two-speed rule: the homepage may choreograph attention; quoting, review and operations stay still unless motion explains state.
  • Bilingual from the outset: Warshagy and ورشجي carry equal typographic authority, and every layout is tested in both directions.

Screens · شاشات

Warshagy as it ships

Captured from the live product. Desktop frames are 1440 wide, phones 390.

The public engineering tools catalogue
Public engineering tools, the marketing surfaceDesktop · 1440
The Material Weight calculator with an isometric inspection view
Material Weight, with the inspection viewDesktop · 1440
The request-for-quote form with CAD upload
Request a quote: CAD, drawings or a photoDesktop · 1440
Warshagy home page on a phone
Home on a phonePhone · 390
Résumé