Planeta Ekaterinburg — Phone Directory
My first commercial web project and first Django experience. Directory of organizations in Ekaterinburg, live for 16 years. Rescued data from MS Access when no one else could.
Table of Contents
The Story That Started It
“We have a companies database in MS Access. No one could extract it. Can you?” That’s how my Django journey began — and a project that still runs.
Live: planeta‑ekb.ru
Context of the Era
2009: Django 1.1 on the rise, Access everywhere in SMB, data migration is pain. The winner moves data carefully without breaking business processes.
Business Insights
- Simple + reliable solutions can live for decades.
- Careful data migration builds trust and becomes an advantage.
What I Built
- Extracted .mdb via ODBC preserving relations and Cyrillic.
- Migrated to PostgreSQL and shipped a simple, fast directory on Django.
- Search, categories, districts — minimal magic, maximum clarity.
Lessons
- Reliable, simple code outlives fads and frameworks.
- Often it’s better to pick the stack that will restart cleanly tomorrow after updates — not the shiniest one.
Similar projects
Projects with similar technologies and tasks
PVS‑Studio Conference Engine — Landing Automation
Unified platform to auto‑generate conference landing pages and collect leads. Solved the problem of creating dozens of near‑identical pages for PVS‑Studio event participation.
- Python
- Django
- PostgreSQL
- Jinja2
- Bootstrap
- +1
EEF (SCO) — Youth Economic Forum Management System
Government contract to run a large international event: 12 curators, 72 local coordinators, 5000+ participants. Technically flawless, psychologically exhausting. A lesson that gov contracts require both technology and people work.
- Python
- Django
- PostgreSQL
- JavaScript
- jQuery
- +1
Tunnel Shop — E‑commerce with Social Shopping
Innovative e‑commerce project with personal stylist assistance for Sign&Hold. Combined an online catalog with offline appointments to shop with stylists.
- Python
- Django
- JavaScript
- PostgreSQL
- Parallax.js