Drawer is a modern, full-stack SaaS platform designed specifically for content creators. Built for speed, security, and aesthetics, it provides a seamless experience for creators to securely upload, manage, and store their high-quality photos and videos directly from their personalized dashboard.
This repository serves as a fully functional proof-of-concept for a Content Management SaaS platform.
- Dynamic Content Gallery: A premium, responsive grid dashboard capable of hosting native HTML5 video previews and high-res image galleries.
- Smart Upload Parsing: Automatically tags and categorizes uploaded media files based on content type.
- Modern Glassmorphic UI: Beautifully styled utilizing Tailwind CSS with deep, immersive background gradients, drop-blurs, and interactive micro-animations.
- Robust Authentication: Powered by Django Allauth for secure email/password and social login flows.
- Tiered Subscriptions: Pre-configured dynamic pricing models ready to be hooked into Stripe (Pro, Starter, Annual plans).
- Cloud-Ready Infrastructure: Designed to seamlessly transition from local SQLite/storage to Neon Postgres DB and AWS S3 storage for production deployment via Docker/Railway.
- Backend: Django 5 & Python 3.13
- Frontend: HTML5, Tailwind CSS
- Authentication: Django Allauth
- Payments: Stripe integration architecture for subscription flows
- Database: SQLite for local development (production-ready for Neon Postgres)
- Deployment: Configured for Docker and Railway
- Git
- Python 3.11+
pip- Node.js &
npm(optional, for frontend UI building)
git clone https://github.com/SAHIL15KP/content-storage.git
cd content-storagemacOS/Linux:
python3 -m venv venv
source venv/bin/activateWindows PowerShell:
py -m venv venv
.\venv\Scripts\Activate.ps1python -m pip install --upgrade pip
python -m pip install -r requirements.txt
python -m pip install -r requirements.dev.txt(The requirements.dev.txt installs rav, a lightweight task runner used in this project.)
Required only if you plan to rebuild or watch Tailwind assets.
npm installmacOS/Linux:
cp .env.sample .envWindows PowerShell:
Copy-Item .env.sample .envGenerate a Django Secret Key:
Run this command and paste the output as DJANGO_SECRET_KEY in your .env file:
python -c "from django.core.management.utils import get_random_secret_key; print(get_random_secret_key())"Make sure at minimum you have set:
DJANGO_DEBUG=1DJANGO_SECRET_KEY="<your-generated-key>"
(Leave DATABASE_URL empty to use local SQLite. Only add Stripe/Email variables for testing those flows).
Vendor assets need to be pulled down once for the UI:
cd src
python manage.py vendor_pullpython manage.py migratepython manage.py createsuperuserpython manage.py runserverOpen the app at http://127.0.0.1:8000/.
Run these from the project root (not the src directory):
Watch for Tailwind CSS changes:
npm run watchBuild the production CSS bundle:
npm run buildIf you enjoy using a task runner, use these handy shortcuts:
rav run installrav run install_devrav run migraterav run devrav run testrav run vendors_pullrav run collectstatic
(Note for Windows users: By default, rav.yaml relies on venv/bin/... paths. Using the direct Python manage.py commands is recommended unless paths are updated.)
A Dockerfile is included and ready for deployment. Simply provide a valid .env file containing everything needed before building and spinning up the container.