Skip to content

SummitAnthony/CSE370-Project

Repository files navigation

Course Management System

CI License: MIT PHP MySQL Docker

A web-based course management system with separate teacher and student portals — course CRUD, assignment/quiz uploads, and grading — built on PHP and MySQL. Originally developed for BRAC University's CSE370 (Database Systems) course, then modernized: SQL-injection-free prepared statements everywhere, bcrypt password hashing, a one-command Docker setup, and CI that guards it all.

Welcome page

Quick start

git clone https://github.com/SummitAnthony/CSE370-Project.git
cd CSE370-Project
docker compose up

Open http://localhost:8080/welcome.php — the database schema and demo data import automatically.

Demo account Email Password
Teacher [email protected] password123
Student [email protected] password123
Running without Docker (XAMPP/WAMP)
  1. Import database/370project.sql into MySQL.
  2. Serve the public/ directory (e.g. point your Apache docroot at it).
  3. Configure the DB connection via environment variables (see .env.example) — defaults assume root with no password on localhost.

Features

Teacher portal Student portal
Create, view, update, and delete courses Sign up and manage a profile
Upload assignment and quiz PDFs per course Select courses
Grade each student's three courses View the gradesheet for all selected courses
Download assignment and quiz files

Screenshots

Student login Teacher dashboard
Student login Teacher dashboard
Student home Gradesheet
Student home Gradesheet

Database design

The schema (six tables — course catalog, two account tables, course selections/grades, and per-course assignment and quiz uploads) is documented with a full entity-relationship diagram in docs/er-diagram.md.

Architecture

public/            # web docroot — one PHP page per screen/action
  css/             # stylesheets
  assignments/     # uploaded assignment PDFs (runtime)
  uploads/         # uploaded quiz PDFs (runtime)
includes/db.php    # single DB bootstrap, configured via environment variables
database/          # MySQL schema + seed data (auto-imported by Docker)
.github/workflows/ # CI: PHP lint + SQL-injection gate

Security highlights

  • Prepared statements everywhere — every query touching user input uses bound parameters; CI fails any commit that interpolates request input into a SQL string.
  • bcrypt password hashingpassword_hash() / password_verify(), with session_regenerate_id() on login.
  • Environment-based configuration — no credentials hardcoded in the codebase.

Credits

Built by Summit Anthony and Ahanaf Tanvir. MIT licensed.

About

Course management system for teachers and students — PHP 8 / MySQL, Dockerized, CI-guarded. BRACU CSE370 project, modernized.

Topics

Resources

Stars

Watchers

Forks

Releases

Packages

Contributors

Languages