Monorepo with a Node/Express backend and a React + Vite frontend.
- server/ — Express backend
- server.js — app entry
- config/db.js — DB pool
- controllers/, routes/, middleware/
- generate-hash.js — helper to create bcrypt hashes
- uploads/ — uploaded files
- package.json, .env (store DB and PORT)
- vite-project/ — React (Vite) frontend
- src/ — components, pages, services
- src/services/api.js — API_BASE and axios helpers
- index.html, package.json
- elearning_db.sql — database schema and sample data
- Node.js 18+ (recommended)
- npm or yarn
- MySQL (or configured DB matching server/config/db.js)
-
Prepare DB
- Create DB and run elearning_db.sql.
- Put DB credentials in server/.env (or adjust server/config/db.js).
-
Run backend
cd server npm install npm run dev # or: node server.jsDefault API base: http://localhost:5000/api (check server/.env)
-
Run frontend
cd vite-project npm install npm run devOpen URL printed by Vite (usually http://localhost:5173).
- API base used by frontend: vite-project/src/services/api.js — update when backend port changes.
- Uploads handled by server/middleware/uploadMiddleware.js; static files served from server (see server.js).
- Protect routes with server/middleware/authMiddleware.js and role checks in server/middleware/roleMiddleware.js.
- Backend dev: cd server && npm run dev
- Frontend dev: cd vite-project && npm run dev
- Generate password hash (example): node server/generate-hash.js
- Run frontend and backend in separate terminals.
- Keep controllers in server/controllers/ and frontend pages in vite-project/src/pages/.
- If adding environment variables, document them in server/.env.example.
- Follow existing code structure and conventions.
- Add tests when modifying core logic.
Add license information here.