β οΈ Disclaimer: This project is not affiliated with any real educational institution or company. EduWorld is a portfolio project created solely to showcase full-stack development skills. All names, features, and content are for demonstration purposes only.
π Live Demo: https://eduworld-phi.vercel.app/
βοΈ Hosted Infrastructure: This application is hosted online using Vercel. The database relies on MongoDB Atlas (Free Tier) which is connected online for demonstration purposes.
All feature demonstrations are available in the Google Drive Demo Folder.
EduWorld is a modern, full-stack educational platform designed to connect students, faculty, and administrators in a seamless, interactive environment. With a focus on global recognition, career success, and innovative learning, EduWorld offers a comprehensive suite of features for admissions, course management, enquiries, and more.
- π€ AI-Powered ChatBot β 24/7 support covering admissions, fees, scholarships, campus life, and more. Includes smart keyword detection, typing indicators, message rating (thumbs up/down), quick reply suggestions, and minimise/close controls.
- π Floating Call Button β Instantly connect with support via phone, WhatsApp, or email from any page.
- π¨ Modern UI/UX β Smooth Framer Motion page transitions, animated hero sections, interactive spotlight cursor effect, welcome popup with newsletter subscription, and a dark/light theme toggle via
next-themes. - π Applications & Enquiries β Students can submit multi-step applications (personal info β academic details β course selection) with per-step validation. Enquiry form available on the Contact page.
- π Role-Based Dashboards β Separate dashboards for students (apply, track status) and faculty (view all applications & enquiries, see platform stats).
- π Analytics Dashboard β Real-time counts for applications, enquiries, students, and faculty shown on the faculty dashboard.
- π‘οΈ Robust Security β Passwords are securely hashed using
bcryptjs. We usejsonwebtoken(JWT) for stateless authentication and authorization with role-based access control (student/faculty). API routes are protected by HTTP header security viahelmet, cross-origin resource sharing governance viacors, and basic protection against brute-force/DDoS attacks usingexpress-rate-limit. - π Course Catalogue β Browse UG and PG programs with search, category filters, sort options, favouriting, and animated cards.
- π Multi-Channel Contact β Phone, email, WhatsApp, and the full contact form with subject, priority level, and preferred contact method.
- βοΈ Vercel-Ready β Configured for serverless deployment with
vercel.jsonrouting API requests to Express and serving the React SPA for all other routes.
eduworld-fullstack/
βββ api/
β βββ index.js # Vercel serverless entry β re-exports Express app
β
βββ backend/
β βββ config/
β β βββ db.js # MongoDB connection (serverless-safe)
β βββ controllers/
β β βββ applicationsController.js
β β βββ authController.js
β β βββ dashboardController.js
β β βββ enquiriesController.js
β βββ middleware/
β β βββ middleware.js # JWT auth middleware
β βββ models/
β β βββ Application.js # { userId, personalInfo, academicInfo, courseSelected, intake, documents }
β β βββ Enquiry.js # { name, email, phone, course, message, preferredContact, urgency }
β β βββ User.js # { name, email, password, role: "student"|"faculty" }
β βββ routes/
β β βββ applicationsRoutes.js
β β βββ authRoutes.js
β β βββ dashboardRoutes.js
β β βββ enquiriesRoutes.js
β βββ server.js # Express app β exported for Vercel, started locally
β βββ package.json
β
βββ frontend/
β βββ src/
β β βββ components/
β β β βββ chat/
β β β β βββ ChatBot.jsx # Full chatbot UI (open/minimise/close, typing, ratings)
β β β β βββ chatbotData.js # Keyword map, responses, quick replies
β β β βββ common/
β β β β βββ CallButton.jsx # Floating contact button (phone/WhatsApp/email)
β β β β βββ CallToAction.jsx # Reusable CTA section
β β β β βββ Footer.jsx
β β β β βββ Header.jsx # Responsive nav with user dropdown
β β β β βββ HeroSection.jsx # Parallax + cursor spotlight hero
β β β β βββ WelcomePopup.jsx # Newsletter popup (shown once via localStorage)
β β β βββ forms/
β β β β βββ ApplicationForm.jsx # 3-step multi-stage form
β β β β βββ AuthForm.jsx # Shared login/register form
β β β β βββ EnquiryForm.jsx
β β β β βββ UserTypePopup.jsx # Student / Faculty selector modal
β β β βββ theme-provider.jsx # next-themes wrapper
β β β βββ ui/
β β β βββ Toast.jsx # Sonner toast utility + container
β β β βββ button.jsx # Base UI + CVA button
β β β βββ card.jsx
β β β βββ input.jsx
β β βββ pages/
β β β βββ About.jsx # Timeline, values, testimonials, leadership
β β β βββ Contact.jsx # Contact cards, form, FAQ accordion
β β β βββ Courses.jsx # Filter, sort, favourites, course cards
β β β βββ Enquiry.jsx # Standalone enquiry page
β β β βββ Home.jsx # Hero, stats, bento grid features, CTA
β β β βββ Login.jsx
β β β βββ Register.jsx
β β β βββ faculty/
β β β β βββ Applications.jsx # Table with review modal (+ mock data fallback)
β β β β βββ Dashboard.jsx # Stats + quick links
β β β β βββ Enquiries.jsx # Table with detail modal
β β β βββ student/
β β β βββ Apply.jsx # Wraps ApplicationForm
β β β βββ Dashboard.jsx # Action cards
β β β βββ Status.jsx # Application status display
β β βββ utils/
β β β βββ api.js # Axios instance with JWT interceptor
β β βββ App.jsx # Router, AnimatePresence page transitions
β β βββ index.css # Tailwind v4 + CSS variables (light/dark)
β β βββ main.jsx
β βββ index.html
β βββ jsconfig.json # @ alias β ./src
β βββ package.json
β βββ tailwind.config.js
β βββ vite.config.js # SWC + Tailwind plugin + @ alias + chunk splitting
β
βββ package.json # Monorepo scripts
βββ vercel.json # Vercel deployment config
- Node.js v20+
- A MongoDB Atlas cluster (or local MongoDB instance)
git clone https://github.com/darshan-gowdaa/eduworld-fullstack.git
cd eduworld-fullstacknpm run setupThis runs npm install concurrently in the root, frontend/, and backend/ directories.
Create a .env file inside the backend/ folder:
MONGO_URI=your_mongodb_connection_string
JWT_SECRET=your_super_secret_jwt_key
PORT=5000
NODE_ENV=developmentBackend only:
npm run dev:backend
# Starts Express with nodemon on http://localhost:5000Frontend only:
npm run dev:frontend
# Starts Vite dev server on http://localhost:5173Both together:
# In two separate terminals, run the commands abovenpm run build # builds the React app into frontend/dist
npm start # starts the Express serverBase URL (local): http://localhost:5000/api
| Method | Endpoint | Auth | Description |
|---|---|---|---|
POST |
/auth/register |
β | Register a new user |
POST |
/auth/login |
β | Login and receive JWT |
GET |
/auth/me |
β JWT | Get current user profile |
Register / Login payload:
{
"name": "Mindri Mahesh",
"email": "mindri.mahesh@example.com",
"password": "$tR0ngp@$$word67",
"role": "student"
}Response:
{
"token": "<jwt>",
"user": { "id": "...", "name": "Mindri Mahesh", "email": "...", "role": "student" }
}| Method | Endpoint | Auth | Role | Description |
|---|---|---|---|---|
POST |
/applications/ |
β | student | Submit a new application |
GET |
/applications/ |
β | faculty | Get all applications |
GET |
/applications/mine |
β | student | Get own application |
| Method | Endpoint | Auth | Role | Description |
|---|---|---|---|---|
POST |
/enquiries/ |
β | public | Submit an enquiry |
GET |
/enquiries/ |
β | faculty | Get all enquiries |
| Method | Endpoint | Auth | Role | Description |
|---|---|---|---|---|
GET |
/dashboard/stats |
β | faculty | Get platform statistics |
{ name, email, password /* bcrypt hashed */, role: "student"|"faculty", createdAt }{
userId, // ref β User
personalInfo, // { fullName, email, phone, dob }
academicInfo, // { qualification, institution, year, score }
courseSelected,
intake,
documents, // array
createdAt
}{ name, email, phone, course, message, preferredContact, urgency, createdAt }The chatbot (ChatBot.jsx + chatbotData.js) works entirely client-side with no external AI API. It uses a keyword map to match user input against synonyms and return pre-written responses with follow-up suggestions.
Supported topics: courses, admissions, fees, contact, scholarships, campus, faculty, deadlines, housing, internships, job placement, B.Tech, MBA, required documents, payment plans, virtual tours, English proficiency, and international students.
UI Features:
- Typing indicator animation
- Thumbs up / thumbs down message rating
- Quick reply suggestion chips (scroll horizontally on mobile)
- Minimise to a headphone icon bubble
- Clear chat button
- Timestamps on every message
- Push the repo to GitHub.
- Import the project in Vercel.
- Set the following Environment Variables in the Vercel dashboard:
MONGO_URIJWT_SECRETNODE_ENV=production
- Vercel will use
vercel.jsonto route/api/*to the serverless Express function and serve the React SPA for everything else.
Note: The
api/index.jsfile re-exports the Express app frombackend/server.jsso Vercel treats it as a serverless function.
- Student application & multi-step form
- Faculty/admin dashboards with live stats
- Role-based authentication (JWT)
- Interactive AI-style chatbot
- Enquiry submission & management
- Dark / Light theme toggle
- Smooth page transitions with Framer Motion
- Vercel serverless deployment support
- Email notifications on application status change
- Admin panel for approving/rejecting applications
- File upload for application documents
- Real-time notifications with WebSockets
EduWorld: Transforming education, empowering futures.



