Case Study · 2025
E-Commerce Web Application
MINIME — a minimalist, full-stack sustainable footwear & apparel store built with Django REST Framework and vanilla JS. Features product catalog with 20+ items, shopping cart, wishlist, JWT + Google/Facebook OAuth, Stripe payments, multi-language support (EN/FR/AR with RTL), and an admin analytics dashboard.
Django 6.0.3Django REST FrameworkVanilla JS ES ModulesViteMongoDB (django-mongodb-backend)Stripe APIJWTOAuth2 (Google/Facebook via django-allauth)PWAChart.js

20+Products in catalogue
3Languages (EN/FR/AR + RTL)
PWAInstallable, offline-ready
76Lighthouse Performance (mobile, Oct 2026)
01
The challenge
- Problem Create a simple, stylish, and minimal e-commerce site as a first major project to learn core web fundamentals and showcase a personal/minimal aesthetic.
- Constraints Small team of 3, but handled most work solo (cahier de charge, report, conception, diagrams, presentation); time/budget constraints; scope expanded from frontend-only to full-stack.
- Hardest blocker Switching backend from Node.js to Django and initial failure to implement Google sign-in.
- Root cause Steep learning curve managing stack change and authentication complexity with multiple failed attempts.
- Fix Persistent iteration and learning the correct implementation approach.
02
The approach
- Architecture Full-stack DRF + vanilla JS ES Modules (Vite); MongoDB persistence with MongoDB-compatible migrations.
- Auth JWT authentication + social auth (Google/Facebook via django-allauth).
- Payments Stripe with webhook handling.
- UX Minimalist, clutter-free design; EN/FR/AR + RTL; cart/wishlist in LocalStorage with event delegation.
- Features PWA (manifest, service worker), admin analytics dashboard with Chart.js.
- Process Iterative development, added features over time, deployed successfully.
- Learnings Self-reliance while open to feedback, persistence/adaptability when switching stacks, iterative learning yields best results.
Impact
Completed, presented and deployed — earned the best grade in the class.
03
Screenshots

04
What I'd do differently
- I switched the backend from Node.js to Django mid-project. Next time I'd pin the stack against the auth and payment requirements before writing any UI.
- Google sign-in only worked after several failed attempts — I learned to understand the flow end-to-end instead of patching symptoms.