A modern, fast notes and videos platform built with React (Vite) and an Express server, backed by Firebase Auth + Realtime Database + Storage. Includes an enhanced Admin Panel for content management, statistics, and user/admin roles.
Made by Christopher Joshy
- Browse by semester and subject (s1–s8)
- Global search with filters (semester, subject, type, sort)
- Notes and videos stored under nested RTDB paths; counters for downloads/views
- Admin panel: upload via URL, inline edit/move items, delete, statistics, manage admins/users
- Auth with Google; admin role detection with live updates
- Frontend: React 18, Vite, shadcn/Radix UI, Tailwind, React Query, Wouter
- Backend: Express + Vite dev middleware, TypeScript
- Data: Firebase Auth, Realtime Database, Storage
- client/ — Vite app (entry:
client/index.html
, src inclient/src
) - server/ — Express server (
server/index.ts
) serving API and client in prod - shared/ — Shared TypeScript types (
shared/schema.ts
)
- Install dependencies
npm install
- Set environment variables (create
.env
in the repo root or supply via shell)
Required for client (Vite):
- VITE_FIREBASE_API_KEY
- VITE_FIREBASE_AUTH_DOMAIN
- VITE_FIREBASE_PROJECT_ID
- VITE_FIREBASE_STORAGE_BUCKET
- VITE_FIREBASE_MESSAGING_SENDER_ID
- VITE_FIREBASE_APP_ID
- VITE_FIREBASE_DATABASE_URL
- VITE_FIREBASE_MEASUREMENT_ID (optional)
- Run in development (Express API + Vite dev server)
npm run dev
- Build and start in production
npm run build
npm start
The server listens on PORT (defaults to 5000). In production, the client is built into dist/public
and served by Express.
- Admin Portal is accessible from the avatar dropdown when logged in as an admin
- You can manage admins (add/remove; head admin protected), promote users, and edit/move content
- PRs welcome. Keep changes small and type-safe. Add tests where reasonable.
MIT