E-Class is a web-based Learning Management System built with Flask and SQLite. It supports two user roles: students and instructors. Students can view announcements, download course materials, submit assignments, take quizzes, and check their grades. Instructors get a control panel to manage all of that from one place: posting announcements, uploading materials, creating assignments with deadlines, building quizzes, and reviewing student submissions and scores. Both roles share access to a discussion forum. Built as a university project for the Pedagogy course at the University of Piraeus.
- Backend: Python (Flask)
- Database: SQLite
- Frontend: HTML, Jinja2 Templates, CSS
- Build Tool: Python / pip
- Role-based login for students and instructors.
- Student dashboard with announcements, course materials, assignments, quizzes, and grades.
- Instructor control panel with tabs for announcements, materials, assignments, quizzes, and grade overview.
- File upload support for course materials and assignment submissions (PDF, ZIP).
- Assignment deadline enforcement on both frontend and backend.
- Multiple choice quiz creation with automatic grading.
- Grade tracking: students see their own scores, instructors see all.
- Discussion forum accessible to all users.
Note: The project content is written in Greek. The text shown in the screenshots may have been auto-translated by the browser, so some labels or messages might not read perfectly in English. The layout and functionality come through regardless.
![]() Login |
![]() Student Dashboard |
![]() Discussion Forum |
![]() Instructor Panel - Announcements |
![]() Instructor Panel - Materials |
![]() Instructor Panel - Assignments |
![]() Instructor Panel - Quiz Creation |
![]() Instructor Panel - Grades |
- Clone the repository:
git clone https://github.com/OzzYGreco/E-Class-Learning-Management-System.git - Navigate to the project directory:
cd E-Class-Learning-Management-System - Install Flask:
pip install flask - Run the application:
python app.py - Open your browser at:
http://127.0.0.1:5000
The database initializes automatically on first run with demo accounts.
- Demo Credentials:
- Instructor:
pantelis/1234 - Student:
aristos/1234 - Student:
kwstas/1234 - Student:
vasilis/1234
- Instructor:
- Example Code (Role-Based Routing):
@app.route('/instructor', methods=['GET', 'POST']) def instructor_dashboard(): if session.get('role') != 'instructor': return redirect(url_for('index'))
- Example Code (Deadline Enforcement):
today = str(datetime.date.today()) if assign['deadline'] and today > assign['deadline']: flash("Deadline has passed!") return redirect(url_for('student_dashboard'))
Contributions are welcome! To contribute:
- Fork the repository.
- Create a new branch (
git checkout -b feature-branch). - Commit your changes (
git commit -m 'Add new feature'). - Push to the branch (
git push origin feature-branch). - Open a pull request.
MIT License







