Skip to content

A full-fledged Learning Management System built to streamline student-teacher interactions, assignments, and progress tracking - all in one intuitive web app using HTML, CSS, JavaScript Node.js, Express.js and MySQL. By - Manogna Samayam and GK Monika.

License

Notifications You must be signed in to change notification settings

Codeunia/Campus-Bridge

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

47 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

Campus Bridge – Learning Management System (LMS) πŸ“š

Campus Bridge is a modern and lightweight LMS (Learning Management System) tailored for educational institutions, students, and self-paced learners. Built with simplicity, scalability, and beauty in mind.

Campus Bridge Logo


πŸš€ Live Demo

🌐 Demo Link


☁️ Deployment Options

Render (Recommended for Full Application)

For a complete deployment with both frontend and backend functionality, we recommend Render which supports Node.js applications with database connectivity.

Important: Campus Bridge requires an external MySQL database.

Free MySQL Hosting Options

If you're looking for completely free MySQL hosting options:

  1. FreeSQLDatabase.com (Completely free)

  2. PlanetScale (Free tier with limitations)

  3. Railway (Credit-based free option)

FreeSQLDatabase.com Setup (Required for Render)

Before deploying to Render, you need to set up a MySQL database using FreeSQLDatabase.com:

  1. Follow the guide in FREESQLDATABASE_SETUP_GUIDE.md
  2. Get your database connection details
  3. Use these details when configuring environment variables in Render

Environment Variables

