Real-time music tips powered by Stellar
TipTune is a revolutionary platform that connects music lovers directly with artists through instant, frictionless micro-tipping. Stream your favorite tracks and show appreciation with lightning-fast Stellar payments.
- Navy (Background):
#0B1C2D - Blue (Primary):
#4DA3FF - Ice Blue (Secondary):
#6EDCFF - Mint (Highlight):
#9BF0E1 - Gold (Tip Accent):
#FFD166
- Stream Music - Listen to tracks from independent artists
- Instant Tips - Send XLM or USDC tips with one tap
- Live Notifications - Artists see tips in real-time during performances
- Micro-transactions - Tips as low as $0.10 thanks to Stellar's low fees
- Global Reach - Borderless payments to artists anywhere
- Artist Dashboard - Track earnings, top supporters, and engagement
- Artist Profiles - Showcase music, bio, and tip history
- Secure Wallet Integration - Connect with Freighter, Albedo, or other Stellar wallets
Traditional music streaming pays artists fractions of a cent per stream. TipTune flips the model:
- Direct support: 100% of tips go directly to artists (minus minimal network fees)
- Instant settlement: Artists receive funds in seconds, not months
- Fan connection: Build stronger relationships through direct appreciation
- Transparent: All transactions visible on the Stellar blockchain
- Frontend: React, TypeScript, TailwindCSS
- Blockchain: Stellar Network
- Smart Contracts: Soroban (Stellar's smart contract platform)
- Wallet Integration: Freighter, Albedo, xBull
- Backend: Node.js, Express
- Database: PostgreSQL
- Audio Streaming: Web Audio API / HowlerJS
- Real-time: WebSockets for live notifications
- Node.js 18+ and npm/yarn
- PostgreSQL database
- Stellar wallet (Freighter recommended for development)
# Clone the repository
git clone https://github.com/OlufunbiIK/tip-tune/
cd tiptune
# Install dependencies
npm install
# Copy environment variables
cp .env.example .env
# Configure your .env file with:
# - Stellar network settings (testnet/mainnet)
# - Database credentials
# - API keys
# Run database migrations
npm run migrate
# Start development server
npm run devVisit http://localhost:3000 to see TipTune in action!
- Connect Wallet - Click "Connect Wallet" and approve connection
- Browse Artists - Explore the artist directory
- Listen & Tip - Play a track and tap the tip button
- Select Amount - Choose or enter custom tip amount
- Send - Confirm transaction in your wallet
- Sign Up - Create artist profile with Stellar wallet
- Upload Music - Add tracks with metadata and artwork
- Share Profile - Share your TipTune link with fans
- Receive Tips - Get notified instantly when fans tip
- Track Analytics - View earnings and engagement stats
# TipTune Project Structure
tiptune/
βββ frontend/ # React + TypeScript + Vite
β βββ public/
β β βββ favicon.ico
β β βββ logo.svg
β β βββ assets/
β βββ src/
β β βββ components/ # Reusable React components
β β β βββ common/
β β β β βββ Button.tsx
β β β β βββ Card.tsx
β β β β βββ Modal.tsx
β β β β βββ Toast.tsx
β β β β βββ LoadingSkeleton.tsx
β β β βββ layout/
β β β β βββ Header.tsx
β β β β βββ Footer.tsx
β β β β βββ Sidebar.tsx
β β β β βββ Layout.tsx
β β β βββ player/
β β β β βββ MusicPlayer.tsx
β β β β βββ PlayButton.tsx
β β β β βββ VolumeControl.tsx
β β β β βββ ProgressBar.tsx
β β β β βββ TrackInfo.tsx
β β β βββ artist/
β β β β βββ ArtistCard.tsx
β β β β βββ ArtistProfile.tsx
β β β β βββ ArtistHeader.tsx
β β β β βββ ArtistSearch.tsx
β β β βββ tip/
β β β β βββ TipButton.tsx
β β β β βββ TipModal.tsx
β β β β βββ TipHistory.tsx
β β β β βββ TipPresets.tsx
β β β βββ wallet/
β β β β βββ WalletConnect.tsx
β β β β βββ WalletInfo.tsx
β β β β βββ WalletBalance.tsx
β β β βββ notifications/
β β β βββ NotificationCenter.tsx
β β β βββ NotificationItem.tsx
β β β βββ NotificationBell.tsx
β β βββ pages/ # Page components (routes)
β β β βββ HomePage.tsx
β β β βββ ArtistPage.tsx
β β β βββ DashboardPage.tsx
β β β βββ TipHistoryPage.tsx
β β β βββ ExplorePage.tsx
β β β βββ NotFoundPage.tsx
β β βββ hooks/ # Custom React hooks
β β β βββ useWallet.ts
β β β βββ useAudio.ts
β β β βββ useTip.ts
β β β βββ useNotifications.ts
β β β βββ useWebSocket.ts
β β β βββ useApi.ts
β β βββ contexts/ # React Context providers
β β β βββ WalletContext.tsx
β β β βββ PlayerContext.tsx
β β β βββ AuthContext.tsx
β β β βββ NotificationContext.tsx
β β βββ services/ # API service layer
β β β βββ api.ts
β β β βββ artistService.ts
β β β βββ trackService.ts
β β β βββ tipService.ts
β β β βββ userService.ts
β β βββ utils/ # Utility functions
β β β βββ stellar/
β β β β βββ wallet.ts
β β β β βββ payments.ts
β β β β βββ transactions.ts
β β β β βββ addresses.ts
β β β βββ formatters.ts
β β β βββ validators.ts
β β β βββ constants.ts
β β β βββ helpers.ts
β β βββ types/ # TypeScript type definitions
β β β βββ artist.types.ts
β β β βββ track.types.ts
β β β βββ tip.types.ts
β β β βββ user.types.ts
β β β βββ wallet.types.ts
β β β βββ api.types.ts
β β βββ styles/ # Global styles
β β β βββ global.css
β β βββ App.tsx
β β βββ main.tsx
β β βββ vite-env.d.ts
β βββ .env.example
β βββ .gitignore
β βββ index.html
β βββ package.json
β βββ tsconfig.json
β βββ vite.config.ts
β βββ tailwind.config.js
β βββ postcss.config.js
β
βββ backend/ # NestJS + TypeORM + PostgreSQL
β βββ src/
β β βββ main.ts # Application entry point
β β βββ app.module.ts # Root module
β β βββ app.controller.ts
β β βββ app.service.ts
β β β
β β βββ config/ # Configuration
β β β βββ database.config.ts
β β β βββ stellar.config.ts
β β β βββ app.config.ts
β β β
β β βββ common/ # Shared resources
β β β βββ decorators/
β β β β βββ current-user.decorator.ts
β β β β βββ public.decorator.ts
β β β βββ guards/
β β β β βββ jwt-auth.guard.ts
β β β β βββ roles.guard.ts
β β β βββ interceptors/
β β β β βββ transform.interceptor.ts
β β β β βββ logging.interceptor.ts
β β β βββ filters/
β β β β βββ http-exception.filter.ts
β β β βββ pipes/
β β β β βββ validation.pipe.ts
β β β βββ interfaces/
β β β βββ response.interface.ts
β β β
β β βββ database/ # Database module
β β β βββ database.module.ts
β β β βββ migrations/
β β β βββ 1234567890-CreateUsers.ts
β β β βββ 1234567891-CreateArtists.ts
β β β βββ 1234567892-CreateTracks.ts
β β β βββ 1234567893-CreateTips.ts
β β β
β β βββ auth/ # Authentication module
β β β βββ auth.module.ts
β β β βββ auth.controller.ts
β β β βββ auth.service.ts
β β β βββ strategies/
β β β β βββ jwt.strategy.ts
β β β β βββ wallet.strategy.ts
β β β βββ dto/
β β β βββ challenge.dto.ts
β β β βββ verify-signature.dto.ts
β β β βββ login.dto.ts
β β β
β β βββ users/ # Users module
β β β βββ users.module.ts
β β β βββ users.controller.ts
β β β βββ users.service.ts
β β β βββ entities/
β β β β βββ user.entity.ts
β β β βββ dto/
β β β βββ create-user.dto.ts
β β β βββ update-user.dto.ts
β β β
β β βββ artists/ # Artists module
β β β βββ artists.module.ts
β β β βββ artists.controller.ts
β β β βββ artists.service.ts
β β β βββ entities/
β β β β βββ artist.entity.ts
β β β βββ dto/
β β β βββ create-artist.dto.ts
β β β βββ update-artist.dto.ts
β β β
β β βββ tracks/ # Tracks module
β β β βββ tracks.module.ts
β β β βββ tracks.controller.ts
β β β βββ tracks.service.ts
β β β βββ entities/
β β β β βββ track.entity.ts
β β β βββ dto/
β β β βββ create-track.dto.ts
β β β βββ update-track.dto.ts
β β β
β β βββ tips/ # Tips module
β β β βββ tips.module.ts
β β β βββ tips.controller.ts
β β β βββ tips.service.ts
β β β βββ entities/
β β β β βββ tip.entity.ts
β β β βββ dto/
β β β βββ create-tip.dto.ts
β β β βββ query-tips.dto.ts
β β β
β β βββ stellar/ # Stellar blockchain module
β β β βββ stellar.module.ts
β β β βββ stellar.service.ts
β β β βββ transaction-verifier.service.ts
β β β βββ types/
β β β βββ stellar.types.ts
β β β
β β βββ storage/ # File storage module
β β β βββ storage.module.ts
β β β βββ storage.service.ts
β β β βββ types/
β β β βββ storage.types.ts
β β β
β β βββ notifications/ # Notifications module (WebSocket)
β β β βββ notifications.module.ts
β β β βββ notifications.gateway.ts
β β β βββ notifications.service.ts
β β β βββ dto/
β β β βββ notification.dto.ts
β β β
β β βββ email/ # Email module
β β βββ email.module.ts
β β βββ email.service.ts
β β βββ templates/
β β βββ tip-notification.html
β β
β βββ test/ # E2E tests
β β βββ app.e2e-spec.ts
β β βββ jest-e2e.json
β β
β βββ .env.example
β βββ .gitignore
β βββ nest-cli.json
β βββ package.json
β βββ tsconfig.json
β βββ tsconfig.build.json
β βββ ormconfig.ts # TypeORM configuration
β
βββ contracts/ # Soroban smart contracts (optional)
β βββ tip-escrow/
β β βββ src/
β β β βββ lib.rs
β β βββ Cargo.toml
β βββ README.md
β
βββ docs/ # Documentation
β βββ API.md
β βββ ARCHITECTURE.md
β βββ DEPLOYMENT.md
β βββ STELLAR_INTEGRATION.md
β βββ DATABASE_SCHEMA.md
β
βββ .github/ # GitHub configuration
β βββ workflows/
β β βββ ci.yml
β β βββ deploy.yml
β βββ ISSUE_TEMPLATE/
β β βββ bug_report.md
β β βββ feature_request.md
β β βββ drips_wave_issue.md
β βββ PULL_REQUEST_TEMPLATE.md
β
βββ .gitignore
βββ .env.example
βββ package.json # Root package.json (monorepo scripts)
βββ README.md
βββ CONTRIBUTING.md
βββ LICENSE
βββ docker-compose.yml # Docker setup for PostgreSQL
β Module-based architecture - Each feature is a separate module β Entities folder - TypeORM entities for database models β DTOs folder - Data Transfer Objects for validation β Services - Business logic separated from controllers β Guards & Interceptors - Authentication and request processing β Migrations - Database version control with TypeORM
β Component-based - Organized by feature β Contexts - Global state management β Services - API calls separated from components β Hooks - Reusable logic β Types - TypeScript definitions
We welcome contributions! TipTune is participating in the Stellar Drips Wave Program - check out our open issues to earn rewards while building something awesome.
- Check out our CONTRIBUTING.md guide
- Browse open issues tagged with
good-first-issue - Read the Code of Conduct
- Join our [Discord community] https://discord.gg/tkbwMmJE
- Fork the repository
- Create a feature branch (
git checkout -b feature/amazing-feature) - Make your changes with clear commit messages
- Write/update tests
- Push to your fork
- Open a Pull Request
- Basic music player
- Wallet connection
- Simple tipping functionality
- Artist profiles
- Real-time notifications
- Playlist creation
- Social features (comments, likes)
- Artist analytics dashboard
- Multiple currency support (USDC, custom tokens)
- Mobile app (React Native)
- NFT integration (collectible releases)
- Live streaming with tips
- Subscription tiers
- Artist collaboration tools
- Governance token for platform decisions
- Independent Artists: Earn directly from superfans
- Podcasters: Monetize episodes with listener tips
- Live Performers: Receive virtual tips during streams
- Music Educators: Get paid for lessons and tutorials
- Remix Artists: Share work and receive appreciation
This project is licensed under the MIT License - see the LICENSE file for details.
- Built on Stellar blockchain
- Supported by Stellar Development Foundation
- Part of the Drips Wave Program
- Icons by Lucide
- Discord: [[Join our community] https://discord.gg/tkbwMmJE
- Email: hello@tiptune.io
If you find TipTune valuable, consider:
- Starring this repository
- Reporting bugs and suggesting features
- Contributing code or documentation
- Using TipTune to support your favorite artists
Built with β€οΈ by the TipTune community