Skip to content

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
SwifftexSwifftex
Surfaces
Public website, Lawyer & firm dashboard, Platform admin
Links
Private client project
Mihjaj: Public website
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

  1. 01A client searches lawyers and firms by specialty and city, compares ratings and consultation prices, and books an available slot.
  2. 02The consultation runs as a video call inside the platform, with automatic reminders beforehand.
  3. 03A firm owner tracks cases, clients, court sessions, tasks and a shared calendar, and assigns work to lawyers with owner review.
  4. 04Consultation earnings settle into the lawyer's wallet automatically, and lawyers request withdrawals.
  5. 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.

Home: search by specialty and city
Home
Firm dashboard · AR: Today's sessions, tasks and finance summary
Firm dashboard · AR: Wallet: consultation earnings and withdrawals

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