Skip to content

ClassConnect

ClassConnect is a full-stack educational management platform that enables seamless interaction between students and teachers. It offers functionalities such as course creation, assignments, exams, feedback, real-time chat, analytics, and AI-powered assistance.


📑 Table of Contents


🌐 Tech Stack

Frontend (Mobile App):
React Native (TypeScript) with Expo

Backend Services:

  • Users (Authentication & User Management): TypeScript + PostgreSQL
  • Education (Courses, Assignments, Exams, Feedback): TypeScript + PostgreSQL
  • Backoffice (Platform Admin Panel): Python + PostgreSQL
  • Gateway (Intermediary Service): TypeScript

Databases:
PostgreSQL & MongoDB (for Firestore and user management with Firebase)

External Services:

  • Firebase (Authentication, Firestore, Storage)
  • EmailJS (for email notifications)

CI/CD:
GitHub Actions

Containerization & Deployment:
Docker, Docker Compose, Railway (for services and databases)

Real-time & Notifications:
Firebase Realtime Database, FCM, Twilio

Monitoring:
Prometheus + Grafana (configured for Railway)

Logging:
@nestjs/common Logger


🧱 Microservice Architecture

ClassConnect uses a microservices architecture with separate repositories for each service. Each microservice is designed to operate independently, which helps maintain modularity and scalability.

Microservices:

  • Users Service: Handles authentication, user profiles, and roles. Manages both user and admin login and registration.
  • Education Service: Manages courses, modules, assignments, exams, and feedback.
  • Backoffice Service: Admin panel built with React and TypeScript, deployed on Vercel, where administrators can manage the platform.
  • Gateway Service: Acts as an intermediary that redirects requests to the appropriate microservices.
  • Prometheus Monitoring Service: A lightweight Prometheus deployment configured for Railway with persistent storage for monitoring microservices.

Each service follows a layered architecture for clean separation of concerns:

src/
├── controllers/   # HTTP endpoints (REST)
├── services/      # Business logic
├── repositories/  # Data access layer (Prisma)
├── entities/      # Entities, DTOs, interfaces
├── modules/       # NestJS module declarations
└── main.ts        # App entrypoint

🤖 Classy: Your AI Assistant

Classy is our intelligent assistant powered by Gemini. You can chat with Classy directly within the app to ask questions, get explanations, or receive help understanding your corrections and feedback. Classy is designed to support both students and teachers by:

  • Providing real-time answers to educational questions.
  • Explaining grades, corrections, and feedback in simple terms.
  • Assisting with study tips, assignment clarifications, and more.
  • Continuously learning from user interactions to improve its responses and adapt to your needs.

Classy is seamlessly integrated into the platform, making AI-powered educational support accessible anytime.


🧪 Testing & Quality

  • Linting: ESLint is used to enforce code style.
  • Testing: Jest is used for unit testing, and Supertest is used for integration testing.
  • Coverage: We aim for over 75% test coverage.
  • CI/CD: GitHub Actions runs tests and checks on every commit to ensure code quality.

📦 Environment Variables

Each microservice has its own .env file (not committed to the repository). Example:

DATABASE_URL=postgresql://user:pass@localhost:5432/classconnect
JWT_SECRET=mysecretkey
PORT=3001

For the Prometheus Monitoring Service, set the following environment variables in Railway:

  • USERS_DOMAIN: Users service metrics endpoint
  • EDUCATION_DOMAIN: Education service metrics endpoint
  • ADMINS_DOMAIN: Admin dashboard metrics endpoint

📂 Infrastructure

The infra/ folder contains everything related to infrastructure:

  • docker-compose.yml: Runs PostgreSQL, MongoDB, and optionally microservices.
  • env/: Example .env templates for each service.

The entire infrastructure can be managed via Railway for services and databases. Docker Compose files are provided for local service setup.


🔐 Security

  • Authentication: JWT-based authentication for user identity (via users service).
  • Authorization: Role-based access control (RBAC).
  • Firebase: Used for authentication and Firestore (for user data and storage, including images and videos).
  • Logging: Pino is used across all microservices for consistent and structured logging.
  • Secure File Storage: Firebase Storage and AWS S3 are used to handle file uploads securely.

🧠 Authors

Made with ❤️ by Marcos, Manuel, Sol, and Lorenzo
For the Software Engineering II course – 2025 (UBA)


📄 License

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


📌 Note

This platform incorporates various user stories across different functional areas, including:

Required User Stories:

Users:

  • User registration and login (via email, password, and federated identity providers).
  • Profile management: view and edit profiles, view other users' profiles.

Courses & Classes:

  • Creation, management, and enrollment in courses and modules.
  • Assignment creation and exam management.

Assignments & Exams:

  • Students can complete assignments and take exams.
  • Teachers can view and grade assignments.

Feedback & Grades:

  • AI-generated feedback summaries.
  • Display grades and feedback for students and teachers.

Communication & Notifications:

  • Push notifications and email for communication and updates.

Metrics & Analytics:

  • Student performance tracking and statistical analysis.

Platform Administration:

  • Admins can manage users and platform configuration.
  • Admin panel for managing platform-wide settings.

All these features are linked and managed through various services that work together seamlessly.


📎 Diagrams & Analysis

Popular repositories Loading

  1. classconnect-base-service classconnect-base-service Public template

    Base template for ClassConnect microservices (NestJS + Prisma + CI/CD)

    TypeScript

  2. classconnect-users-service classconnect-users-service Public

    TypeScript

  3. classconnect-education-service classconnect-education-service Public

    TypeScript

  4. classconnect-gateway-service classconnect-gateway-service Public

    TypeScript

  5. .github .github Public

    Official README of the IS2-Class-Connect organization: project overview, objectives, and team documentation.

  6. classconnect-mobile classconnect-mobile Public

    Mobile frontend for the ClassConnect application, built with React Native and Expo. This app is designed for students and teachers, allowing them to manage classes, assignments, exams, messaging, a…

    TypeScript

Repositories

Showing 8 of 8 repositories

Top languages

Loading…

Most used topics

Loading…