PianoRhythm Technical Documentation
Welcome to the comprehensive technical documentation for PianoRhythm, a multiplayer social web application for real-time musical collaboration.
📚 Documentation Index
Core Architecture
- Architecture Overview - High-level system design and component relationships
- Core Business Logic - pianorhythm_core Rust engine documentation
- Initialization System - Dependency-based startup architecture
- Protocol Buffers - Message serialization and cross-platform communication
Frontend Development
- Frontend Architecture - SolidJS components, services, and state management
- Audio System - Audio synthesis, WebAudio API, and audio processing
- MIDI Integration - MIDI device handling and Web MIDI API
- 3D Rendering - Bevy Engine integration and WebGPU/WebGL2
- UI Components - Hope UI components and design system
Backend & Infrastructure
- SSR Implementation - Server-side rendering with Vinxi and SolidJS
- Backend Services - API endpoints, database, and authentication
- WebSocket Communication - Real-time communication architecture
Development & Operations
- Development Setup - Local development environment and build processes
- Testing Guide - Unit tests, integration tests, and e2e testing
- Deployment Guide - Production deployment and CI/CD
- Build System - Vinxi configuration and build processes
- Desktop Application - Tauri-based native wrapper and system integration
🚀 Quick Start
For new developers joining the project:
- Start with Development Setup to get your environment ready
- Read Architecture Overview to understand the system design
- Follow Frontend Architecture to understand the SolidJS structure
- Review Testing Guide to understand our testing practices
🔧 Key Technologies
- Frontend: SolidJS, TypeScript, Hope UI, Vinxi
- Backend: Bun/Node.js, MongoDB, WebSockets
- Core Engine: Rust, WebAssembly, Protocol Buffers
- 3D Rendering: Bevy Engine, WebGPU/WebGL2
- Audio: Custom Rust synthesizer, Web Audio API
- Testing: Vitest, Solid Testing Library, Cypress
- Deployment: GitHub Pages, Docker, DigitalOcean
📖 Documentation Guidelines
When contributing to documentation:
- Keep it current - Update docs when making code changes
- Use examples - Include code snippets and practical examples
- Be comprehensive - Cover both happy path and edge cases
- Link related topics - Cross-reference related documentation
- Include diagrams - Use Mermaid diagrams for complex flows
🤝 Contributing
See our main Contributing Guide for general contribution guidelines.
For documentation-specific contributions:
- Follow the existing structure and formatting
- Test code examples before including them
- Update the index when adding new documentation files
- Use clear, concise language suitable for developers of all levels
📞 Support
- Issues: GitHub Issues
- Discussions: GitHub Discussions
- Main Site: pianorhythm.io
Last Updated: 2025-06-28