Skip to content
suduolabsPublic

About

Better way to manage your academics.

Topics

Resources

Code of conduct

Contributing

Stars

99 stars

Watchers

8 watching

Forks

Repository files navigation

alt text

ClassPro

Better way to manage your academics.

View, predict, and strategize your success.

This monorepo contains both the frontend (Next.js) and backend (Go) for the ClassPro application.


Monorepo Structure

classpro/
├── frontend/            # Next.js frontend application
├── backend/             # Go backend API (git submodule: rahuletto/goscraper)
├── .env.example         # Environment variables template
├── docker-compose.yml   # Runs both services together
├── Makefile             # Shortcuts around docker compose
├── netlify.toml         # Frontend deploy config and short-link redirects
├── package.json
└── README.md

Prerequisites

  • Bun (>=1.2.21)
  • Go (>=1.23.0)
  • Docker (optional, for containerized deployment)

Setup

  1. Clone the repository:

    git clone --recurse-submodules https://github.com/rahuletto/classpro
    cd classpro
  2. Install dependencies:

    # Install the run script
    bun install
    
    # Install all dependencies
    bun run install:all
  3. Environment Setup: Copy from .env.example and paste it in the root directory

# Shared Configuration
SUPABASE_URL="your_supabase_url"
SUPABASE_KEY="your_supabase_anon_key"
VALIDATION_KEY="your_validation_key"
BACKEND_URL="http://localhost:8080"

# Backend Specific
ENCRYPTION_KEY="your_encryption_key"
URL="http://localhost:3000,http://localhost:0243,https://class-pro.vercel.app"

# Frontend Specific (autofilled from the variables above)
NEXT_PUBLIC_URL="${BACKEND_URL}"
NEXT_PUBLIC_SUPABASE_URL="${SUPABASE_URL}"
NEXT_PUBLIC_SERVICE_KEY="${SUPABASE_KEY}"
NEXT_PUBLIC_VALIDATION_KEY="${VALIDATION_KEY}"

PORT="8080"
HOST="localhost"
NODE_ENV="development"
GO_ENV="development"

URL is the backend's CORS allowlist -- every origin the frontend is served from has to be in it.

Tip

Generate secure keys for VALIDATION_KEY and ENCRYPTION_KEY.

For Linux, macOS, or Windows with Git Bash/WSL:

openssl rand -hex 32

For Windows with PowerShell:

[BitConverter]::ToString((New-Object Security.Cryptography.RNGCryptoServiceProvider).GetBytes(32)).Replace("-", "").ToLower()

Development

Run both services:

# Frontend (http://localhost:0243)
bun run dev:frontend

# Backend (http://localhost:8080)
bun run dev:backend

# Run the app as a whole
bun run dev

Production Build

# Build both services as a whole
bun run build

# Build individually
bun run build:frontend
bun run build:backend

Docker Deployment

# Copy .env into both workspaces first. NEXT_PUBLIC_* values are inlined into
# the client bundle while the frontend image builds, so changing them later
# needs a rebuild rather than a restart.
bun run sync:env

# Build and run with Docker Compose
bun run docker:build
bun run docker:up

# Stop services
bun run docker:down

Warning

We will NOT take account for anything caused by your self-hosted instance

Quality checks

After installing dependencies, run these checks from the repository root:

bun run test
bun run typecheck
bun run lint
bun run build:frontend

Supabase credentials are optional for building the frontend. Saving optional hours returns HTTP 503 until persistence is configured.

Why Choose ClassPro?

  • Mobile-First Approach: Built for mobile devices, Optimized for desktop and tablet devices.
  • Open Source: Transparent and community-driven.
  • Massive Community: Used by 16k+ students every month.
  • Timetable Generation: Creates a full timetable based on your class schedule.
  • Attendance Prediction: Predicts the percent based on your expected leave days
  • Safe and Secure: Built with privacy and security in mind.
  • No Bloat: Streamlined and efficient, with no unnecessary bloatware.

The Idea Behind ClassPro

This project was intended to show the timetable and attendance. but it grew and scaled to a full-on replacement to SRM Academia. We made sure to use the web-standards and the best-in-class approaches to make sure our service is fast, easy-to-use and easy on eyes.

Contributors

All Contributors

Rahul Marban
Rahul Marban

💻 🎨 🐛 ️️️️♿️ 🚇 🚧 📆 👀 🛡️ 🔧
Srivishal Sivasubramanian
Srivishal Sivasubramanian

💻 🐛 🚧 👀
Debaditya Malakar
Debaditya Malakar

🎨
Aakarsh Kumar
Aakarsh Kumar

💻 🐛
HARSHAN A M
HARSHAN A M

🔣

You are free to:

  • Share: Copy and redistribute the material in any medium or format.

Under the following terms:

  • Attribution: You must give appropriate credit, provide a link to the license, and indicate if changes were made. You may do so in any reasonable manner, but not in any way that suggests the licensor endorses you or your use.
  • NonCommercial: You may not use the material for commercial purposes.
  • NoDerivatives: If you remix, transform, or build upon the material, you may not distribute the modified material.

About

Better way to manage your academics.

Topics

Resources

Code of conduct

Contributing

Stars

99 stars

Watchers

8 watching

Forks

Used by

Contributors

Languages