A modern web application for file management with user authentication, file uploads, and user profile management.
demo.mp4
-
Authentication
- Email/password authentication with JWT
- Registration and login functionality
- Password change
-
File Management
- File upload with automatic file type detection
- File listing with details (filename, upload date, file type, size)
- File download and deletion
- Support for multiple file types (PDF, Excel, TXT, etc.)
-
Dashboard
- Display total files uploaded
- Breakdown of file types (PDF, Excel, Word, etc.)
- Visual representation of file statistics
-
User Profile
- Edit username and personal information
- Add and manage multiple addresses
- Phone number management
- Django: Web framework
- Django REST Framework: REST API
- Simple JWT: JWT authentication
- SQLite: Database (for development)
- Next.js: React framework
- TypeScript: Type safety
- Tailwind CSS: Styling
- Zustand: State management
- React Hook Form: Form handling
- Axios: API requests
|-- backend/ # Django backend
| |-- core/ # Project configuration
| |-- users/ # User authentication and profiles
| |-- files/ # File management
| |-- venv/ # Virtual environment
|
|-- frontend/ # Next.js frontend
|-- src/
|-- app/ # Next.js App Router
|-- components/ # Reusable components
|-- services/ # API services
|-- store/ # Zustand stores
- Python 3.8+
- Node.js 18+
- pnpm (for frontend package management)
-
Navigate to the backend directory:
cd backend
-
Create and activate a virtual environment:
python -m venv venv .\venv\Scripts\activate # Windows source venv/bin/activate # macOS/Linux
-
Install dependencies:
pip install -r requirements.txt
-
Run migrations:
python manage.py migrate
-
Create a superuser:
python manage.py createsuperuser
-
Start the Django development server:
python manage.py runserver
-
Navigate to the frontend directory:
cd frontend
-
Install dependencies:
pnpm install
-
Start the Next.js development server:
pnpm dev
-
Open your browser and navigate to
http://localhost:3000
POST /api/users/register/
: Register new userPOST /api/users/login/
: Login and get JWT tokensPOST /api/users/token/refresh/
: Refresh tokenPOST /api/users/change-password/
: Change password
GET /api/users/profile/
: Get user profilePUT /api/users/profile/
: Update user profileGET /api/users/addresses/
: Get user addressesPOST /api/users/addresses/
: Add new addressPUT /api/users/addresses/{id}/
: Update addressDELETE /api/users/addresses/{id}/
: Delete address
POST /api/files/upload/
: Upload fileGET /api/files/list/
: List user filesGET /api/files/download/{id}/
: Download fileDELETE /api/files/delete/{id}/
: Delete fileGET /api/files/dashboard/
: Get file statistics
This project is licensed under the MIT License