A full-featured web marketplace platform built with Django for a university diploma team project. It includes product listings, user roles (buyers, sellers, pickup staff), shopping carts, orders, reviews, and periodic tasks.
🌐 Demo Site:
You can explore a live demo of the site at:
🔗 https://marketplacediplom.pythonanywhere.com/
- 🔐 Role-based user system (Admin, Buyer, Seller, Pickup Staff)
- 🛍️ Shop creation and product management
- 🛒 Shopping cart and checkout system
- 📦 Order tracking with pickup/delivery
- 💬 Product reviews
- ⏱️ Scheduled tasks using Celery + Redis
- 🖼️ Media upload support (images for shops/products)
- 📊 Admin panel at /custom_admin/
- 🗄️ SQLite/PostgreSQL support (via .env)
See project/docs/known_limitations.md for a list of current limitations and open points during MVP development.
marketplace-django/
├── app_users/ # User profiles, roles, and authentication
├── app_shops/ # Shops and shop creation requests
├── app_products/ # Product categories, products, reviews
├── app_orders/ # Carts, orders, order items
├── project/ # Main Django project config
├── media/ # Uploaded media files
└── project/docs/ # Documentation and data model
Marketplace Data Model
The project follows a modular domain-driven architecture, with foreign key relationships connecting shops, users, products, and orders.
Setup instructions (virtual environment, .env, dependencies, Docker, etc.):
📄 project/docs/installation_manual.md
The project includes a full Docker-based setup for local development and testing.
Services:
| Service | Description |
|---|---|
web |
Django application running on port 8000 |
celery |
Celery worker processing background jobs |
celery-beat |
Celery Beat scheduler for periodic tasks |
redis |
Redis as Celery broker and result backend |
Common Commands:
# Build and start all services
docker-compose up -d --build
# Stop all containers
docker-compose down
# View logs
docker-compose logs -f
# Seed database with data
docker-compose exec web python manage.py seed_data
⚠️ Make sure.envis properly configured before running Docker services.
Command to populate the database with test data (users, products, shops, orders):
📄 project/docs/seed_data_manual.md
python manage.py seed_dataThis project uses Celery with Redis for background task processing, and Celery Beat for scheduling periodic jobs.
📄 See all tasks in project/docs/celery_tasks.md
Active Scheduled Task:
| Task Name | Description |
|---|---|
app_orders.tasks.mark_unclaimed_orders |
Marks unpaid orders as "unclaimed" after 7 days |
To register the periodic task:
python manage.py register_periodic_tasks✅ Periodic task mark_unclaimed_orders_every_day will be registered successfully.
The admin interface is available at:
🔗 https:///custom_admin/
Default superuser credentials:
| Username | Password |
|---|---|
| admin | admin |
🌐 API interactive Documentation (Swagger) site:
You can explore API description at:
🔗 http://127.0.0.1:8000/api/docs/
This project provides two external APIs:
A public, read-only REST API that allows external users to:
- Browse products
- Filter by category or shop
- Search and sort products
- View all categories and shops
📍 Base URL:
/api/public/
Authenticated sellers can:
- View and manage their own shops
- Create and update products in their shop
📍 Base URL:
/api/seller/
| Topic | File |
|---|---|
| Installation Guide | installation_manual.md |
| Seed Data (Users, Orders) | seed_data_manual.md |
| Data Model Diagram | models.png |
| Known Limitations | known_limitations.md |
| Celery Tasks | celery_tasks.md |
This project is developed by the [Diploma Team].
You are welcome to contribute, test, or reuse the code for educational purposes.