This File Uploader is a simplified file-storage application that allows users to upload files, view details, organize them into folders, and download them.
The project was built to practice backend skills learned through The Odin Project, including Prisma ORM, Multer, Express, Passport, and EJS.
For full assignment details, see: The Odin Project - File Uploader.
This application was developed according to the main guidelines of the assignment:
Authentication:
- Implement session-based authentication using
prisma-session-storeandexpress-session. - Authenticate users with
Passport.js
Data management:
- Use
Prisma ORMto implement CRUD functionality for Users, Folders, and Files.
File Uploader:
- Utilize
Multerto read file data, validate uploads, and send files to the chosen storage provider.
Features:
- File Upload Form:
- Validate file type and size.
- Allow only logged-in users to upload, edit, or delete their files.
- Folder Management:
- Create, rename, and delete folders.
- Associate uploaded files with specific folders.
- Session Handling:
- Maintain secure user sessions using
Passport.jsandexpress-session.
- Maintain secure user sessions using
- File Details Page:
- Show meta details for each file.
- Provide a file download button.
- Database Modeling:
- Manage Users, Files, and Folders through
Prisma ORMmodels and queries.
- Manage Users, Files, and Folders through
- Storage Provider Integration:
- Support cloud storage using either Cloudinary or Supabase.
- Handle the route to upload the files.
- (Extra Credit - Not Implemented) Sharable Folder:
- Enable folder sharing using a shared key with expiration time.
- Express
- Multer
- Prisma ORM
- EJS
- Vanilla CSS
- PostgreSQL
- Passport.js
- bycript.js
- helmet
- Cloudinary
- Neon (PostgreSQL hosting)
- Render (deployment)
