Skip to content

kbelltree/odin-file-uploader

Repository files navigation

The Odin Project: File Uploader


Screenshot of File Uploader


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.

Key Project Instructions

This application was developed according to the main guidelines of the assignment:

Authentication:

  • Implement session-based authentication using prisma-session-store and express-session.
  • Authenticate users with Passport.js

Data management:

  • Use Prisma ORM to implement CRUD functionality for Users, Folders, and Files.

File Uploader:

  • Utilize Multer to read file data, validate uploads, and send files to the chosen storage provider.

Features:

  1. File Upload Form:
    • Validate file type and size.
    • Allow only logged-in users to upload, edit, or delete their files.
  2. Folder Management:
    • Create, rename, and delete folders.
    • Associate uploaded files with specific folders.
  3. Session Handling:
    • Maintain secure user sessions using Passport.js and express-session.
  4. File Details Page:
    • Show meta details for each file.
    • Provide a file download button.
  5. Database Modeling:
    • Manage Users, Files, and Folders through Prisma ORM models and queries.
  6. Storage Provider Integration:
    • Support cloud storage using either Cloudinary or Supabase.
    • Handle the route to upload the files.
  7. (Extra Credit - Not Implemented) Sharable Folder:
    • Enable folder sharing using a shared key with expiration time.

Built With

  • Express
  • Multer
  • Prisma ORM
  • EJS
  • Vanilla CSS
  • PostgreSQL
  • Passport.js
  • bycript.js
  • helmet
  • Cloudinary
  • Neon (PostgreSQL hosting)
  • Render (deployment)

Releases

No releases published

Packages

No packages published