Full-Stack Django Project · Freelancer Simulation
This project is a full-stack Django e-commerce application built as a simulated freelance engagement. It focuses on the core responsibilities expected in junior to mid-level Django roles: building clean backend logic, integrating third-party services, working with production databases, and deploying a real application.
The project upgrades a ceramic artist’s static portfolio into a functional online shop with product management, payments, and cloud-based storage.
A live version is deployed on Render using PostgreSQL for data persistence and AWS S3 for media storage.
- Django models for products, collections, and contact submissions
- Server-rendered templates using Django Templates
- Stripe Checkout integration (test mode)
- PostgreSQL database for production
- AWS S3 for product image storage
- Responsive layouts with Tailwind CSS
- Accessible, semantic HTML
- Backend: Django (Python)
- Frontend: Django Templates, Tailwind CSS
- Payments: Stripe Checkout
- Database: PostgreSQL (production), SQLite (local)
- Media Storage: AWS S3
- Hosting: Render
- Tooling: Git, GitHub, uv
The application follows a modular Django structure with clear separation between models, views, templates, and settings. PostgreSQL is used for structured data, while AWS S3 handles image uploads and storage. Stripe manages payments externally, with checkout sessions created and tracked within the application.
This setup reflects a realistic small-scale production environment commonly encountered in junior and mid-level roles.
- Resolve authentication edge cases and improve user account flows
- Optimize layouts and performance for mobile-first usage
- Expand admin-side inventory and order management tools
This section is intended for developers reviewing or running the project locally.
- Python 3.11+
uv(Astral)- Stripe account with test API keys
git clone https://github.com/acostajs/vanier-ceramic-shop project-name
cd project-name
uv init
uv venv
source .venv/bin/activate
uv syncDJANGO_SECRET_KEY=your-secret-key
DJANGO_DEBUG=True
STRIPE_PUBLIC_KEY=pk_test_...
STRIPE_SECRET_KEY=sk_test_...
STRIPE_WEBHOOK_SECRET=whsec_...uv run manage.py migrate
uv run manage.py createsuperuser
uv run manage.py runserver