Mihjaj
A legal marketplace and practice-management platform for lawyers and law firms. People find a verified lawyer by specialty and city and book a video, voice or in-office consultation. Lawyers and firms run their cases, sessions, invoices and team from one dashboard.
- Role
- Full-stack developer: Django APIs, plus the React frontend for the website and dashboards.
- Engagement

Swifftex- Surfaces
- Public website, Lawyer & firm dashboard, Platform admin
- Links
- Private client project

- consultation types: video, voice and in-office
- 3
- ledger behind every lawyer's wallet
- Double-entry
The problem
Finding a lawyer you can trust usually happens by word of mouth, and many small practices still track cases, court sessions and fees on paper. Mihjaj puts both sides on one platform: a public directory with booking, and the practice tools lawyers need for the work that comes in.
What it does
- 01A client searches lawyers and firms by specialty and city, compares ratings and consultation prices, and books an available slot.
- 02The consultation runs as a video call inside the platform, with automatic reminders beforehand.
- 03A firm owner tracks cases, clients, court sessions, tasks and a shared calendar, and assigns work to lawyers with owner review.
- 04Consultation earnings settle into the lawyer's wallet automatically, and lawyers request withdrawals.
- 05Visitors buy legal contract templates, start a company-formation request for Egypt, Saudi Arabia or Jordan, or ask the AI legal assistant.
What I did
- Built the Django REST APIs for practice management, consultations and calls, the wallet ledger, subscriptions, role-based access and notifications.
- Built the React + TypeScript frontend (TanStack Start and Router, server-rendered) for the website and the lawyer and firm dashboards.
- Built real-time team chat for law firms with Django Channels.
Engineering
01
Wallets that always reconcile
Consultation earnings settle through a double-entry ledger, so every wallet balance can be traced back to the consultations and withdrawals behind it.
02
Bookings with a call inside
Consultations move through confirm, reject, reschedule and assign-to-lawyer, and the call itself runs on LiveKit inside the platform.
03
Firms, lawyers and staff with different powers
Firm owners, lawyers and platform staff see different data. Staff jobs map to Django permission groups, and firms review the work assigned to each lawyer.
Screens
Inside the product.
Click any screen to view it full size. Dashboards show fictional demo data.
Stack
Backend
- Python
- Django
- Django REST Framework
- Django Channels
- Redis
- MySQL / PostgreSQL
- JWT
- Docker
Frontend
- React
- TypeScript
- TanStack Start / Router
- TanStack Query
- Tailwind CSS
Integrations
- LiveKit video
- Firebase push
- Resend email
- AI assistant