The platform
The platform is a two-sided marketplace. Families use one mobile app to browse pujas, look at pandit profiles, check the Panchang, book a ceremony, pay and chat with the pandit assigned to them. Pandits use a second app to receive booking requests, manage the pujas they offer and their prices, mark a ceremony's progress and withdraw their earnings.
Behind both apps sits a Django backend that was already working well: a REST API with JWT logins, Celery jobs that offer each booking to pandits and handle timeouts, WebSockets for live chat and booking updates, push notifications, Razorpay payments, wallets and payouts, and astrology features such as kundli, daily horoscopes and muhurat reminders.
What needed to change
- The admin panel was stock Django. Staff ran the whole marketplace from plain tables with no overview of how bookings, revenue or sign-ups were moving.
- Staff logged in with usernames rather than their email addresses.
- The public website had four basic pages. It did not explain the pujas people search for, and it did not show that real, verified pandits were available.
- None of this could break the two apps, which talk to the same backend every minute.
Admin panel 2.0
Every screen, redesigned
All 38 admin and account templates were overridden through Django's own template system: the dashboard, change lists, forms, filters, inline tables, pagination, history, delete confirmations, the login and the password screens. Staff keep every permission, filter and form they had, in a panel that now looks like a modern product, with a collapsible sidebar, icons for each section, a quick search on Ctrl or ⌘ K, and light and dark themes that follow the system setting.
A dashboard that answers questions
The new dashboard has eleven panels. Key figures compare the chosen date range with the period just before it. Charts show bookings over time, the share of each booking status, platform revenue and new sign-ups. Lists show the most booked pujas, the top pandits, bookings that need attention, everything coming up in the next seven days, quick links and each staff member's own recent actions.
Wallet insights
The wallet transactions list gained its own insights panel: net flow, credits, debits, refunds, transaction and wallet counts, a chart over time and a breakdown by reason, with amounts in rupees formatted the Indian way, in lakhs and crores.
Email login
Staff now sign in with their email address. Because app users and pandits can share an email, the login only considers active staff accounts, and every permission check still runs through Django.
Website 2.0
The public site was rebuilt with a new brand, a warm saffron palette and a page for every question a family or a pandit asks first.
- Home, about, contact and a page for pandits, rewritten and redesigned around booking and joining.
- Ten puja guides, in four categories from life events to festivals: what each puja is, when it is performed, what is usually needed and how booking works. No prices, no promised outcomes.
- Find a Pandit, with a page for each city where verified pandits are available. The pages are built from live data, but only from public-safe fields, so phone numbers, addresses, documents and bank details can never reach the HTML. Cities with too few pandits are marked noindex until they grow.
- A sitemap and robots.txt generated by the site itself, so new guides and cities reach Google on their own.
Technology
Python and Django 5 with Django REST Framework, Celery and Celery Beat on Redis, Django Channels on Daphne for WebSockets, MariaDB, Firebase push notifications and Razorpay. The admin theme is plain CSS and JavaScript on top of Django's templates, with Chart.js for the charts and custom template tags for the analytics, so it upgrades cleanly with Django itself.
- Python
- Django
- Django REST Framework
- Celery
- Django Channels
- Redis
- MariaDB
- Chart.js