EasyLoops React is a comprehensive interactive programming education platform built with Next.js and React. It provides hands-on learning experiences for programmers of all levels, covering over 200 programming concepts from basic variable declarations to advanced algorithms and system programming.
π Live Demo: https://easyloops.web.app
Our mission is to democratize programming education by making it:
- Accessible: Free and open-source for everyone
- Interactive: Learn by doing with real code examples
- Comprehensive: From absolute beginners to advanced developers
- Modern: Built with cutting-edge web technologies
- Community-Driven: Powered by contributions from developers worldwide
In a world where programming education is often expensive, fragmented, or inaccessible, EasyLoops bridges the gap by:
- Breaking Down Barriers: Completely free, no paywalls or premium features
- Progressive Learning: Structured curriculum that builds knowledge step-by-step
- Real-World Application: Practical exercises that mirror industry scenarios
- Multi-Language Support: Learn concepts that apply across programming languages
- Community-Powered: Continuously improved by developers for developers
- 200+ Programming Exercises: Comprehensive coverage from basics to advanced topics
- Interactive Code Editor: Built-in Monaco Editor with syntax highlighting and IntelliSense
- Multi-Language Support: Python (local execution), Go (API execution), JavaScript, Java, C++, and more
- Real-time Code Execution: Execute code with test cases and instant feedback
- Authentication: Firebase-based authentication for Go language access
- Progressive Learning Path: Structured curriculum from beginner to expert level
- Responsive Design: Works seamlessly across desktop, tablet, and mobile devices
- Test-Driven Learning: Each exercise includes comprehensive test cases
- Hint System: Contextual hints to guide learning without giving away solutions
- Progress Tracking: Monitor your learning journey and achievements
- Community Features: Share solutions and learn from others
- Test Coverage: Comprehensive testing with Jest and Playwright
- Variable declarations and data types
- Operators (arithmetic, comparison, logical)
- Control structures (if/else, loops, switch)
- Functions and scope
- Arrays and strings
- Basic I/O operations
- Object-oriented programming
- Data structures (stacks, queues, linked lists, trees)
- File I/O operations and error handling
- Exception handling and debugging
- Regular expressions and pattern matching
- Memory management concepts
- Advanced algorithms (sorting, searching, graph traversal)
- Design patterns (Singleton, Factory, Observer, etc.)
- Concurrency and threading
- System programming and low-level operations
- Performance optimization and profiling
- Database integration and network programming
- Functional programming concepts
- Distributed systems patterns
- Understand variables, data types, and constants
- Perform type conversions and basic input/output
- Use arithmetic, comparison, and logical operations
- Control program flow with conditionals and loops
- Manipulate arrays and strings, including multi-dimensional arrays
- Define and invoke functions with parameters and return values
- Apply recursion to solve problems
- Handle errors with try/catch, validation, and propagation
- Read from and write to files (CSV, JSON, line-by-line processing)
- Implement basic data structures (lists, stacks, queues, linked lists, trees)
- Utilize functional constructs such as lambdas, closures, and generators
- Build simple object-oriented designs with classes and inheritance
- Work with regular expressions and pattern matching
- Implement common search and sorting algorithms, dynamic programming, and greedy techniques
- Perform basic networking tasks including HTTP requests and API consumption
- Frontend: Next.js 15, React 19, TypeScript
- Styling: Tailwind CSS 4
- Code Editor: Monaco Editor
- Testing: Jest, React Testing Library, Playwright
- Authentication: Firebase
- Code Execution: Pyodide (Python), Custom API (Go)
- Deployment: Firebase Hosting, Vercel
- Package Manager: npm
- Development Tools: ESLint, Prettier, Turbopack
- Node.js 20.x or higher
- npm or yarn
- Git
-
Fork the repository (see Contributing Guidelines)
-
Clone your fork:
git clone https://github.com/your-username/easyloops-react.git cd easyloops-react
-
Install dependencies:
npm install # or yarn install
-
Set up environment variables:
cp .env.example .env.local # Edit .env.local with your configuration
-
Start the development server:
npm run dev # or yarn dev
-
Open your browser and navigate to http://localhost:3000
- Browse Topics: Navigate through the organized learning path
- Practice Coding: Use the interactive code editor to solve problems
- Test Solutions: Run your code and see instant feedback
- Track Progress: Monitor your learning journey
- Contribute: Add new exercises or improve existing ones
Want to contribute 10x faster? EasyLoops embraces modern AI development tools!
- Create exercises in 15 minutes instead of 2-3 hours
- Generate test cases in 5 minutes instead of 1-2 hours
- Write documentation in 5 minutes instead of 1 hour
- Cursor IDE (Recommended for beginners)
- GitHub Copilot (Perfect for VS Code users)
- Windsurf (Collaborative AI development)
- ChatGPT/Claude (Planning and content generation)
π Complete AI Development Guide β
Even if you've never used AI for coding before, our step-by-step guide will have you contributing in minutes!
- Framework: Jest with React Testing Library
- Coverage: 80% threshold for branches, functions, lines, and statements
- Location:
src/**/__tests__/
andsrc/**/*.test.{ts,tsx}
- Framework: Playwright
- Location:
e2e/
directory - Browsers: Chromium, Firefox, WebKit
# Quick start with Makefile
make help # Show all available commands
# Unit and integration tests
make test
# E2E tests by priority
make test-e2e-p0 # Critical tests only
make test-e2e-p1 # Important tests only
make test-e2e-p2 # Nice-to-have tests only
make test-e2e-pr # P0 + P1 tests (for PR validation)
make test-e2e # All e2e tests
# Complete test suites
make test-all # Lint + typecheck + unit + e2e
make ci-test # CI pipeline tests (lint + typecheck + unit)
# Development
make dev # Start development server
make clean # Clean build artifacts
π Priority Testing Guide β
npm run dev
- Start development server with Turbopacknpm run build
- Build for productionnpm run start
- Start production server
npm test
- Run unit tests with Jestnpm run test:watch
- Run tests in watch modenpm run test:coverage
- Run tests with coverage reportnpm run test:e2e
- Run E2E tests with Playwrightnpm run test:e2e:ui
- Run E2E tests with UInpm run test:all
- Run all tests (lint, typecheck, unit, e2e)
npm run lint
- Run ESLintnpm run typecheck
- Run TypeScript type checkingnpm run ci-local
- Run full CI pipeline locally
npm run deploy:firebase
- Deploy to Firebasenpm run deploy:firebase:full
- Build and deploy to Firebase
The project uses Husky for Git hooks:
- Pre-commit: Runs lint-staged, type checking, and tests
- Commit-msg: Validates commit message format (conventional commits)
To skip hooks temporarily:
SKIP_HOOKS=1 git commit -m "your message"
This project follows Conventional Commits:
type(scope): subject
Examples:
- feat(auth): add login functionality
- fix(api): handle null response
- docs: update README
- test: add unit tests for service layer
Types: build
, chore
, ci
, docs
, feat
, fix
, perf
, refactor
, revert
, style
, test
easyloops-react/
βββ src/
β βββ app/ # Next.js app router
β βββ components/ # Reusable React components
β β βββ ui/ # Basic UI components
β β βββ exercises/ # Exercise-specific components
β β βββ editor/ # Code editor components
β β βββ __tests__/ # Component tests
β β βββ ...
β βββ hooks/ # Custom React hooks
β β βββ __tests__/ # Hook tests
β β βββ ...
β βββ services/ # Business logic services
β β βββ __tests__/ # Service tests
β β βββ ...
β βββ types/ # TypeScript type definitions
β βββ utils/ # Utility functions
β βββ constants/ # Application constants
βββ public/
β βββ questions/ # Programming exercises (200+ topics)
β β βββ 01-variable-declaration/
β β βββ 02-data-types/
β β βββ ... # Organized by difficulty and topic
β βββ testcases/ # Test case files
βββ scripts/ # Build and utility scripts
βββ docs/ # Documentation
βββ .github/ # GitHub templates and workflows
βββ README.md # You are here!
The project is configured for easy deployment on multiple platforms:
npm run build
firebase deploy
npm run build
# Connect to Vercel for automatic deployments
docker build -t easyloops-react .
docker run -p 3000:3000 easyloops-react
The project includes a Tauri configuration for a native desktop build.
-
Install Rust and Cargo (Rust's package manager):
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y source "$HOME/.cargo/env"
-
Verify installation:
rustc --version cargo --version rustup --version
-
Install Xcode Command Line Tools (macOS only):
xcode-select --install
npm run tauri:dev # run the desktop app in development
npm run tauri:build # build a `.app` bundle
Note: The first run may take several minutes as it downloads and compiles Rust dependencies.
Required environment variables:
NEXT_PUBLIC_FIREBASE_API_KEY
NEXT_PUBLIC_FIREBASE_AUTH_DOMAIN
NEXT_PUBLIC_FIREBASE_PROJECT_ID
NEXT_PUBLIC_FIREBASE_STORAGE_BUCKET
NEXT_PUBLIC_FIREBASE_MESSAGING_SENDER_ID
NEXT_PUBLIC_FIREBASE_APP_ID
We welcome contributions from developers of all skill levels! Whether you're fixing bugs, adding new features, improving documentation, or creating new programming exercises, your contributions are valuable.
- Read our Contributing Guidelines - Essential reading for all contributors
- Check out Good First Issues - Perfect for new contributors
- Join our Discussions - Connect with the community
- π Bug Reports: Found a bug? Report it in our Issues
- π‘ Feature Requests: Have an idea? Share it with us
- π Documentation: Help improve our docs
- π§ Code Contributions: Fix bugs or add new features
- π Educational Content: Create new programming exercises
- π Translations: Help make the platform accessible globally
- π€ AI-Assisted Development: Use AI tools to contribute 10x faster!
- GitHub Discussions: Join the conversation
- Discord: Join our Discord server (Coming soon)
- Twitter: @EasyLoopsReact (Coming soon)
This project is licensed under the GNU Affero General Public License v3.0 - see the LICENSE file for details.
- Thanks to all our contributors
- Inspired by the open-source education community
- Built with amazing tools from the React and Next.js ecosystems
- Bug Reports: GitHub Issues
- Feature Requests: GitHub Discussions
- Documentation: Project Wiki
Made with β€οΈ by the EasyLoops community