Inside Ganje: a React new-tab dashboard, Django sync and the road to the Chrome Web Store
Ganje turns the new tab in Chrome and Firefox into a calm desk over your wallpaper. The widget grid, twelve looks, workspaces, etag-based s…
Backend architecture, Django and Python, relational databases and the everyday craft of delivering enterprise software.
Ganje turns the new tab in Chrome and Firefox into a calm desk over your wallpaper. The widget grid, twelve looks, workspaces, etag-based s…
A practical guide to connecting Django to Zarinpal, Zibal, Mellat and Saman with the open-source django-iranian-payment: its two layers, in…
The life of a Muzer booking from request to cancellation: why payment waits for the barber's approval, where the money sits in the wallet a…
How my Django template takes crypto through NOWPayments: creating invoices, checking the IPN's HMAC and the bug that marked bitcoin payment…
A PyQt5 client for a Lightning Network node that charts the Bitcoin mempool live: PyInstaller release builds, an app key baked in at build …
One domain, two mail services: Resend sends the system mail, Zoho Mail holds the support mailbox. The DNS records and why the two SPF recor…
How the optional features of my Django base project became modules: a folder with a module.py read through ast, one .env switch, settings c…
One nginx, one Postgres, and per site its own app, Redis, Celery worker and beat, behind Cloudflare or ArvanCloud. Plus the details that bi…
The articles here are not only about clean code; they are about what happens at the level of the system — database lock contention, the cost of opening TCP connections, and how a service behaves under real load.