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)
- Automatic Scheduling - Intelligent booking system with timezone support
- Embedded Web-Based IDE - Collaborative code editor with real-time synchronization
- Structured Python Curriculum - Modular learning path with progress tracking
- Integrated Video & Audio - Seamless video chat integration
- Payment System - Stripe integration for secure payments
- 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
-
Clone the repository
git clone https://github.com/Aryan0102/Rainfall-Learning.git
cd Rainfall-Learning -
Install dependencies
npm install -
Set up environment variables
touch .env # ENV is avaliable to developers on Discord -
Start development
# Using Docker
npm run docker:start -
Access the application
- Frontend: http://localhost:5173
- Backend API: http://localhost:3000
- Documentation: Run
npm run docs:displayin the documentation folder
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