A simple but flexible Customer Relationship Management (CRM) system built with Django. It includes customer management, product catalog, order creation, dynamic price calculations, and an admin dashboard.
⚠️ This project was built as a learning exercise and may require updates to run on the latest Django versions.
Features
- Customer management (create, view, update, delete)
- Product catalog with price per product
- Order system with support for multiple products per order
- Live total price calculation per order (based on quantity and price)
- Admin panel with login permissions
- Dynamic order form with dropdown product selection
- Display of all orders per customer
- Built-in filtering for order status, date, time
- Basic templates using Django templating system
Project Structure crm_project/ ├── manage.py ├── db.sqlite3 ├── mycrm/ # Main Django project settings │ └── urls.py ├── customers/ # App for managing customers │ └── views.py, models.py, admin.py, urls.py ├── products/ # App for insurance products │ └── models.py, admin.py, urls.py ├── orders/ # App for order creation and management │ └── models.py, forms.py, views.py, admin.py, urls.py ├── templates/ │ └── ... # HTML templates for rendering views
Requirements
- Python 3.8+
- Django 4.2+
- pip (Python package manager)
- venv (virtual environment)
Installation
1.Clone the repository:
git clone https://github.com/<michalwilman>/CRM-Project.git
cd CRM-Project
2.Create a virtual environment:
python -m venv venv
source venv/bin/activate # On Windows: venv\Scripts\activate
3.Install dependencies:
pip install -r requirements.txt
4.Run initial migrations:
python manage.py makemigrations
python manage.py migrate
5.Create a superuser:
python manage.py createsuperuser
6.Start the development server:
python manage.py runserver
#Login to Admin Panel
Visit:
http://127.0.0.1:8000/admin/
Use the superuser credentials you just created.
Usage Examples
- Create new products (e.g. insurance types like "Home", "Travel", etc.)
- Add new customers
- Create orders and select products (with quantity)
- Orders will show up in the customer’s profile along with total price
- Order status (e.g., shipped or pending) is reflected dynamically
Technologies Used
Python
Django
SQLite
HTML/CSS (Django templates)
Troubleshooting
Model migration errors?
Delete the db.sqlite3 file and migrations folders (except __init__.py), then run migrations again.
rm db.sqlite3
find . -path "*/migrations/*.py" -not -name "__init__.py" -delete
python manage.py makemigrations
python manage.py migrate
Server not starting?
Make sure you have activated your virtual environment.
Future Improvements
REST API (with Django REST Framework)
User registration for customers (non-admin)
Export reports as PDF or Excel
Filtering by product or status
Frontend redesign with Bootstrap or React
Created by MICHAL WILMAN – built for hands-on learning, prototyping, and real-world use in small businesses.