A production-grade backend system built with Django & Django REST Framework that enables content creators to sell digital products (courses, ebooks, services) with secure payments, role-based access control, and scalable architecture.
This project is a SaaS (Software as a Service) platform designed to:
- Empower creators to monetize their content
- Allow users to purchase and access digital products
- Provide a scalable backend architecture for future web/mobile apps
- Simulate real-world production systems (payments, RBAC, orders, etc.)
- Custom User Model (email-based authentication)
- JWT Authentication
- Role-Based Access Control (RBAC)
- User verification system
- Create and manage digital products (courses, ebooks, services)
- Categories & hierarchical structure
- Lessons inside products
- Order creation & tracking
- Order items system
- Status management (pending, paid, failed, refunded)
- PayMob integration (planned)
- Payment tracking
- Transaction audit system
- Grant access after successful payment
- Track user progress
- Product rating system
- Moderation support
This project follows a production-style Django architecture (HackSoft Style Guide):
- Views → Thin (no business logic)
- Services → Business logic (write operations)
- Selectors → Read/query logic
- Models → Data only (no heavy logic)
View → Service → Model
↘ Selector ↗
MyEdu/
│
├── config/ # Django project settings
│ ├── settings/
│ │ ├── base.py
│ │ ├── dev.py
│ │ └── prod.py
│
├── apps/
│ ├── users/ # Custom user & auth
│ ├── roles/ # RBAC system
│ ├── products/ # Products & lessons
│ ├── orders/ # Orders & items
│ ├── payments/ # Payments & transactions
│ ├── enrollments/ # Access control
│ ├── reviews/ # Ratings system
│ └── dashboard/ # Analytics
│
├── core/ # Shared utilities
├── docker/ # Docker setup (planned)
├── requirements/ # Dependencies
└── manage.py
User → Browse Products
→ Create Order
→ Make Payment
→ Get Enrollment
→ Access Content
Main entities:
- Users
- Roles & Permissions
- Products & Categories
- Lessons
- Orders & Order Items
- Payments & Transactions
- Enrollments
- Reviews
- Coupons
- UUID as primary keys
- RBAC using many-to-many tables
- Separate Payments & Transactions (audit-friendly)
- Currency stored in minor units
- Backend: Django, Django REST Framework
- Auth: JWT (SimpleJWT)
- Database: PostgreSQL
- Environment: Docker (planned)
- Config: django-environ
git clone https://github.com/your-username/your-repo.git
cd your-repopython -m venv .venv
source .venv/bin/activatepip install -r requirements/base.txtCreate a .env file:
DEBUG=True
SECRET_KEY=your-secret-key
POSTGRES_DB=your_db
POSTGRES_USER=your_user
POSTGRES_PASSWORD=your_password
POSTGRES_HOST=localhost
POSTGRES_PORT=5432python manage.py migratepython manage.py createsuperuserpython manage.py runserverPOST /api/auth/register
POST /api/auth/login
GET /api/products
POST /api/products
POST /api/orders
POST /api/payments/initiate
POST /api/payments/webhook
GET /api/dashboard
- Django setup
- Custom User Model
- Project structure
- Environment configuration
- Initial migrations
- Authentication APIs
- RBAC system
- Product module
- Payments integration (PayMob)
- Docker setup
- Testing & CI/CD
This project is built as:
💡 Interview preparation project — focused on mastering real-world backend architecture using Django.
Ahmed Abdulrahman Mohamed Amin Backend Developer (Django / DRF) GitHub: @Estoda
- This is a learning-focused, production-style project
- Architecture is prioritized over speed
- Designed to scale and evolve