Skip to content

darshan-gowdaa/eduworld-fullstack

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

33 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

EduWorld 🌍

⚠️ 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.

Watch the Demo


πŸ“Έ Screenshots

Landing Page

image

Footer

image

UI Sneak Peek πŸ‘€

image

ChatBot in Action

image image

Login & Register Pages

image image

Dashboards & Forms

image image Form 2 Form 3 image

πŸŽ₯ Demo Videos

All feature demonstrations are available in the Google Drive Demo Folder.


πŸš€ Overview

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.


✨ Key Features

  • πŸ€– 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 use jsonwebtoken (JWT) for stateless authentication and authorization with role-based access control (student / faculty). API routes are protected by HTTP header security via helmet, cross-origin resource sharing governance via cors, and basic protection against brute-force/DDoS attacks using express-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.json routing API requests to Express and serving the React SPA for all other routes.

πŸ› οΈ Tech Stack


πŸ“¦ Folder Structure

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

⚑ Getting Started

Prerequisites

  • Node.js v20+
  • A MongoDB Atlas cluster (or local MongoDB instance)

1. Clone the Repository

git clone https://github.com/darshan-gowdaa/eduworld-fullstack.git
cd eduworld-fullstack

2. Install All Dependencies

npm run setup

This runs npm install concurrently in the root, frontend/, and backend/ directories.

3. Configure Environment Variables

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=development

4. Run in Development Mode

Backend only:

npm run dev:backend
# Starts Express with nodemon on http://localhost:5000

Frontend only:

npm run dev:frontend
# Starts Vite dev server on http://localhost:5173

Both together:

# In two separate terminals, run the commands above

5. Production Build

npm run build   # builds the React app into frontend/dist
npm start       # starts the Express server

πŸ”— API Reference

Base URL (local): http://localhost:5000/api

Auth

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" }
}

Applications

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

Enquiries

Method Endpoint Auth Role Description
POST /enquiries/ β€” public Submit an enquiry
GET /enquiries/ βœ… faculty Get all enquiries

Dashboard

Method Endpoint Auth Role Description
GET /dashboard/stats βœ… faculty Get platform statistics

πŸ—‚οΈ Data Models

User

{ name, email, password /* bcrypt hashed */, role: "student"|"faculty", createdAt }

Application

{
  userId,          // ref β†’ User
  personalInfo,    // { fullName, email, phone, dob }
  academicInfo,    // { qualification, institution, year, score }
  courseSelected,
  intake,
  documents,       // array
  createdAt
}

Enquiry

{ name, email, phone, course, message, preferredContact, urgency, createdAt }

🧠 ChatBot Details

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

☁️ Deploying to Vercel

  1. Push the repo to GitHub.
  2. Import the project in Vercel.
  3. Set the following Environment Variables in the Vercel dashboard:
    • MONGO_URI
    • JWT_SECRET
    • NODE_ENV=production
  4. Vercel will use vercel.json to route /api/* to the serverless Express function and serve the React SPA for everything else.

Note: The api/index.js file re-exports the Express app from backend/server.js so Vercel treats it as a serverless function.


πŸ—ΊοΈ Roadmap

  • 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

πŸ“¬ Contact


πŸ… Badges

GitHub last commit GitHub issues GitHub stars


EduWorld: Transforming education, empowering futures.

About

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.

Topics

Resources

Stars

3 stars

Watchers

0 watching

Forks

Contributors