A scalable, extensible, and maintainable file management system built with React, FastAPI, and PostgreSQL.
- File Upload: Drag & drop interface with progress tracking
- File Download: Secure file downloads with proper headers
- File Management: View, delete, and manage uploaded files
- Scalable Architecture: Designed for horizontal scaling
- Extensible: Easy to add new features like user authentication, file sharing, etc.
- Maintainable: Clean code structure with proper separation of concerns
- Frontend: React 18 + TypeScript + Vite
- Backend: FastAPI + Python 3.11+
- Database: PostgreSQL 14+
- File Storage: Local filesystem (easily extensible to S3, etc.)
fileUpDown/
├── frontend/ # React application
├── backend/ # FastAPI application
├── database/ # Database migrations and schemas
├── docker-compose.yml # Development environment
└── README.md
- Node.js 18+
- Python 3.11+
- PostgreSQL 14+
- Docker & Docker Compose (optional)
-
Clone and setup:
git clone <repository> cd fileUpDown
-
Start with Docker (Recommended):
docker-compose up -d
-
Manual Setup:
# Backend cd backend python -m venv venv source venv/bin/activate # On Windows: venv\Scripts\activate pip install -r requirements.txt uvicorn main:app --reload # Frontend cd frontend npm install npm run dev
-
Database Setup:
# Create database createdb fileupdown_db # Run migrations cd backend alembic upgrade head
Once the backend is running, visit:
- Swagger UI: http://localhost:8000/docs
- ReDoc: http://localhost:8000/redoc
Create .env files in both frontend and backend directories:
Backend (.env):
DATABASE_URL=postgresql://user:password@localhost/fileupdown_db
SECRET_KEY=your-secret-key-here
UPLOAD_DIR=./uploads
MAX_FILE_SIZE=100MB
Frontend (.env):
VITE_API_URL=http://localhost:8000
- Fork the repository
- Create a feature branch
- Make your changes
- Add tests
- Submit a pull request
MIT License