Skip to main content

Rainfall-Learning - Coding Tutoring Platform

Making coding education more engaging, affordable, and effective through personalized online tutoring with a custom curriculum.

What is Rainfall-Learning?

Rainfall-Learning is an online coding tutoring platform designed specifically for high school and middle school students. We provide one-on-one Python programming lessons with a structured curriculum, all delivered through a custom-built platform that combines live tutoring, an embedded IDE, curriculum content, a session engine, and progress tracking in one seamless experience.

Our Goal

To become the premier option for youth programming lessons by combining:

  • The scalability of self-paced platforms
  • The personal attention of tutoring marketplaces
  • The structure and convenience of specialized platforms
  • Affordable pricing, significantly below market average

Why Rainfall-Learning?

The Problem

Many high school students are eager to learn programming, yet traditional options have significant limitations:

  • Classroom courses are often generic and don't provide personal attention
  • Self-paced platforms lack live guidance and feedback
  • Private tutoring can be costly ($75+/hour) or inconvenient
  • The market is flooded with low-quality teaching materials that are overwhelming for beginners
  • Good resources exist but are hard to find and require significant dedication

Our Solution

One-on-one coding lessons with a structured Python curriculum focused on beginners and real projects. Students get:

  • Personal attention from vetted tutors
  • Structured curriculum tailored for high schoolers
  • All-in-one platform: scheduling, video calling, programming in the browser, and progress tracking
  • Project-based learning culminating in a final capstone project

Documentation

📚 Comprehensive documentation is available at: https://aryan0102.github.io/Rainfall-Learning/

The documentation site includes:

  • Architecture and system design
  • API reference with examples
  • Development guides and setup instructions
  • Team role guides
  • Shared types and interfaces
  • Best practices and coding standards

About the Codebase

Tech Stack

  • Frontend: React with Vite, Material-UI (MUI v7), CodeMirror
  • Backend: Node.js with Express, Prisma, PostgreSQL
  • State Management: Zustand
  • Real-time Collaboration: Yjs (planned)
  • Testing: Vitest
  • Documentation: Docusaurus
  • Code Quality: ESLint, Prettier, Husky

Monorepo Structure

This project uses an npm workspaces monorepo structure:

Rainfall-Learning/
├── packages/
│ ├── backend/ # Express/Node.js API server
│ ├── frontend/ # React/Vite web application
│ ├── shared/ # Shared TypeScript types and utilities
├── documentation/ # Docusaurus documentation site

Key Features (Planned)

  1. Automatic Scheduling - Intelligent booking system with timezone support
  2. Embedded Web-Based IDE - Collaborative code editor with real-time synchronization
  3. Structured Python Curriculum - Modular learning path with progress tracking
  4. Integrated Video & Audio - Seamless video chat integration
  5. Payment System - Stripe integration for secure payments
  6. Progress Tracking - Visual progress indicators and session notes

Development Workflow

Most operations can be performed using npm scripts from the root:

# Start development (backend + frontend)
npm run dev

# Run tests
npm run test

# Format code
npm run format

# Type checking
npm run typecheck

# Build for production
npm run build

For Docker-based development:

# Start all services (database, backend, frontend)
npm run docker:start

# View logs
npm run docker:logs

# Stop services
npm run docker:stop

Codebase Patterns

  • Backend Patterns: Query args (Prisma select constants), validation functions, layered architecture (routes → controllers → services → transformers)
  • Frontend Patterns: Custom React hooks using react query, Zustand stores, Material-UI components
  • Error Handling: Custom error classes (HttpException, SchedulingError, AuthError), error middleware
  • Prisma Patterns: Query optimization, pagination utilities, data transformation
  • Testing Patterns: Vitest setup, test organization, Docker-based testing
  • API Response Format: Consistent { success: true, data: ... } format

Project Organization

The project is organized into specialized subteams:

  • Scheduling Subteam: Automatic scheduling logic and calendar integration
  • Content Interface Subteam: IDE and curriculum interface development
  • Curriculum Subteam: Instructional design and Python learning path content
  • Payments & Internal Tooling Subteam: Payment processing and admin/tutor dashboards

Getting Started

Prerequisites

  • Node.js >= 18.0.0
  • npm >= 9.0.0
  • Docker (for containerized development)
  • PostgreSQL (or use Docker)

Quick Start

  1. Clone the repository

    git clone https://github.com/Aryan0102/Rainfall-Learning.git
    cd Rainfall-Learning
  2. Install dependencies

    npm install
  3. Set up environment variables

    touch .env  # ENV is avaliable to developers on Discord
  4. Start development

    # Using Docker
    npm run docker:start
  5. Access the application

For detailed setup instructions, see the documentation site.

Contributing

This is an internal project with a structured development team. All code changes go through:

  • Pre-commit hooks (linting, formatting)
  • Code review by tech leads
  • Automated testing via GitHub Actions

See the documentation for:

Project Status

🚧 Active Development - Building towards a working prototype

The platform is currently under active development with a goal of launching a full working prototype. Key features are being developed in parallel by specialized subteams.

License

Private project - All rights reserved

Contact

For questions or support, reach out to the tech leads or check the documentation site.


Built with ❤️ by the Rainfall-Learning team