A full-stack web application replicating the "Madu Web Tech" coding education platform. Built with React.js, Node.js, Express, MongoDB, and Tailwind CSS.
- Home Page with hero section, category cards, latest tutorials
- Category Pages with paginated posts
- Single Post/Tutorial Page with YouTube embed, comments
- MCQ Quiz System with score tracking
- Search Functionality across posts
- About & Contact Pages
- Authentication with JWT
- Posts Management with CRUD operations
- Categories Management
- MCQ Management with question builder
- Comments Moderation
- Settings (site name, social links, etc.)
- Media Library
- Node.js + Express.js
- MongoDB + Mongoose ODM
- JWT Authentication
- Cloudinary for image uploads
- Multer for file handling
- React.js + Vite
- Tailwind CSS
- React Router
- React Helmet Async (SEO)
- React Quill (Rich Text Editor)
- React Icons
- Axios
- Node.js 18+
- MongoDB
- Cloudinary account (for image uploads)
- Clone and enter the project:
cd maduwebtech- Setup Backend:
cd server
npm installCreate .env file in server folder:
NODE_ENV=development
PORT=5000
MONGODB_URI=mongodb://localhost:27017/maduwebtech
JWT_SECRET=your_secret_key_here
CLOUDINARY_CLOUD_NAME=your_cloud_name
CLOUDINARY_API_KEY=your_api_key
CLOUDINARY_API_SECRET=your_api_secret
ADMIN_EMAIL=admin@maduwebtech.com
ADMIN_PASSWORD=admin123
Start the server:
npm run dev- Setup Frontend:
cd ../client
npm install
npm run dev- Email:
admin@maduwebtech.com - Password:
admin123(change in production)
├── client/ # React frontend
│ ├── src/
│ │ ├── admin/ # Admin pages
│ │ ├── api/ # API functions
│ │ ├── components/ # Shared components
│ │ ├── context/ # React contexts
│ │ ├── pages/ # Public pages
│ │ └── ...
├── server/ # Express backend
│ ├── config/ # DB & Cloudinary config
│ ├── controllers/ # Route controllers
│ ├── middleware/ # Auth, error handlers
│ ├── models/ # Mongoose models
│ ├── routes/ # API routes
│ └── server.js # Entry point
Make sure to set all environment variables for production:
MONGODB_URI: Production MongoDB connection stringJWT_SECRET: Strong secret keyCLOUDINARY_*: Cloudinary credentialsADMIN_*: Admin credentials
cd client
npm run buildcd server
npm startMIT