Create. Collaborate. Own Your Music.
Orpheus is a decentralized music collaboration platform built on the Internet Computer (IC) that connects musicians, producers, and creators worldwide. Our platform offers intuitive tools for real-time jamming, recording, and editing, enabling seamless teamwork on every track.
- Real-time Collaboration: Jam with musicians and producers in sync with ultra-low latency
- Multi-Track Editor: Record, organize, and layer complex productions together
- Global Community: Connect with a diverse network of global creators
- Secure Cloud Storage: Your sessions, stems, and projects are always safe and backed up
- Built-in Chat and Messaging: Collaborate and share feedback in real time
- Token Rewards System: Earn $MUSE tokens for collaboration and contributions
- Native Token: $MUSE tokens for rewarding collaboration
- Transfer System: Send tokens to other users
- Minting: Project owners can reward collaborators
- Balance Tracking: Real-time token balance display
- React 18 with TypeScript
- Vite for fast development and building
- Tailwind CSS for styling
- React Router for navigation
- Internet Computer Agent for blockchain integration
- Rust canister on Internet Computer
- Candid interface definition language
- DFX for local development and deployment
- ESLint for code linting
- PostCSS for CSS processing
- Docker for containerized deployment
Before you begin, ensure you have the following installed:
- Node.js (v16 or higher)
- npm or yarn package manager
- Rust (for backend development)
- DFX (Internet Computer SDK)
- Git
If you're on Windows and encounter build issues with Rust:
- Install Visual Studio Build Tools from https://visualstudio.microsoft.com/downloads/
- Select "C++ build tools" workload during installation
- Restart your terminal after installation
git clone <repository-url>
cd orpheusnpm install# Install DFX if you haven't already
npm install -g dfx
# Start local Internet Computer replica
dfx start --clean
# Deploy canisters in a new terminal
dfx deploynpm run devThe application will be available at http://localhost:5173
# Start development server
npm run dev
# Build for production
npm run build
# Preview production build
npm run preview# Check Rust code
cargo check
# Build Rust canister
cargo build
# Run tests
cargo test# Start local replica
dfx start
# Create new canisters
dfx canister create orpheus_backend
dfx canister create orpheus_frontend
# Build canisters
dfx build
# Deploy canisters
dfx deploy
# View canister status
dfx canister status orpheus_backend-
Start the local IC replica:
dfx start --clean
-
Deploy canisters:
dfx deploy
-
Access your dApp at the generated canister URL
-
Build the frontend:
npm run build
-
Deploy to Internet Computer:
dfx deploy --network ic
-
Get your canister URL:
dfx canister --network ic id orpheus_frontend
- Landing Page: Visit the homepage to learn about Orpheus
- Connect Wallet: Connect your Internet Computer wallet
- Create Profile: Set up your musician profile
- Explore: Browse existing projects or create your own
- Create Project: Start a new music collaboration project
- Set Parameters: Define project goals, genres, and requirements
- Invite Collaborators: Share project link with other musicians
- Collaborate: Work together in real-time or asynchronously
- Join Project: Accept invitation or join public projects
- Contribute: Add tracks, suggest edits, provide feedback
- Earn Rewards: Receive $MUSE tokens for valuable contributions
- Finalize: Complete the project and share with the community
create_project(name: String)βCreateProjectResponselist_projects()βListProjectsResponseget_project(id: String)βProject
mint_tokens(to: Principal, amount: u64, reason: String)βMintResponsetransfer_tokens(to: Principal, amount: u64)βTransferResponseget_balance(principal: Principal)βBalanceResponseget_token_info()βTokenInfo
whoami()βPrincipal- Get current user principalreward_collaboration(project_id: String, collaborators: Vec<(Principal, u64)>, reason: String)βTransferResponse
The frontend communicates with the Internet Computer backend through:
- Agent Configuration:
src/ic/agent.ts - API Functions:
src/ic/api.ts - Type Definitions:
src/ic/idl.ts
orpheus/
βββ src/
β βββ components/ # Reusable UI components
β β βββ TokenBalance.tsx
β β βββ LoadingSpinner.tsx
β β βββ ...
β βββ pages/ # Main application pages
β β βββ dashboardmain.tsx
β β βββ ConnectWallet.tsx
β β βββ Community.tsx
β β βββ ...
β βββ ic/ # Internet Computer integration
β β βββ agent.ts # IC agent configuration
β β βββ api.ts # API function calls
β β βββ idl.ts # Type definitions
β βββ orpheus_backend/ # Rust canister code
β β βββ lib.rs
β βββ ...
βββ public/ # Static assets
βββ dist/ # Build output
βββ dfx.json # IC canister configuration
- Dashboard (
/dashboardmain): Main project management interface - Community (
/community): Browse and join projects - Workspace (
/workspace): Music creation and editing - Profile (
/userprofile): User settings and token balance - Project Creation (
/create): Start new collaborations
- TokenBalance: Display current $MUSE balance
- TokenTransfer: Send tokens to other users
- CollaborationRewards: Automatic reward distribution
# Run development server
npm run dev
# Test key user flows:
# 1. Connect wallet
# 2. Create new project
# 3. Join community project
# 4. Check token balance
# 5. Transfer tokens# Test canister methods
dfx canister call orpheus_backend create_project '("Test Project")'
dfx canister call orpheus_backend get_balance '(principal "your-principal-id")'- Fork the repository
- Create a feature branch (
git checkout -b feature/amazing-feature) - Commit your changes (
git commit -m 'Add amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
- Follow TypeScript best practices
- Use Tailwind CSS for styling
- Write descriptive commit messages
- Test your changes thoroughly
- Update documentation as needed
This project is licensed under the MIT License - see the LICENSE file for details.
- Email: orpheus.collab@gmail.com
- Issues: GitHub Issues
- Discussions: GitHub Discussions
- Internet Computer team for the amazing blockchain platform
- DFINITY for the development tools and SDK
- Open source community for the incredible tools and libraries
Made with β€οΈ for musicians, by musicians
Empowering global music collaboration through decentralized technology