CloudVault is a production-oriented, open-source cloud file storage and collaboration platform designed to help individuals, teams, and organizations securely store, organize, access, share, version, and manage digital files from a centralized platform.
Modern users and organizations manage digital files across laptops, mobile devices, email attachments, messaging platforms, USB drives, local servers, and multiple cloud services.
This creates several real-world problems:
- Scattered files
- Difficult file discovery
- Unauthorized access
- Accidental deletion
- Lack of file version control
- Difficult collaboration
- Uncontrolled file sharing
- Limited visibility into file activity
- Storage management problems
- Slow processing of large files
CloudVault aims to solve these problems by providing a centralized, secure, scalable, and cloud-ready file management platform.
The project is designed not merely as a CRUD application, but as a practical backend and cloud engineering project demonstrating:
- Backend development
- REST API design
- Database architecture
- Cloud object storage
- Authentication and authorization
- Asynchronous processing
- Caching
- File security
- Organization management
- DevOps
- Containerization
- CI/CD
- Production deployment
- System design
Individuals and organizations need a reliable way to securely store, organize, share, and manage digital files.
Traditional approaches often distribute files across:
Laptop
β
βββ Documents
βββ Projects
βββ Photos
Mobile
β
βββ Images
βββ PDFs
Email
β
βββ Attachments
USB Drives
β
βββ Backup Files
Multiple Cloud Services
This makes it difficult to maintain:
- Centralized storage
- Access control
- File ownership
- File history
- Collaboration
- Security
- Auditability
- Backup and recovery
CloudVault provides a centralized solution.
The vision of CloudVault is to build a secure and scalable platform where users can:
STORE
β
ORGANIZE
β
SEARCH
β
SHARE
β
COLLABORATE
β
PROTECT
β
MONITOR
β
RECOVER
CloudVault is designed for multiple types of users.
Students can manage:
- Notes
- Assignments
- Projects
- Certificates
- Resume
- Academic documents
Example:
My Drive/
βββ College/
β βββ Notes/
β βββ Assignments/
β βββ Marksheets/
β
βββ Projects/
β βββ CloudVault/
β βββ ML Project/
β
βββ Certificates/
βββ Resume/
Professionals can manage:
- Resumes
- Certificates
- Work documents
- Reports
- Contracts
- Project files
Teams can collaborate through:
- Shared folders
- Shared files
- Team permissions
- Organization workspaces
- File versioning
Organizations can create:
ABC Technologies
β
βββ Engineering
βββ HR
βββ Finance
βββ Sales
βββ Management
Each department can have controlled access.
- User registration
- Login/logout
- JWT authentication
- Access and refresh tokens
- Password hashing
- Password reset
- Email verification
- Change password
- Account management
- Active session management
- Login history
- Optional OAuth authentication
- Optional two-factor authentication
Users can:
- Create profiles
- Update profiles
- Upload avatars
- Manage account settings
- View storage usage
- Manage active sessions
- Configure security preferences
CloudVault provides complete file lifecycle management.
- Single file upload
- Multiple file upload
- Large file support
- File validation
- MIME type validation
- File size validation
- Duplicate detection
- Upload
- Download
- Preview
- Rename
- Move
- Copy
- Delete
- Restore
- Favorite
- Metadata management
Users can:
- Create folders
- Rename folders
- Delete folders
- Move folders
- Create nested folders
- Share folders
- Manage folder permissions
Example:
My Drive/
β
βββ Projects/
β βββ CloudVault/
β β βββ Backend/
β β βββ Frontend/
β β βββ Documentation/
β β βββ Deployment/
β β
β βββ ML Project/
β
βββ Certificates/
βββ Resume/
βββ Personal/
CloudVault uses object storage for actual file storage.
The recommended architecture is:
PostgreSQL
β
βββ File Metadata
AWS S3
β
βββ Actual File Objects
The database stores information such as:
File ID
File Name
File Size
Owner
MIME Type
Checksum
Storage Key
Created At
Updated At
AWS S3 stores the actual file.
This avoids storing large binary files directly inside PostgreSQL.
CloudVault supports controlled file sharing.
Users can share files with:
- Individual users
- Teams
- Organizations
- Public links
Share links can support:
- View-only permission
- Download permission
- Edit permission
- Password protection
- Expiration date
- Download limits
- Revocation
Example:
Share File
β
βββ User
βββ Team
βββ Public Link
β
βββ Password
βββ Expiration
βββ Download Limit
CloudVault uses RBAC to control access.
Example roles:
Organization Owner
β
βββ Administrator
βββ Manager
βββ Editor
βββ Viewer
Possible permissions:
view
download
upload
edit
rename
move
delete
share
manage_members
manage_organization
Example:
| Role | View | Upload | Edit | Delete | Share | Admin |
|---|---|---|---|---|---|---|
| Owner | β | β | β | β | β | β |
| Admin | β | β | β | β | β | β |
| Manager | β | β | β | Limited | β | β |
| Editor | β | β | β | Limited | Limited | β |
| Viewer | β | β | β | β | β | β |
CloudVault supports multi-user organizations.
An organization can contain:
Organization
β
βββ Members
βββ Teams
βββ Departments
βββ Shared Drives
βββ Storage Quota
βββ Roles
βββ Permissions
βββ Audit Logs
Example:
ABC Technologies
β
βββ Engineering
β βββ Backend Team
β βββ Frontend Team
β
βββ HR
β
βββ Finance
β
βββ Management
This allows CloudVault to support both personal and business use cases.
CloudVault can maintain multiple versions of a file.
Example:
Project_Report.pdf
Version 1
Version 2
Version 3
Version 4 β Current
Users can:
- View versions
- Download versions
- Restore versions
- Delete old versions
If a user accidentally uploads an incorrect version, an older version can be restored.
Deleted files are moved to Trash instead of being immediately destroyed.
Delete File
β
Trash
β
Retention Period
β
Restore / Permanent Delete
Features:
- Restore files
- Permanently delete files
- Empty trash
- Automatic cleanup
CloudVault provides file discovery through:
- Filename search
- File type
- Folder
- Owner
- Size
- Date
- Tags
- Metadata
Future versions can support semantic search.
Example:
"Find my AWS deployment documents"
Users can monitor:
Storage Used
Storage Available
Total Files
Total Folders
Uploads
Downloads
Shared Files
Example:
Storage
ββββββββββββββββββββ
Used: 78 GB
Available: 22 GB
Organization administrators can also monitor storage consumption.
CloudVault records important security and file activities.
Example actions:
LOGIN
LOGOUT
UPLOAD
DOWNLOAD
VIEW
SHARE
RENAME
MOVE
DELETE
RESTORE
PASSWORD_CHANGE
PERMISSION_CHANGE
Example audit record:
User: Raj
Action: DOWNLOAD
File: project.pdf
Time: 10:42 AM
IP: ********
Device: Chrome / Windows
Audit logs help organizations understand:
Who performed which action, on which resource, and when?
CloudVault can provide:
- In-app notifications
- Email notifications
Examples:
A user shared a file with you.
You have been invited to an organization.
Your password was changed.
Your shared link is about to expire.
Suspicious activity was detected.
CloudVault uses asynchronous processing for tasks that should not block normal HTTP requests.
Examples:
- Thumbnail generation
- Metadata extraction
- Email notifications
- File scanning
- Cleanup jobs
- Report generation
- Large file processing
Architecture:
Django
β
βΌ
Redis
β
βΌ
Celery Worker
β
βββ Thumbnail
βββ Email
βββ File Scan
βββ Metadata
βββ Cleanup
Redis is used for high-speed temporary data and background processing infrastructure.
Possible uses:
- Celery broker
- Caching
- Rate limiting
- Session storage
- Temporary tokens
- Frequently accessed metadata
Celery is responsible for background task execution.
Example:
generate_thumbnail.delay(file_id)The task is placed into a queue.
Django
β
βΌ
Redis
β
βΌ
Celery Worker
β
βΌ
Generate Thumbnail
This prevents slow operations from blocking user requests.
Celery Beat can schedule recurring jobs.
Example:
Every day at 02:00 AM
β
Celery Beat
β
Delete expired files
β
Redis
β
Celery Worker
Possible scheduled jobs:
- Delete expired trash
- Remove expired share links
- Generate daily reports
- Clean temporary files
- Recalculate storage statistics
Security is a core part of CloudVault.
Security mechanisms include:
- Secure password hashing
- JWT authentication
- Role-based access control
- Object-level permissions
- File validation
- MIME type validation
- File size restrictions
- Rate limiting
- Secure signed URLs
- HTTPS
- CSRF protection
- CORS configuration
- Security headers
- Audit logging
- Secure environment variables
- Malware scanning
- Storage access control
High-level architecture:
INTERNET
β
βΌ
Load Balancer
β
βΌ
Nginx
β
βΌ
Gunicorn
β
βΌ
Django
β
βββββββββββββββββββΌββββββββββββββββββ
β β β
βΌ βΌ βΌ
PostgreSQL Redis S3
β β β
β βΌ β
β Celery Workers β
β β β
β ββββββββββΌβββββββββ β
β βΌ βΌ βΌ β
β Email Thumbnail Scan β
β β
βββββββββββββββββββββββββββββββββββββ
The main CloudVault workflow is:
User
β
βΌ
Select File
β
βΌ
Django API
β
βΌ
Authentication
β
βΌ
Permission Check
β
βΌ
File Validation
β
βΌ
Upload to S3
β
βΌ
Save Metadata in PostgreSQL
β
βΌ
Create Audit Log
β
βΌ
Queue Background Tasks
β
βΌ
Redis
β
βΌ
Celery Worker
β
βββ Generate Thumbnail
βββ Extract Metadata
βββ Scan File
βββ Process Preview
β
βΌ
Update Database
β
βΌ
Notify User
User
β
βΌ
Request Download
β
βΌ
Django API
β
βΌ
Authentication
β
βΌ
Permission Check
β
βΌ
Generate Secure/Signed URL
β
βΌ
AWS S3
β
βΌ
File Download
β
βΌ
Audit Log
Owner
β
βΌ
Select File
β
βΌ
Share
β
βΌ
Set Permission
β
βββ View
βββ Download
βββ Edit
β
βΌ
Optional Security
β
βββ Password
βββ Expiration
βββ Download Limit
β
βΌ
Generate Share Link
β
βΌ
Recipient
- Python
- Django
- Django REST Framework
- PostgreSQL
- SQLite for local development/testing when appropriate
- AWS S3
- Redis
- Celery
- Celery Beat
- Nginx
- Gunicorn
The frontend can be implemented using:
- React
- TypeScript
- Vite
- Tailwind CSS
- Docker
- Docker Compose
- GitHub Actions
- AWS
- OpenAPI
- Swagger
- Markdown
cloudvault/
β
βββ backend/
β β
β βββ config/
β β βββ settings/
β β β βββ base.py
β β β βββ development.py
β β β βββ production.py
β β β
β β βββ urls.py
β β βββ asgi.py
β β βββ wsgi.py
β β βββ celery.py
β β
β βββ apps/
β β βββ accounts/
β β βββ organizations/
β β βββ teams/
β β βββ files/
β β βββ folders/
β β βββ sharing/
β β βββ permissions/
β β βββ versions/
β β βββ trash/
β β βββ notifications/
β β βββ activities/
β β βββ search/
β β βββ analytics/
β β
β βββ common/
β β βββ permissions/
β β βββ exceptions/
β β βββ pagination/
β β βββ storage/
β β βββ utils/
β β
β βββ tests/
β β
β βββ manage.py
β β
β βββ requirements/
β βββ base.txt
β βββ development.txt
β βββ production.txt
β
βββ frontend/
β
βββ infrastructure/
β βββ docker/
β βββ nginx/
β βββ aws/
β βββ scripts/
β
βββ docs/
β βββ architecture/
β βββ api/
β βββ database/
β βββ security/
β βββ deployment/
β
βββ .github/
β βββ workflows/
β βββ ci.yml
β βββ cd.yml
β
βββ docker-compose.yml
βββ Dockerfile
βββ .env.example
βββ .gitignore
βββ LICENSE
βββ CONTRIBUTING.md
βββ SECURITY.md
βββ CODE_OF_CONDUCT.md
βββ CHANGELOG.md
βββ README.md
The main entities include:
User
β
βββ Organization Membership
βββ Files
βββ Folders
βββ Shares
βββ Notifications
βββ Activity Logs
Organization
β
βββ Members
βββ Teams
βββ Roles
βββ Permissions
βββ Shared Files
File
β
βββ Versions
βββ Shares
βββ Metadata
βββ Activity Logs
βββ Storage Object
Conceptual relationship:
User
β
βββββββββββββββββ
β β
βΌ βΌ
Organization File
β β
βΌ βββ Version
Team βββ Share
β βββ Metadata
βΌ βββ Activity
Membership
CloudVault follows RESTful API principles.
Example endpoints:
POST /api/v1/auth/register/
POST /api/v1/auth/login/
POST /api/v1/auth/refresh/
POST /api/v1/auth/logout/
POST /api/v1/auth/password/reset/
GET /api/v1/files/
POST /api/v1/files/
GET /api/v1/files/{id}/
PATCH /api/v1/files/{id}/
DELETE /api/v1/files/{id}/
GET /api/v1/files/{id}/download/
GET /api/v1/folders/
POST /api/v1/folders/
GET /api/v1/folders/{id}/
PATCH /api/v1/folders/{id}/
DELETE /api/v1/folders/{id}/
POST /api/v1/shares/
GET /api/v1/shares/
DELETE /api/v1/shares/{id}/
GET /api/v1/organizations/
POST /api/v1/organizations/
GET /api/v1/organizations/{id}/
PATCH /api/v1/organizations/{id}/
DELETE /api/v1/organizations/{id}/
API documentation will be provided using OpenAPI/Swagger.
CloudVault can run locally through Docker Compose.
Example services:
cloudvault-web
cloudvault-db
cloudvault-redis
cloudvault-worker
cloudvault-beat
cloudvault-nginx
Architecture:
Docker Compose
β
ββββββββββββ¬ββββββββΌβββββββββ¬ββββββββββββ
βΌ βΌ βΌ βΌ βΌ
Django PostgreSQL Redis Celery Nginx
Worker
β
Celery Beat
git clone https://github.com/<your-username>/cloudvault.git
cd cloudvaultpython -m venv .venv
.venv\Scripts\activatepython3 -m venv .venv
source .venv/bin/activatepip install -r backend/requirements/development.txtCopy:
.env.example
to:
.env
Configure:
SECRET_KEY=
DEBUG=
DATABASE_URL=
REDIS_URL=
AWS_ACCESS_KEY_ID=
AWS_SECRET_ACCESS_KEY=
AWS_STORAGE_BUCKET_NAME=
AWS_REGION=
python backend/manage.py migratepython backend/manage.py createsuperuserpython backend/manage.py runserverBuild containers:
docker compose buildStart services:
docker compose upRun in background:
docker compose up -dRun migrations:
docker compose exec web python manage.py migrateCreate superuser:
docker compose exec web python manage.py createsuperuserStop:
docker compose downCloudVault should maintain automated tests for:
- Authentication
- Authorization
- File uploads
- File downloads
- File permissions
- Folder operations
- Sharing
- Versioning
- Trash
- Organizations
- API endpoints
- Celery tasks
- Storage operations
Run tests:
pytestor:
python manage.py testGitHub Actions can automatically run:
Push
β
βΌ
GitHub Actions
β
βββ Lint
βββ Unit Tests
βββ Integration Tests
βββ Security Checks
βββ Docker Build
βββ Deployment
Production workflow:
Developer
β
βΌ
Feature Branch
β
βΌ
Pull Request
β
βΌ
Code Review
β
βΌ
Merge
β
βΌ
CI
β
βΌ
Build Docker Image
β
βΌ
Deploy
A production deployment can use:
AWS
β
ββββββββββββΌβββββββββββ
βΌ βΌ βΌ
EC2 S3 PostgreSQL
β
Nginx
β
Gunicorn
β
Django
β
Redis
β
Celery
Production infrastructure can later evolve to:
Route 53
β
CloudFront
β
Load Balancer
β
EC2 / ECS
β
Django
CloudVault should be designed so application components can scale independently.
Example:
Load Balancer
β
ββββββββββββββΌβββββββββββββ
βΌ βΌ βΌ
Django 1 Django 2 Django 3
β β β
ββββββββββββββΌβββββββββββββ
βΌ
Redis
β
ββββββββββββββΌβββββββββββββ
βΌ βΌ βΌ
Worker 1 Worker 2 Worker 3
AWS S3 provides scalable object storage while application servers remain responsible primarily for metadata and API operations.
Never commit secrets to Git.
Use:
.env
Example:
SECRET_KEY=your-secret-key
DEBUG=False
DATABASE_URL=postgresql://user:password@db:5432/cloudvault
REDIS_URL=redis://redis:6379/0
AWS_ACCESS_KEY_ID=your-access-key
AWS_SECRET_ACCESS_KEY=your-secret-key
AWS_STORAGE_BUCKET_NAME=cloudvault
AWS_REGION=ap-south-1
Only commit:
.env.example
Recommended branch structure:
main
β
βββ develop
β
βββ feature/authentication
βββ feature/file-upload
βββ feature/file-sharing
βββ feature/versioning
βββ feature/organizations
βββ feature/analytics
Development process:
Issue
β
Feature Branch
β
Implementation
β
Testing
β
Pull Request
β
Code Review
β
Merge
β
CI/CD
β
Release
CloudVault follows conventional commit-style messages.
Examples:
feat: add JWT authentication
feat: implement file upload API
feat: integrate AWS S3 storage
feat: add organization management
feat: implement secure file sharing
feat: add file versioning
fix: validate uploaded file MIME type
fix: resolve storage quota calculation
test: add file upload API tests
docs: add deployment documentation
chore: configure Docker environment
Avoid commits such as:
update
changes
final
done
CloudVault follows Semantic Versioning:
MAJOR.MINOR.PATCH
Examples:
v0.1.0
v0.2.0
v0.5.0
v1.0.0
v1.1.0
v2.0.0
Breaking changes.
v1.x.x β v2.x.x
New backward-compatible features.
v1.1.0 β v1.2.0
Bug fixes.
v1.2.0 β v1.2.1
- Django project setup
- PostgreSQL
- User model
- Authentication
- REST API
- Basic permissions
- File upload
- File download
- File rename
- File delete
- Folder management
- Trash
- File metadata
- AWS S3
- Signed URLs
- Storage quotas
- Large file support
- File checksums
- User sharing
- Team sharing
- Public links
- Password-protected links
- Expiring links
- Download limits
- Redis
- Celery
- Celery Beat
- Thumbnail generation
- Email processing
- Cleanup jobs
- Organizations
- Teams
- Invitations
- RBAC
- Organization storage
- Shared drives
- File versioning
- Audit logs
- Notifications
- Advanced search
- Analytics
- 2FA
- Security monitoring
- Docker
- Nginx
- Gunicorn
- AWS deployment
- CI/CD
- Monitoring
- Logging
- OCR
- Semantic search
- AI document assistant
- Duplicate detection
- Intelligent document classification
- Anomaly detection
Future versions may include:
Instead of only searching filenames:
"Find my AWS deployment documents"
CloudVault can search document content and metadata.
Automatically categorize:
Resume
Invoice
Certificate
Contract
Report
Assignment
Extract text from scanned documents.
Users could ask:
"Summarize this document."
"Find the payment deadline."
"What are the important points?"
These features are planned for future versions and are not required for the initial MVP.
CloudVault is not intended to be just:
Login
Upload
Download
Delete
Instead, the platform combines:
Cloud Storage
+
Secure Sharing
+
RBAC
+
Organizations
+
Teams
+
Version Control
+
Audit Logging
+
Background Processing
+
Analytics
+
Developer API
+
DevOps
This makes CloudVault a practical project for learning production-oriented backend and cloud engineering.
Store:
- Notes
- Projects
- Certificates
- Academic documents
Store:
- Resumes
- Contracts
- Reports
- Work documents
Manage:
- Project files
- Documentation
- Shared resources
Manage:
- HR documents
- Finance documents
- Business reports
- Contracts
Manage:
- Departments
- Users
- Permissions
- Shared drives
- Audit logs
Building CloudVault provides practical experience with:
- OOP
- Modules
- Exception handling
- Async/background processing concepts
- Models
- Views
- URLs
- Middleware
- Authentication
- Permissions
- Django ORM
- REST APIs
- PostgreSQL
- Relationships
- Indexing
- Transactions
- Query optimization
- AWS S3
- EC2
- IAM
- Networking concepts
- Cloud architecture
- REST API
- Authentication
- Authorization
- Caching
- File processing
- Distributed task processing
- Docker
- Nginx
- Gunicorn
- CI/CD
- Linux
- Deployment
- Scalability
- Reliability
- Security
- Fault tolerance
- Background processing
CloudVault is intended to be open source and welcomes contributions.
Fork
β
Clone
β
Create Branch
β
Implement Feature
β
Write Tests
β
Commit
β
Push
β
Pull Request
β
Code Review
Example:
git clone https://github.com/<your-username>/cloudvault.git
cd cloudvault
git checkout -b feature/file-sharingAfter development:
git add .
git commit -m "feat: implement secure file sharing"
git push origin feature/file-sharingThen open a Pull Request.
CloudVault is built using widely adopted open-source technologies.
Core technologies include:
- Python
- Django
- Django REST Framework
- PostgreSQL
- Redis
- Celery
- React
- Docker
- Nginx
- Gunicorn
Third-party dependencies should be used according to their respective licenses.
This project is licensed under the MIT License.
See:
LICENSE
for more information.
If you discover a security vulnerability, please do not publicly disclose it through a GitHub issue.
Instead, follow the instructions in:
SECURITY.md
Security-related contributions are highly appreciated.
Detailed documentation will be maintained under:
docs/
βββ architecture/
βββ api/
βββ database/
βββ security/
βββ deployment/
Planned documentation:
- System Architecture
- Database Design
- API Documentation
- Authentication Flow
- Authorization Model
- File Upload Flow
- AWS S3 Architecture
- Redis Architecture
- Celery Architecture
- Docker Setup
- Production Deployment
- Security Guide
- Contribution Guide
Status: π§ Active Development
Version: 0.1.0
CloudVault is being developed incrementally, starting with the core file-management system and gradually expanding toward a production-oriented cloud platform.
CloudVault follows these principles:
Security First
β
Clean Architecture
β
Testable Code
β
API-First Design
β
Scalable Infrastructure
β
Automation
β
Documentation
The goal is not simply to build more features, but to understand why each component exists and how the complete system works together.
The long-term goal is to evolve CloudVault into a complete cloud document and collaboration platform.
CLOUDVAULT
β
ββββββββββββββββββββββΌβββββββββββββββββββββ
βΌ βΌ βΌ
Personal Storage Team Storage Organization
β β β
βΌ βΌ βΌ
Files Collaboration RBAC
β β β
ββββββββββββββββββββββΌβββββββββββββββββββββ
βΌ
Secure Sharing
β
βΌ
Versioning
β
βΌ
Audit Logging
β
βΌ
Background Processing
β
βΌ
Cloud Storage
β
βΌ
Scalable Backend
β
βΌ
Intelligent Search
CloudVault is designed as more than a traditional Django CRUD project.
It demonstrates how a modern application can combine:
Python + Django + REST APIs + PostgreSQL + Redis + Celery + AWS S3 + Docker + Nginx + Gunicorn + CI/CD + Security + System Design
into one cohesive production-oriented platform.
Raj Shekhar
Computer Science Engineering Student Backend & Cloud Engineering Enthusiast
Interested in:
- Python
- Django
- Backend Engineering
- Cloud Computing
- DevOps
- System Design
- Distributed Systems
If you find CloudVault useful:
- β Star the repository
- π΄ Fork the project
- π Report issues
- π‘ Suggest features
- π§ Submit pull requests
- π Improve documentation
Store securely. Share confidently. Collaborate efficiently.
Built with Python, Django, PostgreSQL, Redis, Celery, Docker, and AWS.
Quick start (local)
- Create and activate a virtualenv:
python -m venv .venv
.\.venv\Scripts\Activate.ps1- Install dependencies:
python -m pip install -r requirements.txt- Run migrations:
python manage.py makemigrations
python manage.py migrate- Start ASGI server (recommended) to enable WebSockets:
.\run_asgi.ps1 # uses daphne by default
# or: .\run_asgi.ps1 -Server uvicorn- Open http://127.0.0.1:8000/ and log in.
Pushing to GitHub (recommended automated commits)
- Use the provided script to create up to 100 professional commits and push them.
# Dry run (preview planned commits)
.\scripts\create_commits.ps1 -RemoteUrl "git@github.com:USERNAME/REPO_NAME.git" -MaxCommits 100 -DryRun
# Execute and push
.\scripts\create_commits.ps1 -RemoteUrl "git@github.com:USERNAME/REPO_NAME.git" -MaxCommits 100 -PushAfterCommitCI
- A basic GitHub Actions workflow is included in
.github/workflows/ci.ymlthat installs requirements, runs migrations and runs tests.
Notes
- Ensure
.envor other secret files are never committed..gitignoreincludes.env. - For production, configure
SECRET_KEY,DEBUG=False,ALLOWED_HOSTS, and a production-readyDATABASES(Postgres) andREDIS_URLfor Channels.
License
- Internal/Proprietary (change as needed)