After setting up your MySQL database, configure these environment variables in Render:

  • MYSQL_HOST - Your MySQL hostname
  • MYSQL_USER - Your MySQL username
  • MYSQL_PASSWORD - Your MySQL password
  • MYSQL_DATABASE - Your database name
  • MYSQL_PORT - 3306 (or your provider's port)
  • MYSQL_SSL - Set to "false" only if using FreeSQLDatabase.com
  • EMAIL_SERVICE - Gmail
  • EMAIL_USER - Your Gmail address
  • EMAIL_PASS - Your Gmail app password
  • EMAIL_FROM - Your Gmail address
  • APP_URL - https://campus-bridge-lms.onrender.com

See RENDER_ENV_VARIABLES.md for detailed instructions.

Deploying to Render with FreeSQLDatabase.com

If you're using FreeSQLDatabase.com, follow the specific deployment guide:

Local Development (Recommended)

For the complete experience, run the application locally:

git clone https://github.com/Codeunia/Campus-Bridge.git
cd Campus-Bridge
npm install
npm start

After deployment, you can check your database status at /db-status.html

If you encounter database connection issues, see DATABASE_TROUBLESHOOTING.md


🧰 Tech Stack

Layer Tech Used
Frontend HTML, CSS, Bootstrap Icons, JavaScript
Backend Node.js, Express.js
Database MySQL
API Client Postman (for testing)

🧱 Features

  • πŸ—‚ Upload and manage lecture PDFs
  • πŸ“„ Dynamic lecture card generation
  • πŸ”— Open lecture PDFs directly from browser
  • πŸ§ͺ REST API support (Tested with Postman)
  • ⚑ Smooth integration between frontend & backend
  • ✨ Modern UI with responsive design
  • 🧾 Organized by subject/topic
  • πŸ” User authentication and session management
  • πŸ‘€ User registration and login
  • 🚫 Protected routes for authenticated users only
  • πŸ€– Shakthi Bot - AI assistant for website navigation

πŸ“ Folder Structure

CampusBridge-LMS/
β”‚
β”œβ”€β”€ public/                   # Frontend files
β”‚   β”œβ”€β”€ index.html         # Main UI page
β”‚   β”œβ”€β”€ script.js             # Dynamic JS logic
β”‚   β”œβ”€β”€ shakti-bot.js         # Shakthi Bot AI assistant
β”‚   β”œβ”€β”€ *.html                # All HTML pages with integrated Shakthi Bot
β”‚
β”œβ”€β”€ uploads/                  # Uploaded PDF files
β”‚
β”œβ”€β”€ server.js                 # Main Express server
β”œβ”€β”€ db.js                     # MySQL connection
β”œβ”€β”€ middleware.js             # Authentication middleware
β”œβ”€β”€ init-db.js                # Database initialization script
β”œβ”€β”€ README.md                 # Project documentation
β”œβ”€β”€ AUTHENTICATION_SETUP.md   # Authentication system documentation
β”œβ”€β”€ GOOGLE_ANALYTICS_SETUP.md # Google Analytics implementation guide
└── SHAKTHI_BOT_GUIDE.md      # Comprehensive Shakthi Bot implementation guide

βš™οΈ Installation

1. Clone the repo

git clone https://github.com/Codeunia/Campus-Bridge.git
cd Campus-Bridge

2. Install dependencies

npm install express mysql multer cors

3. Setup MySQL Tables

Open MySQL Workbench or Terminal and run:

CREATE DATABASE lms;

USE lms;

CREATE TABLE learning_resources (
  id INT AUTO_INCREMENT PRIMARY KEY,
  title VARCHAR(255) NOT NULL,
  file_path VARCHAR(255) NOT NULL
);

CREATE TABLE users (
  id INT AUTO_INCREMENT PRIMARY KEY,
  name VARCHAR(255) NOT NULL,
  email VARCHAR(255) UNIQUE NOT NULL,
  password VARCHAR(255) NOT NULL,
  created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);

-- Insert a test user
INSERT INTO users (name, email, password) VALUES ('Test User', '[email protected]', 'password123');

5. Start the MySQL server

Make sure your local MySQL is running and matches your db.js config.

6. Start the Express server

npm start

Or for development:

npm run dev

πŸ” Authentication

Campus Bridge now includes a full authentication system with:

  • User registration
  • User login/logout
  • Session management
  • Protected routes

For detailed information about the authentication system, see AUTHENTICATION_SETUP.md.

Default Test User

After running npm run init-db, a test user will be created:

Email Confirmation

Campus Bridge now sends email confirmations after successful user login. For setup instructions, see EMAIL_CONFIRMATION_SETUP.md.


πŸ“¬ API Usage (Postman)

Upload PDF

POST http://localhost:3000/upload
Form-data:

  • title β†’ Lecture Title (Text)
  • pdf β†’ Upload PDF file (File)

Get All Resources

GET http://localhost:3000/resources

User Registration

POST http://localhost:3000/api/register

{
  "name": "User Name",
  "email": "[email protected]",
  "password": "userpassword"
}

User Login

POST http://localhost:3000/api/login

{
  "email": "[email protected]",
  "password": "userpassword"
}

🌐 Visit in Browser

http://localhost:8080/

πŸš€ Additions

  • βœ… User login/signup
  • βœ… Tag lectures by subject/branch
  • βœ… YouTube integration
  • βœ… Admin dashboard
  • βœ… Protected routes
  • βœ… Session management
  • βœ… Shakthi Bot AI assistant
  • βœ… Email confirmation after login

🧠 Contributing

Pull requests are welcome. For major changes, please open an issue first to discuss what you would like to change.


πŸͺͺ License

This project is licensed under the MIT License.


πŸ§‘β€πŸ’» Author

Made with 🀍 by Manogna Samayam & Monika Gamakonda Kumar Raja.

Let knowledge flow freely.


πŸ“„ License

This project is licensed under the MIT License - see the LICENSE file for details.

About

A full-fledged Learning Management System built to streamline student-teacher interactions, assignments, and progress tracking - all in one intuitive web app using HTML, CSS, JavaScript Node.js, Express.js and MySQL. By - Manogna Samayam and GK Monika.

Topics

Resources

License

Code of conduct

Stars

Watchers

Forks

Releases

No releases published

Sponsor this project

 

Packages

No packages published

Contributors 3

  •  
  •  
  •