An AI-augmented e-commerce CRM built for modern operations.
EcomCRM combines customer management, product catalog control, order tracking, analytics, revenue intelligence, Cloudinary media handling, and a Groq-powered assistant in one polished Django application.
EcomCRM is not a basic CRUD demo. It is a full-stack commerce operations product that was upgraded to feel production-ready across both engineering and product layers:
- Professional dashboard and UI refresh across the template layer
- Real revenue calculations powered by database records
- Groq-powered "ASK to AI" assistant grounded on app features and live CRM context
- Cloudinary-backed customer and product media storage
- Automatic media sync during Render builds for existing records
- Safe media fallback for older assets if a Cloudinary file is missing
- Render-ready deployment config with environment-based settings
- Analytics, tags, CSV import, maps, and operational workflows preserved
For recruiters, this project demonstrates product thinking, backend ownership, frontend polish, AI integration, deployment awareness, and production debugging under real constraints.
| Module | What it does | Why it matters |
|---|---|---|
| Dashboard | Shows customer count, order count, delivery states, recent activity, and charts | Gives operators an instant business overview |
| Customer Directory | Manages customer profiles, contact data, map coordinates, and customer order history | Keeps relationship context in one place |
| Product Catalog | Handles product creation, updates, tags, pricing, descriptions, and media | Makes inventory easier to maintain |
| Order Management | Tracks orders across Pending, Out for delivery, and Delivered | Supports fulfillment visibility |
| Analytics | Visualizes status breakdowns and order trends using real data | Helps teams spot patterns quickly |
| Revenue Intelligence | Calculates per-day revenue, best revenue day, pipeline value, and annual projection | Turns order activity into financial insight |
| ASK to AI | Answers questions about the website using feature extraction, retrieval, and grounded generation | Adds real AI product value, not just a chatbot shell |
| About and Contact Pages | Presents the platform with a more productized feel | Improves polish and presentation quality |
The ASK to AI page is connected to Groq and designed as a grounded assistant, not a generic chat box.
It uses:
- query feature extraction
- retrieval over platform capabilities and live CRM signals
- grounded answer generation
- conversation history stored in session
The assistant can explain:
- how revenue is calculated
- where to manage customers, products, and orders
- what pages exist in the system
- live operational context such as customers, products, order states, and revenue snapshots
The revenue page is calculated from real order and product records:
- delivered orders drive realized revenue
- pending and out-for-delivery orders contribute to pipeline value
- daily revenue is grouped by order date
- annual projection is derived from year-to-date performance
Media handling was upgraded to support long-term hosted storage:
- customer and product images upload to Cloudinary
- existing local media is synced during deployment
- malformed Cloudinary env values are sanitized safely
- older image records can still render through a local fallback route if needed
The UI was modernized without breaking backend behavior:
- redesigned dashboard
- upgraded customer, product, order, analytics, revenue, login, about, and contact pages
- improved footer and navbar
- consistent cards, spacing, typography, and mobile responsiveness
flowchart LR
A[User] --> B[Django Views and Templates]
B --> C[CRM Workflows]
C --> D[(SQLite or Postgres via DATABASE_URL)]
C --> E[Cloudinary Media Storage]
C --> F[Groq Ask to AI]
subgraph CRM Workflows
G[Customers]
H[Products]
I[Orders]
J[Analytics]
K[Revenue]
L[Tag Import]
end
F --> M[Feature Extraction]
M --> N[Context Retrieval]
N --> O[Grounded Response]
- Django 6
- Django ORM
- django-filter
- WhiteNoise
- gunicorn
- dj-database-url
- Django Templates
- HTML
- CSS
- Bootstrap 5
- Bootstrap Icons
- JavaScript
- Chart.js
- Leaflet
- SQLite for local development
- Postgres-compatible production setup through
DATABASE_URL - Cloudinary for hosted media storage
- Groq API
- Structured feature extraction and grounded generation
- Render
render.yamlProcfilebuild.sh
git clone https://github.com/rudra00434/EcomCRM.git
cd EcomCRMpython -m venv .venvWindows:
.venv\Scripts\activatemacOS / Linux:
source .venv/bin/activatepip install -r requirements.txtCopy the example file and update the values:
Windows:
copy .env.example .envmacOS / Linux:
cp .env.example .envpython manage.py migratepython manage.py runserverThe app will be available at:
http://127.0.0.1:8000
| Variable | Required | Purpose |
|---|---|---|
DJANGO_SECRET_KEY |
Yes | Django secret key |
DJANGO_DEBUG |
Yes | Local debug toggle |
DJANGO_ALLOWED_HOSTS |
Yes | Allowed hosts list |
DJANGO_CSRF_TRUSTED_ORIGINS |
Production | Trusted CSRF origins |
DATABASE_URL |
Optional | External production database |
CLOUDINARY_URL |
Optional | Cloudinary media storage configuration |
CLOUDINARY_STORAGE_PREFIX |
Optional | Folder prefix in Cloudinary |
GROQ_API_KEY |
Optional | Enables the live Ask to AI assistant |
GROQ_EXTRACT_MODEL |
Optional | Model used for feature extraction |
GROQ_CHAT_MODEL |
Optional | Model used for grounded responses |
Cloudinary value format:
CLOUDINARY_URL=cloudinary://API_KEY:API_SECRET@CLOUD_NAMEImportant for Render:
- paste only the value
- do not include angle brackets
- do not wrap the value in extra quotes
- make sure it starts with
cloudinary://
This repo is already prepared for Render deployment.
Included deployment files:
Render build flow:
pip install -r requirements.txt
python manage.py collectstatic --noinput
python manage.py migrate
python manage.py sync_media_to_cloudinaryRecommended production setup:
- Connect the GitHub repository to Render.
- Use Python
3.11.9. - Add
CLOUDINARY_URL. - Add
GROQ_API_KEY. - Add
DATABASE_URLif you want persistent production data beyond SQLite. - Deploy from the
mainbranch.
Useful local checks:
python manage.py check
python manage.py test accountCurrent automated coverage includes:
- revenue calculations
- Ask to AI endpoints
- session reset behavior
- production media fallback behavior
EcomCRM/
|-- account/
| |-- management/
| |-- templatetags/
| |-- ai_assistant.py
| |-- forms.py
| |-- models.py
| |-- tests.py
| |-- urls.py
| `-- views.py
|-- db/
| |-- settings.py
| |-- urls.py
| `-- wsgi.py
|-- static/
|-- template/
| |-- account/
| |-- main.html
| `-- navbar.html
|-- build.sh
|-- Procfile
|-- render.yaml
`-- requirements.txt
This repository demonstrates the ability to:
- ship an end-to-end Django product, not just isolated pages
- design a cleaner, more professional user experience without removing business features
- integrate third-party services like Groq and Cloudinary
- debug production deployment issues and harden the app for Render
- build features around real business metrics rather than placeholder data
- preserve operational workflows while upgrading architecture and presentation
EcomCRM is a strong portfolio project for full-stack, backend, product engineering, and AI-integrated web roles because it shows more than coding ability. It shows product judgment, system integration, deployability, UI execution, and resilience under real-world edge cases.