pianorhythm-ssr

PianoRhythm

PianoRhythm is a multiplayer social web application that allows users to play music and casual games with people from around the world. Experience real-time musical collaboration with advanced 3D rendering, custom synthesizers, and seamless cross-platform support.

๐ŸŽน Try PianoRhythm Live ๐ŸŒ Main Site ๐Ÿ“š Documentation

About the Project

PianoRhythm is designed to create a collaborative musical experience where users can:

Technical Architecture

Frontend

Backend

Core Engine

Cross-Platform Support

Initialization System

๐Ÿ“‹ Comprehensive Technical Documentation - Complete technical documentation and architecture guides

Key Features

Music Collaboration

Social Interaction

User Experience

Technical Features

Deployment

GitHub Pages (Current)

The project is automatically deployed to GitHub Pages on every push to the main branch:

Production Deployment

For production environments, the application is deployed using:

Development

Prerequisites

Getting Started

  1. Clone the repository:
    git clone https://github.com/PianoRhythm/pianorhythm-ssr.git
    cd pianorhythm-ssr
    
  2. Install dependencies:
    pnpm install
    
  3. Start development server:
    pnpm run dev:local
    

The application will be available at http://localhost (port 80).

Development Scripts

# Development servers
pnpm run dev:local    # Local development with hot reload
pnpm run dev:dev      # Development environment

# Building
pnpm run build:production  # Production build
pnpm run build:staging     # Staging build

# Testing
pnpm test             # Run unit tests
pnpm test-watch       # Watch mode for tests
pnpm test-ui          # Visual test interface
pnpm cy:open          # Open Cypress for e2e tests

# Desktop app (Tauri)
pnpm run tauri:dev    # Desktop development
pnpm run tauri        # Tauri CLI commands

Building

The project uses Vinxi with custom presets for different deployment environments:

Core Engine Building

The Rust core engine requires special build steps:

# Build WebAssembly core
cd pianorhythm_core
chmod +x ./build-core-release.sh
./build-core-release.sh

# Build 3D renderer
chmod +x ./build-bevy-renderer-wasm-webgpu.sh
./build-bevy-renderer-wasm-webgpu.sh

Testing

Comprehensive testing setup with multiple frameworks:

Unit Tests

pnpm test                    # Run all unit tests
pnpm test-watch              # Watch mode
pnpm test-update-snapshots   # Update test snapshots

Integration Tests

pnpm cy:open                 # Open Cypress test runner
pnpm cy:vite                 # Start test server

Test Coverage

Contributing

  1. Fork the repository
  2. Create a feature branch (git checkout -b feature/amazing-feature)
  3. Make your changes and add tests
  4. Ensure all tests pass (pnpm test)
  5. Commit your changes (git commit -m 'Add amazing feature')
  6. Push to the branch (git push origin feature/amazing-feature)
  7. Open a Pull Request

Development Guidelines

Initialization System Development

When working with the app initialization:

See the Technical Documentation for comprehensive guides on architecture, development, and deployment.

License

This project is licensed under the MIT License - see the LICENSE file for details.

Acknowledgments


PianoRhythm - Bringing people together through music ๐ŸŽนโœจ