Skip to content

chotika-patt/SmartClassrooms

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

78 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Smart Classroom Q&A and Engagement Tracking System

Empowering students to ask questions and instructors to track participation in real time


📌 Overview

Smart Classroom Q&A and Engagement Tracking System is a Smart Classroom system that solves a common problem in large lectures — students are often too shy or unsure to ask questions in front of their peers, leaving instructors unaware of who is struggling.

This platform lets students submit questions anonymously through the app, while instructors can answer them, monitor participation in real time, and review engagement reports after each class session.


✨ Features

For Students

  • 🔐 Authentication — Secure login via Amazon Cognito
  • 🏫 Join Class — Enter a class using a Course Code
  • 💬 Submit Questions — Ask questions without speaking in front of the class
  • 📬 Status Tracking — See whether your question is pending or answered
  • 🔔 Email Notifications — Get notified when an instructor replies

For Instructors

  • 🏗️ Class Management — Create classes and generate Course Codes
  • 📋 Question Feed — View and respond to student questions
  • 📊 Real-time Dashboard — Monitor participation as it happens
  • 📈 Post-class Reports — Review engagement summaries after each session

🛠️ Tech Stack

Layer Technology Purpose
Frontend Next.js + TypeScript Web application for students and instructors
Styling Tailwind CSS Utility-first CSS framework
Frontend Hosting AWS Amplify Deploy and host the frontend
Authentication Amazon Cognito Login and role-based token management
Backend Python FastAPI REST API + WebSocket API
Backend Runtime Amazon EC2 (t3.micro) Host the backend server
Containerization Docker Package backend as a container
Database Amazon RDS for MySQL Primary relational database

🚀 Quick Start

Clone Repository

git clone https://github.com/Gummy-168/CS232-Project-AWS-07.git
cd CS232-Project-AWS-07

Frontend

cd frontend
npm install
cp .env.example .env.local
npm run dev   # http://localhost:3000

Backend

cd backend
cp .env.example .env
docker build -t classq-backend .
docker run -p 5000:5000 --env-file .env classq-backend   # http://localhost:5000

Environment Variables

frontend/.env.local

NEXT_PUBLIC_API_URL=http://localhost:5000/api
NEXT_PUBLIC_WS_URL=ws://localhost:5000
NEXT_PUBLIC_COGNITO_USER_POOL_ID=your_user_pool_id
NEXT_PUBLIC_COGNITO_CLIENT_ID=your_client_id
NEXT_PUBLIC_COGNITO_REGION=ap-southeast-1

backend/.env

PORT=5000
DATABASE_URL=mysql://user:password@localhost:3306/classq_dev
COGNITO_USER_POOL_ID=your_user_pool_id
COGNITO_REGION=ap-southeast-1
SES_SENDER_EMAIL=noreply@yourdomain.com
AWS_REGION=ap-southeast-1

📁 Project Structure

CS232-Project-AWS-07/
├── frontend/                  # Next.js Frontend
│   ├── app/                   # Pages (App Router)
│   └── components/            # Reusable UI components
├── backend/                   # FastAPI Backend
│   ├── routes/                # API endpoints
│   ├── models/                # SQLAlchemy ORM models
│   ├── schemas/               # Pydantic validation
│   ├── app.py                 # Entry point
│   └── Dockerfile
├── docs/                      # Documentation
└── .github/workflows/         # CI/CD pipelines

🔌 API Endpoints

GET|POST        /api/questions
GET|PUT|DELETE  /api/questions/{id}
PATCH           /api/questions/{id}/status

GET|POST        /api/classes
GET             /api/classes/{id}/questions

GET  /api/analytics/summary
GET  /api/analytics/participation

POST /api/auth/register
POST /api/auth/login
POST /api/auth/refresh

Full interactive docs available at /docs (Swagger) or /redoc.


📚 Documents


🔗 Links


See full roles and responsibilities in CONTRIBUTING.md


🤝 Contributing

  1. Fork the repository
  2. Create a feature branch — git checkout -b feature/amazing-feature
  3. Commit your changes — git commit -m 'Add amazing feature'
  4. Pushgit push origin feature/amazing-feature
  5. Open a Pull Request

Follow PEP 8 for Python, use TypeScript for frontend, and write tests for new features.


📜 License

This project is licensed under the MIT License — free to use, modify, and distribute.


Built with ❤️ for smarter classrooms
Making participation easier, one question at a time

Back to top ↑

About

Smart Classroom Q&A and Engagement Tracking System — Empowering students to ask questions and instructors to track participation in real time

Topics

Resources

Stars

Watchers

Forks

Packages

 
 
 

Contributors

Languages

  • TypeScript 69.9%
  • Python 30.0%
  • Other 0.1%