Skip to content

suhaan-24/MediaMatrix

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

37 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

MediaMatrix β€” Digital Asset Management

🌐 Live App: https://media-matrix-one.vercel.app/

MediaMatrix is a professional-grade Digital Asset Management (DAM) platform for seamless uploading, organizing, and discovering high-quality digital assets.

Live Demo

Service URL
Frontend https://media-matrix-one.vercel.app/
Backend API (deploy to Render β€” see below)
Health Check GET /api/health

Key Features

  • Smart Search β€” ElasticSearch-powered full-text search with MongoDB fallback
  • Cloud Storage β€” Firebase Cloud Storage for secure, scalable media hosting
  • Folder Organization β€” Hierarchical folder-based asset management
  • Authentication β€” JWT-based login/register with role-based access control
  • Subscription Plans β€” Razorpay-integrated payment flows
  • Analytics β€” Built-in page-view and event tracking via /api/analytics
  • Performance β€” HTTP compression, helmet security headers, Morgan request logging

Tech Stack

Layer Technology
Frontend React 19, Tailwind CSS, Vite
Backend Node.js, Express, Mongoose
Database MongoDB (Atlas recommended)
Search ElasticSearch (with MongoDB fallback)
Storage Firebase Cloud Storage
Payments Razorpay
Logging Morgan (HTTP), console (app)

Architecture

β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚                   Browser (React)               β”‚
β”‚  Pages: Home / Search / Details / Subscription  β”‚
β”‚  Context: AuthContext, ToastContext              β”‚
β”‚  Analytics: trackPageView() on every route      β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
                   β”‚ HTTPS (Axios / fetch)
β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β–Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚             Express API (Node.js)               β”‚
β”‚  Middleware: Helmet Β· Compression Β· Morgan       β”‚
β”‚  Routes: /auth /assets /search /folders         β”‚
β”‚          /payments /analytics /health            β”‚
β””β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
     β”‚              β”‚                β”‚
β”Œβ”€β”€β”€β”€β–Όβ”€β”€β”€β”€β”  β”Œβ”€β”€β”€β”€β”€β”€β–Όβ”€β”€β”€β”€β”€β”€β”  β”Œβ”€β”€β”€β”€β”€β–Όβ”€β”€β”€β”€β”€β”€β”
β”‚ MongoDB β”‚  β”‚ElasticSearchβ”‚  β”‚  Firebase  β”‚
β”‚ Atlas   β”‚  β”‚  (Search)   β”‚  β”‚  Storage   β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

Getting Started

Prerequisites

  • Node.js v18+
  • MongoDB (local or Atlas)
  • Firebase project (for Storage)
  • ElasticSearch (optional β€” app falls back to MongoDB)

1. Clone the repository

git clone https://github.com/your-username/MediaMatrix.git
cd MediaMatrix

2. Backend Setup

cd backend
npm install
cp .env.example .env
# Fill in your credentials in .env
npm run dev

3. Frontend Setup

cd frontend
npm install
cp .env.example .env
# Set VITE_API_URL and VITE_BACKEND_URL in .env
npm run dev

Deployment

Backend β†’ Render

  1. Create a new Web Service on render.com
  2. Connect your GitHub repo, set Root Directory to backend
  3. Build command: npm install
  4. Start command: node server.js
  5. Add all environment variables from .env.example
  6. The render.yaml in the repo root pre-configures this for you

Frontend β†’ Vercel

  1. Import the repo on vercel.com
  2. Set Root Directory to frontend
  3. Framework preset: Vite
  4. Add environment variables:
    • VITE_API_URL = https://your-render-url.onrender.com/api
    • VITE_BACKEND_URL = https://your-render-url.onrender.com
  5. The vercel.json handles SPA routing automatically

API Reference

Method Endpoint Description
GET /api/health Service health + DB/ES/Firebase status
POST /api/auth/register Register a new user
POST /api/auth/login Login and receive JWT
GET /api/auth/me Get current user (protected)
GET /api/assets List assets (paginated, filterable)
POST /api/assets Upload a new asset
GET /api/search?q=&type= Full-text search
GET /api/folders List folders
POST /api/folders Create a folder
POST /api/payments/order Create Razorpay order
POST /api/analytics/track Track a page/event
GET /api/analytics/summary View analytics stats (protected)

Project Structure

MediaMatrix/
β”œβ”€β”€ backend/
β”‚   β”œβ”€β”€ src/
β”‚   β”‚   β”œβ”€β”€ config/         # DB, Firebase, ElasticSearch
β”‚   β”‚   β”œβ”€β”€ controllers/    # Business logic
β”‚   β”‚   β”œβ”€β”€ middleware/     # Auth, upload
β”‚   β”‚   β”œβ”€β”€ models/         # Mongoose schemas
β”‚   β”‚   β”œβ”€β”€ routes/         # Express routers
β”‚   β”‚   └── utils/          # Helpers
β”‚   β”œβ”€β”€ server.js
β”‚   └── .env.example
β”œβ”€β”€ frontend/
β”‚   β”œβ”€β”€ src/
β”‚   β”‚   β”œβ”€β”€ components/     # Navbar, UploadModal, ProtectedRoute
β”‚   β”‚   β”œβ”€β”€ context/        # AuthContext, ToastContext
β”‚   β”‚   β”œβ”€β”€ pages/          # Home, Search, Details, Subscription
β”‚   β”‚   └── utils/          # analytics.js
β”‚   β”œβ”€β”€ vercel.json
β”‚   └── .env.example
β”œβ”€β”€ render.yaml
└── README.md

Contributors

  • Suhaan β€” Backend Engineering (Auth, ElasticSearch, Infrastructure, Analytics)
  • Abhay β€” Frontend Engineering (UX/UI, React Architecture, Firebase)

License

MIT

About

Digital Asset Management

Resources

License

Code of conduct

Contributing

Security policy

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors