A sleek, minimalistic web application built with Django for secure file uploads, sharing, and previews. Designed with a premium navy-gray-white UI, this app lets users manage files, share them with others via a dropdown, and preview images and PDFs in modals—all containerized with Docker for easy setup and deployment.
- User Authentication: Sign up, log in, and log out securely.
- File Management: Upload, download, and delete files with ease.
- File Sharing: Share files with other users via a dropdown selection.
- File Previews: View images (PNG, JPG, JPEG) and PDFs in modals.
- Responsive UI: Built with Bootstrap 5 and custom CSS for a premium look.
- Backend: Django 5.1.7, Python 3.11
- Frontend: Bootstrap 5, Custom CSS (navy-gray-white palette)
- Database: SQLite (default, local use)
- Containerization: Docker, Docker Compose
- File Storage: Local media directory (persistent via Docker volumes)
- Version Control: Git
- Docker Desktop (Windows/Mac) or Docker Engine (Linux)
- Git (optional, for cloning)
git clone https://github.com/yourusername/file-sharing-platform.git
cd file_sharing_platform
cd file_sharing_platformdocker compose build- This pulls Python 3.11-slim and installs dependencies from
requirements.txt.
docker compose up- Access the app at
http://127.0.0.1:8000. - The development server runs with live reloading.
- Open a new terminal in the project directory:
docker compose exec web python manage.py migrate- Creates the SQLite database (
db.sqlite3) with necessary tables. - Optional: Create an admin user:
docker compose exec web python manage.py createsuperuser- Visit
http://127.0.0.1:8000in your browser. - Sign up, log in, upload files (images/PDFs), share with another user, and preview them in modals.
docker compose down- Stops and removes the container, preserving local files (
media/anddb.sqlite3).
file-sharing-platform/
├── core/ # Django app (models, views, templates)
├── media/ # Uploaded files (persistent via Docker volume)
├── Dockerfile # Docker image configuration
├── docker-compose.yml # Docker service definition
├── manage.py # Django management script
├── requirements.txt # Python dependencies
└── README.md # This file
- Media Files: Stored in
media/uploads/with URLs at/media/uploads/.... - Previews: Enabled with
X_FRAME_OPTIONS = 'SAMEORIGIN'insettings.py. - Database: SQLite (
db.sqlite3) stored in the project root, synced via Docker volume.
- Port Conflict: If
8000is in use, editdocker-compose.ymltoports: - "8001:8000", then rebuild (docker compose build) and rerun. - Media Access: Ensure your system allows write permissions to
media/. Runchmod -R 777 media/(Linux/Mac) if needed. - Preview Errors: Verify
X_FRAME_OPTIONS = 'SAMEORIGIN'insettings.pyand media URLs in templates (e.g.,<iframe src="{{ file.uploaded_file.url }}">). - Logs: Check container output with
docker compose logsfor errors.
This app is ready for local use or deployment to platforms like:
- Render: Free tier with Docker support (sleeps after inactivity).
- Fly.io: Free tier with persistent storage (always on).
- For production, consider switching to PostgreSQL and a static file server (e.g., AWS S3).
- Fork the repository.
- Create a feature branch (
git checkout -b feature/your-feature). - Commit changes (
git commit -m "Add your feature"). - Push to your fork (
git push origin feature/your-feature). - Open a pull request.
MIT License - Free to use, modify, and distribute.
- Author: [Aravind Vinod]
- GitHub: Roguecolt
- Email: aaaarrvind@gmail.com
Built as a portfolio project to showcase Django, Docker, and modern web development skills. Enjoy sharing files securely!




