A modern, full-stack Django-powered digital marketplace where creators can sell their digital products (eBooks, icons, templates, etc.), with secure payments via Stripe and fast, reliable media delivery using Cloudinary.
- Upload digital products with descriptions, pricing, categories, thumbnails, and tags.
- Edit and manage listings.
- View sales analytics with total revenue and product performance.
- Integrated Stripe Checkout for seamless and secure transactions.
- Auto-handle payment success/failure with redirects.
- Track order history, payment intent, and fulfillment status.
- Upload files like
.pdf,.png,.zip, etc. - Auto-generate and display file size/type.
- Serve downloads only after successful payment.
- Visualize your revenue growth over time using Chart.js.
- Filter and sort sales data.
- Integrated Cloudinary for scalable file/image hosting.
- CDN-delivered thumbnails and product files.
- Beautifully styled using Tailwind CSS.
- Optimized for phones, tablets, and desktops.
- Custom login/signup views.
- Access control using Django decorators.
- Friendly redirects for unauthorized users.
| Stack | Tech |
|---|---|
| Backend | Django 5.2.3 |
| Frontend | HTML, Tailwind CSS |
| Payments | Stripe |
| Database | PostgreSQL (via Neon) |
| Media Storage | Cloudinary |
| Deployment | Render |
digital_marketplace/
├── mysite/ # Main project
│ ├── settings.py # Configurations (env, DB, Cloudinary, etc.)
│ ├── urls.py # URL Routing
│ └── wsgi.py # For deployment
├── myapp/ # App: product + order + auth
│ ├── models.py # Product, OrderDetail
│ ├── views.py # All business logic
│ ├── templates/ # HTML templates
│ └── static/ # Tailwind CSS & JS
├── requirements.txt # Dependencies
├── .env # Environment variables
└── manage.py
git clone https://github.com/vedantmpatil/Quantoxbay.git
cd Quantoxbay
python -m venv env
source env/bin/activate # or env\Scripts\activate on Windows
pip install -r requirements.txtCreate a .env file:
SECRET_KEY=your_django_secret
STRIPE_SECRET_KEY=sk_test_...
STRIPE_PUBLISHABLE_KEY=pk_test_...
CLOUDINARY_CLOUD_NAME=dx1214141wgin8hu
CLOUDINARY_API_KEY=99149233417952624717
CLOUDINARY_API_SECRET=M8QX43XpU241El332LUE0z-jZtcZ5Kdt51oC4k- Create a Neon DB → Copy the connection string.
- Update
DATABASESinsettings.py. - Run migrations:
python manage.py makemigrations
python manage.py migratepython manage.py runserverVisit: http://127.0.0.1:8000/
title,description,price,discount_pricefile,thumbnail,file_size,file_typetags,category,seller
customer_email,product,amountstripe_payment_intent,has_paid,created_on
from cloudinary_storage.storage import MediaCloudinaryStorage
file = models.FileField(upload_to='uploads/products/', storage=MediaCloudinaryStorage())
thumbnail = models.ImageField(upload_to='uploads/thumbnails/', storage=MediaCloudinaryStorage())Files are served via:
https://res.cloudinary.com/<cloud_name>/image/upload/...
- Add products as an authenticated seller
- Test payment flow (Stripe test card)
- Download product only after payment success
- Check sales analytics
- Connect GitHub repo
- Add Build Command:
pip install -r requirements.txt && python manage.py collectstatic --noinput - Add Start Command:
gunicorn mysite.wsgi - Set environment variables in Render Dashboard
- Use PostgreSQL (like Neon) instead of SQLite
- Use Cloudinary for file persistence across rebuilds
Made with ❤️ by Vedant M. Patil — Always building cool, real-world stuff.
Star it, fork it, or use it as a base for your next startup idea!
# Clone and start customizing
https://github.com/vedantmpatil/Quantoxbay