ModuCoda - Interactive Learning Environments
Making interactive learning accessible to everyone, everywhere. π

Note: This project is still in early development. Significant changes to the code may occur frequently without notice.
ModuCoda is an open-source, cross-platform interactive learning environment that provides the frontend functionality similar to KataCoda and KillerCoda. It serves as a YARP-based reverse proxy that integrates with external services like ttyd (web terminal) and VS Code tunnel to create seamless interactive tutorials, coding exercises, and hands-on learning experiences across Windows, macOS, and Linux platforms.

Single-Course Container Image
μ΄ μ ν리μΌμ΄μ
μ νλμ Docker μ΄λ―Έμ§ μμ νλμ νμ΅ μ½μ€λ₯Ό ν¬ν¨νλ μ¬μ© ν¨ν΄μ μ§μν©λλ€. κΈ°λ³Έμ μΌλ‘ src/ModuCoda/wwwroot/content/index.json
μ΄ μ‘΄μ¬νλ©΄ /instructions
νμ΄μ§κ° ν΄λΉ μ½μ€λ₯Ό μλ λ‘λνμ¬ λ¨κ³λ³ μλ΄λ₯Ό μ 곡ν©λλ€.
- μ½μ€ κ΅μ²΄: μ΄λ―Έμ§ λΉλ μ
wwwroot/content
ν΄λμ νμΌλ€μ μνλ μ½μ€λ‘ κ΅μ²΄νμΈμ.
- λ€μ€ μ½μ€κ° νμ μλ€λ©΄ 쿼리 νλΌλ―Έν° μμ΄
/instructions
λ§ μ κ·Όνλ©΄ λ©λλ€.
π Features
- YARP Reverse Proxy: High-performance reverse proxy using Microsoftβs YARP (Yet Another Reverse Proxy)
- Service Integration: Seamlessly integrates with ttyd and VS Code tunnel services
- Cross-Platform Support: Runs natively on Windows, macOS, and Linux
- Interactive Terminal: Web-based terminal access via ttyd integration
- Code Editor Integration: VS Code tunnel integration for full IDE experience
- Docker Support: Container-ready deployment with Docker
- Responsive Design: Modern, mobile-friendly web interface with resizable panels
- Real-time Execution: Execute commands and see results instantly through integrated services
- Educational Templates: Pre-built interactive learning content
ποΈ Architecture
ModuCoda acts as a central hub that proxies requests to various backend services:
- Core: ASP.NET Core with YARP reverse proxy
- Terminal Service: ttyd (external service) for web-based terminal access
- Code Editor: VS Code tunnel (external service) for development environment
- Frontend: Modern HTML5/CSS3/JavaScript with responsive layout
- Health Checks: Built-in health monitoring for all integrated services
- Containerization: Docker support for easy deployment
π§ Prerequisites
π― Usage
Quick Start
- Start Backend Services: Run
launch_backend.cmd
to start ttyd and VS Code tunnel
- Launch ModuCoda: Run
dotnet run
in the ModuCoda directory
- Open Browser: Navigate to
http://localhost:5000
- Start Learning: Follow the interactive instructions in the left panel
Interface Overview
- Left Panel: Interactive learning instructions and tutorials
- Right Panel: Tabbed interface with:
- Terminal Tab: Web-based terminal via ttyd
- Code Editor Tab: Full VS Code experience via tunnel
- Resizable Layout: Drag the divider to adjust panel sizes
- Responsive Design: Adapts to different screen sizes
Supported Learning Scenario Examples
- Linux/Unix Command Line: Basic to advanced shell commands
- Programming Languages: Python, JavaScript, C#, and more
- DevOps Tools: Docker, Kubernetes, CI/CD pipelines
- System Administration: File management, process control, networking
- Development Workflows: Git, package managers, build tools
π οΈ Configuration
The application can be configured through:
- appsettings.json: Basic application settings
- Environment Variables: Runtime configuration
- Docker Environment: Container-specific settings
Service Configuration
- ttyd
- For Windows:
ttyd --interface 127.0.0.1 --port 7681 --cwd %SYSTEMDRIVE%\ --writable %COMSPEC%
- In General:
ttyd --interface 127.0.0.1 --port 7681 --writable /bin/bash
- VS Code
- In General:
code-tunnel.exe serve-web --host 127.0.0.1 --port 8000 --without-connection-token --accept-server-license-terms --server-base-path vscode
π€ Contributing
We welcome contributions from the community! Hereβs how you can help:
- Fork the repository
- Create a feature branch:
git checkout -b feature/amazing-feature
- Make your changes and add tests if applicable
- Commit your changes:
git commit -m 'Add amazing feature'
- Push to the branch:
git push origin feature/amazing-feature
- Open a Pull Request
Development Guidelines
- Follow C# coding conventions
- Add unit tests for new features
- Update documentation as needed
- Ensure cross-platform compatibility
- Test proxy configurations thoroughly
π Roadmap
π License
ModuCoda is available under a dual licensing model:
Basically, this project is licensed under the GNU Affero General Public License v3.0 (AGPL-3.0) for open source use - see the LICENSE file for details.
For commercial deployments that require proprietary modifications or cannot comply with AGPL-3.0 requirements, a commercial license is available - see the LICENSE-COMMERCIAL file for details.
Use Case |
Recommended License |
Open source projects |
AGPL-3.0 |
Educational/Research use |
AGPL-3.0 |
Internal enterprise use with source sharing |
AGPL-3.0 |
Commercial SaaS without source disclosure |
Commercial License |
Integration into proprietary software |
Commercial License |
Redistribution in commercial products |
Commercial License |
Getting a Commercial License
For commercial licensing inquiries, please contact the project maintainers:
We offer flexible commercial licensing terms based on your specific use case and requirements.
π Acknowledgments
- KataCoda & KillerCoda: Inspiration for interactive learning environments
- Microsoft YARP: High-performance reverse proxy solution
- ttyd: Excellent web-based terminal implementation
- VS Code: Powerful development environment with tunnel support
- ASP.NET Core: Robust web framework foundation
π Show Your Support
If you find ModuCoda helpful, please consider:
- β Starring the repository
- π Reporting bugs and issues
- π‘ Suggesting new features
- π€ Contributing code or documentation
- π’ Sharing with others who might benefit