A modern platform for managing and fairly distributing notary commissions—with automatic revenue tracking and transparent reporting. ✨
This project was sponsored by Notary Office 179 - Shoush
- Demo Videos
- Setup & Installation
- Overview
- Key Features
- How Commission Distribution Works
- Tech Stack
- Roadmap
See the platform in action! 🎬
signup.mp4
login.mp4
contract-creation.mp4
Ensure you have the following installed:
- 🐳 Docker (v20+)
- 🧩 Docker Compose (v2+)
-
Clone the repository:
git clone https://github.com/yourusername/notary.git cd notary -
Configure environment variables: Create a
.envfile in the root directory with the necessary configuration values (see example in.example.env). -
Build and start all services:
docker compose up -d --build
-
Verify everything is running:
docker compose ps
-
View logs (optional):
docker compose logs -f
-
Access the application:
- Frontend:
http://localhost:3000 - Backend API:
http://localhost:8000
- Frontend:
In many notary offices, commission must be distributed among notaries equitably. "Equitably" here means:
✅ Each new commission should be assigned to the notary with the lowest total revenue over time.
Traditionally, this process was tracked manually on paper in a notebook—prone to errors, time-consuming, and lacking transparency. This project digitizes and automates that entire workflow: 🗂️
- 🧾 Digital record-keeping: All commissions are stored securely in the platform
- 🧮 Automated calculations: The platform continuously tracks and calculates each notary's total revenue
- 📊 Fair distribution: Notaries are ranked by revenue, ensuring the next commission goes to the right person
- 🏙️ City-based isolation: Data is scoped by city for privacy and relevance
Granular permissions and distinct interfaces for different user types:
- 👑 Admins — Full system control, user management, and configuration
- 🧑💼 Agents — Manage commission entries and generate reports
- 🧑⚖️ Notaries — View their own revenue, history, and city-specific reports
Data segregation ensures that notaries in one city can only access reports and data for their city—no cross-contamination, enhanced privacy.
Define and assign dedicated agents and admins for each province and city. Ideal for organizations managing notaries across multiple regions.
Revenue for each notary is computed automatically using the legally-mandated formula.
Here's the workflow at a high level:
- 📝 Record Commission: An agent logs a new commission into the system (case details, amount, etc.)
- ➕ Aggregate Revenue: The platform continuously aggregates total revenue over time for each notary
- ⚖️ Identify Next Notary: For the next assignment, the system identifies the notary with the lowest total revenue (ensuring fair distribution)
- 🏙️ Generate Reports: City-scoped reports show revenue breakdown, assignment history, and more
Note: Revenue is calculated automatically using the law-defined formula implemented in the backend. 🧾✅
This platform is built with a modern, scalable stack:
-
🐍 Backend: Django + Django REST Framework (DRF) + PostgreSQL Robust Python framework with a powerful REST API layer
-
⚛️ Frontend: Next.js + Tailwind CSS + FlyonUI
React-based framework with server-side rendering, responsive design, and beautiful UI components -
🐳 Infrastructure: Docker + Docker Compose
Containerized services with orchestration for easy local development and deployment
We're continuously improving the platform. Upcoming features include:
- 🧰 Advanced table filtering for reports and user lists
- 🔎 Global search bar (users, commissions, notaries, cities)
- 👤 Enhanced user profiles (account details, role, city/province context, activity history)
- 📧 Email notifications for commission assignments and important updates
- 📊 Data export (CSV, PDF reports for auditing)
- 🛠️ Admin dashboard improvements and tooling
- 🧾 Extended audit trail with full action logging
- 🌐 Multi-language support (i18n)
Built with ❤️ By Davoud Nosrati
