Client work
MirOffice
The public website of MIR Architecture Office, on its own domain.
Stack
- Backend
- Django
- Frontend
- React TypeScript
- Data & ML
- PostgreSQL
- Infrastructure
- Docker Nginx TLS
01 The problem
MIR Architecture Office needed a production website on its own domain — one that presents the office properly, stays reachable, and has someone looking after it once it is live.
They had the domain knowledge; they needed one person to handle everything else.
02 What I built
Designed, built and run by one developer.
A production web platform for MIR Architecture Office, delivered end to end: interface design, backend, frontend, deployment on the client’s own domain with TLS, and ongoing maintenance. Built alone, with the client in the loop throughout. Django and PostgreSQL behind a React + TypeScript front end, in Docker behind Nginx.
- The interface design, worked out directly with the client.
- A Django backend with PostgreSQL and a React + TypeScript front end.
- Deployment on the client's own domain with TLS, in Docker behind Nginx.
- Ongoing maintenance after launch.
03 Screens
The live product.
01 / 02
Every project, filterable by type.
The projects page on a phone.
04 Architecture
How MirOffice fits together.
- Component
- Request
Connections
- Visitors to miroffice.ir · DNS , DNS
- miroffice.ir · DNS to Nginx · TLS , HTTPS
- Nginx · TLS to React + TypeScript , static
- Nginx · TLS to Django , /api
- Django to PostgreSQL
05 Key decisions
What I chose, why, and what it cost.
-
Decision
Work directly with the client, in short loops
Why
The client knows their work and how they want it shown. Putting real screens in front of them early turned feedback into changes while the work was still in motion, not after it was finished.
Trade-off
More iterations and more of my time in conversation — which is the job when you are the only developer.
-
Decision
A real backend, not a site builder
Why
Django and PostgreSQL give the office a site that can grow with it, on infrastructure the client owns rather than rents from a platform.
Trade-off
A server to run and patch, where a hosted builder would have handled that.
-
Decision
Own domain, TLS and a containerised deploy
Why
The office owns its domain and its data. Docker keeps the deploy reproducible, and Nginx terminates TLS in front of the app.
Trade-off
Certificates, updates and backups are part of the maintenance I carry after launch.
06 Try it yourself
MirOffice is running. Go and use it.
A public website, so there is nothing to log in to.