This is a full-stack project that allows users to upload files, manage nested folders, and create shareable temporary links with expiration time control. The application is secured with JWT-based authentication.
JWT authentication (register, login, protected routes)
Create, rename, delete folders (supports nesting)
Upload, rename, delete files
Generate temporary shareable links with expiration time
View shared files/folders via unique link
Prisma-based schema and database management
- React 19
- Vite
- Tailwind CSS
- Rad UI
- React Router DOM
- Lucide React Icons
- Node.js
- Express.js
- Prisma ORM
- PostgreSQL
- Multer (File upload handling)
- Passport.js (Authentication)
- Express Validator
- JWT Authentication
- Session Management
file-uploader/
├── frontend/ # React frontend application
│ ├── src/ # Source files
│ ├── public/ # Static assets
│ └── package.json # Frontend dependencies
│
└── server/ # Node.js backend application
├── controllers/ # Route controllers
├── routes/ # API routes
├── uploads/ # Uploaded files storage
├── prisma/ # Database schema and migrations
├── validators/ # Input validation
├── config/ # Configuration files
└── package.json # Backend dependencies
- Node.js (Latest LTS version)
- PostgreSQL
- npm or yarn
- Clone the repository:
git clone <repository-url>
cd file-uploader- Install frontend dependencies:
cd frontend
npm install- Install backend dependencies:
cd ../server
npm install-
Set up environment variables:
- Create
.envfiles in both frontend and server directories - Configure necessary environment variables (see .env.example files)
- Create
-
Set up the database:
cd server
npx prisma migrate dev- Start the backend server:
cd server
npm start- Start the frontend development server:
cd frontend
npm run devThe application will be available at:
- Frontend: http://localhost:5173
- Backend: http://localhost:3000
- Frontend development server with hot reload:
npm run dev - Build frontend for production:
npm run build - Run linting:
npm run lint