A secure, personal media vault built with Next.js, MongoDB, and Cloudinary. OmniVault allows you to elegantly store and manage your images, videos, documents, links, and personal notes in one centralized dashboard.
- Multi-Format Support: Upload images, videos, PDFs, store web links, and write personal text notes.
- Folder Organization: Drag-and-drop items into custom folders to keep everything structured.
- Bulk Selection & Smart Drag: Multi-select items seamlessly with smart hit zones and drag them in bulk into folders.
- Smart Cloud Storage: Integrates with Cloudinary for robust media handling (including zip-proxying for PDFs).
- Secure Authentication: Built-in NextAuth integration for secure, personal access.
- Beautiful UI: Modern, responsive, glass-morphism aesthetic using React and CSS modules.
- Framework: Next.js 15+ (App Router)
- Database: MongoDB via Mongoose
- Storage: Cloudinary
- Authentication: NextAuth.js
- Styling: Vanilla CSS / React inline styles
-
Clone the repository:
git clone https://github.com/vibekprasadbin/omnivault.git cd omnivault -
Install dependencies:
npm install
-
Configure Environment Variables: Create a
.env.localfile in the root directory and add the following keys:MONGODB_URI=your_mongodb_connection_string CLOUDINARY_CLOUD_NAME=your_cloudinary_cloud_name CLOUDINARY_API_KEY=your_cloudinary_api_key CLOUDINARY_API_SECRET=your_cloudinary_api_secret NEXTAUTH_SECRET=your_nextauth_secret NEXTAUTH_URL=http://localhost:3000
-
Run the development server:
npm run dev
-
Open your browser: Navigate to http://localhost:3000
This repository includes local migration scripts (migrate.js, migrate_pdfs.ts) used to retroactively fix database states and cloud assets. They rely on the .env.local context and are intentionally ignored by Next.js builds.
This project is licensed under the MIT License.