A decentralized platform for connecting musicians and audiences through real-time performances and blockchain-based tipping.
Stellar-Polyphony is a modern web application built on a monorepo architecture that enables street performers, indie artists, and musicians to broadcast live performances to a global audience while receiving direct support through cryptocurrency tips.
- Live Performance Discovery: Browse and discover live performances from artists worldwide
- Real-time Streaming: Watch performances as they happen
- Blockchain Tipping: Support artists directly using Stellar blockchain
- Artist Profiles: Customizable profiles for performers
- Session Management: Artists can create, manage, and broadcast live sessions
- Admin Dashboard: Moderation and oversight tools
This project uses a monorepo structure powered by:
- pnpm workspaces: Efficient package management
- Turbo: High-performance build system
- TypeScript: Type-safe development
- Modular design: Separation of apps and shared packages
stellar-polyphony/
├── apps/ # Application workspaces
│ ├── web/ # Public-facing web application
│ ├── api/ # Backend API service
│ └── admin/ # Admin dashboard
├── packages/ # Shared packages
│ ├── types/ # Shared TypeScript types
│ ├── ui/ # Shared UI components
│ └── config/ # Shared configuration
├── tooling/ # Development tools and scripts
├── docs/ # Documentation
└── .github/ # CI/CD workflows
- Node.js >= 18.x
- pnpm >= 8.x
- Git
- Clone the repository:
git clone https://github.com/yourusername/Stellar-Polyphony.git
cd Stellar-Polyphony- Install dependencies:
pnpm install- Set up environment variables:
cp .env.example .env
# Edit .env with your configurationRun all applications in development mode:
pnpm devRun specific workspace:
pnpm --filter web dev
pnpm --filter api dev
pnpm --filter admin devBuild all applications:
pnpm buildBuild specific workspace:
pnpm --filter web buildRun tests across all workspaces:
pnpm testCheck code quality:
pnpm lintType checking:
pnpm typecheck- Roles: fan, artist, admin
- Owns one profile
- Authentication and authorization
- Public identity for performers
- Stage name, bio, genres, wallet address
- Referenced by sessions and tips
- Lifecycle: draft → live → ended
- Connected to one artist
- Contains stream metadata and viewer count
- Client-created draft for payment preparation
- Becomes payment-ready transaction
- Links fan to artist session
- Emitted for successful mutations
- Queried by admin surfaces
- Tracks system activity
POST /auth/register- Create new user accountPOST /auth/login- Authenticate userGET /auth/session- Verify session
POST /profile- Create artist profilePATCH /profile/:id- Update profileGET /profile/:slug- Get public profile
POST /sessions- Create session draftPATCH /sessions/:id- Update sessionPOST /sessions/:id/start- Start live sessionPOST /sessions/:id/end- End sessionGET /sessions/live- List live sessions
POST /payments/prepare- Prepare tip transactionPOST /payments/confirm- Confirm transaction
GET /audit- Query audit events (admin only)
/- Landing page/discover- Browse live performances/sessions/:slug- Session detail and tip form
/artist/onboarding- Artist setup/artist/dashboard- Session controls/profile- Profile editing
/admin/login- Admin authentication/admin- Admin dashboard
We welcome contributions from the community! Here's how you can help:
- Report Bugs: Open an issue describing the bug and how to reproduce it
- Suggest Features: Share your ideas for new features or improvements
- Submit Pull Requests: Fix bugs or implement features
- Improve Documentation: Help make our docs clearer and more comprehensive
- Code Review: Review open pull requests
-
Fork the repository to your GitHub account
-
Clone your fork:
git clone https://github.com/yourusername/Stellar-Polyphony.git
cd Stellar-Polyphony- Create a feature branch:
git checkout -b feature/your-feature-name- Install dependencies:
pnpm install-
Make your changes:
- Write clean, readable code
- Follow existing code style
- Add tests for new features
- Update documentation as needed
-
Test your changes:
pnpm lint
pnpm typecheck
pnpm test
pnpm build- Commit your changes:
git add .
git commit -m "feat: add your feature description"Follow Conventional Commits:
feat:- New featurefix:- Bug fixdocs:- Documentation changesstyle:- Code style changes (formatting, etc.)refactor:- Code refactoringtest:- Adding or updating testschore:- Maintenance tasks
- Push to your fork:
git push origin feature/your-feature-name- Open a Pull Request:
- Go to the original repository
- Click "New Pull Request"
- Select your fork and branch
- Fill out the PR template
- Link any related issues
- Use TypeScript for all new code
- Follow ESLint rules configured in the project
- Use Prettier for code formatting
- Write meaningful variable and function names
- Add JSDoc comments for public APIs
- Keep functions small and focused
- Write unit tests for business logic
- One feature per PR: Keep PRs focused and manageable
- Update documentation: Include relevant doc updates
- Add tests: Ensure new code is tested
- Pass CI checks: All tests and lints must pass
- Descriptive title: Clearly describe what the PR does
- Link issues: Reference related issues in the description
- Request review: Tag relevant maintainers
feature/- New featuresfix/- Bug fixesdocs/- Documentation updatesrefactor/- Code refactoringtest/- Test additions or updates
- Unit tests for utility functions and business logic
- Integration tests for API endpoints
- Component tests for UI components
- Maintain or improve code coverage
- Update README.md for user-facing changes
- Add JSDoc comments for functions and classes
- Update API documentation for endpoint changes
- Include examples in documentation
- Keep docs in sync with code
- Discord: Join our community server (link coming soon)
- Issues: Ask questions by opening an issue with the "question" label
- Discussions: Use GitHub Discussions for broader topics
- Be respectful and inclusive
- Welcome newcomers
- Focus on constructive feedback
- Assume good intentions
- Follow the Contributor Covenant
Contributors will be:
- Listed in our CONTRIBUTORS.md file
- Mentioned in release notes for significant contributions
- Invited to join the core team for sustained contributions
- Basic authentication and user management
- Artist profile creation and editing
- Session lifecycle management
- Discovery and session detail pages
- Mock payment preparation
- Admin audit logging
- Real Stellar blockchain integration
- Live streaming infrastructure
- Real-time chat and interactions
- Advanced search and filtering
- Mobile applications
- Analytics dashboard
- React / Next.js
- TypeScript
- Tailwind CSS
- React Query
- Node.js
- Express / Fastify
- TypeScript
- PostgreSQL
- Redis
- Stellar SDK
- Wallet integration
- Docker
- GitHub Actions
- Vercel / AWS
MIT License - see LICENSE file for details
- Documentation: docs/
- Architecture: docs/architecture.md
- API Reference: docs/api-reference.md
- Contributing Guide: This README (Contributing section)
- Code of Conduct: CODE_OF_CONDUCT.md
- Issues: GitHub Issues
- Discussions: GitHub Discussions
- Email: support@stellar-polyphony.com
Built with ❤️ by the Stellar-Polyphony community