A full-featured social video platform with live streaming, battles, virtual gifts, and more.
- Short-Form Videos - vertical video feed
- Live Streaming - Real-time broadcasting with chat
- Live Battles - Head-to-head gift battles between streamers
- Virtual Gifts - Send animated gifts during streams
- Comments & Likes - Social engagement on videos
- Direct Messages - Private messaging between users
- Push Notifications - Real-time alerts for likes, comments, follows
- Virtual Currency - Coins & diamonds system
- In-App Purchases - Buy coin packages via Stripe/Apple/Google
- Battle Boosters - Power-ups for live battles (2x, steal, freeze)
- Wallet System - Immutable transaction ledger
- For You Feed - AI-powered personalized recommendations
- Following Feed - Videos from creators you follow
- Trending - Hot videos and hashtags
- Search - Find users, videos, and hashtags
- Hashtags - Categorize and discover content
- User Profiles - Customizable with bio, avatar, social links
- Follower System - Follow/unfollow creators
- Leveling System - XP-based progression with badges
- Privacy Controls - Block users, report content
- Settings Hub - Account, preferences, safety center
- Content Reports - Report videos, comments, users
- User Blocking - Block unwanted users
- Admin Dashboard - Moderate content and manage users
- Role-Based Access - User, creator, moderator, admin roles
- Ban System - Temporary and permanent bans
- Event Tracking - Comprehensive analytics for all actions
- Trending Algorithm - Smart scoring based on engagement
- Performance Monitoring - Track app performance
- Node.js 18+
- npm 9+
- Stripe account (for payments; optional)
-
Clone the repository:
git clone https://github.com/yourusername/elix-star.git cd elix-star -
Install dependencies:
npm install
-
Set up environment variables:
npm run setup:env
This creates
.envfrom.env.exampleif missing. Edit.envwith your values (e.g.PORT=8080, LiveKit, Bunny, Stripe). In production (e.g. Coolify) set variables in the dashboardβno.envfile is used. -
Start development server:
npm run dev
App runs at: http://localhost:5173
-
Start backend (API + WebSocket) in another terminal:
npm run start
Serves API and static build; for dev you can use
npm run ws:serverornpm run startafter building.
elix-star/
βββ src/
β βββ components/ # React components
β β βββ BottomNav.tsx
β β βββ CommentsDrawer.tsx
β β βββ LiveChat.tsx
β β βββ LiveBattleUI.tsx
β β βββ ...
β βββ pages/ # Page components
β β βββ Home.tsx
β β βββ Live.tsx
β β βββ Profile.tsx
β β βββ Settings.tsx
β β βββ ...
β βββ lib/ # Services & utilities
β β βββ noopClient.ts
β β βββ websocket.ts
β β βββ analytics.ts
β β βββ videoUpload.ts
β β βββ ...
β βββ types/ # TypeScript definitions
βββ api/ # API endpoints
β βββ stripe-webhook.ts
β βββ verify-purchase.ts
β βββ send-notification.ts
β βββ ...
βββ server/ # Backend (Express + WebSocket)
β βββ index.ts
β βββ routes/
βββ android/ # Android app
βββ ios/ # iOS app
βββ public/ # Static assets
# Development
npm run dev # Start dev server
npm run ws:server # Start WebSocket server
npm run build # Build for production
npm run preview # Preview production build
# Type Checking
npm run check # TypeScript type checking
npm run lint # ESLint
# Testing
npm run test # Run tests
npm run test:ui # Test UI
# Mobile
npm run build:mobile # Build for mobile
npx cap sync # Sync with Capacitor
npx cap open ios # Open iOS project
npx cap open android # Open Android project- Frontend: React 18, TypeScript, Tailwind CSS, Vite
- Backend: Node.js (Express), WebSocket (ws) β e.g. Hetzner
- Streaming: LiveKit
- Storage/CDN: Bunny (or your choice)
- Mobile: Capacitor
- Payments: Stripe
- Build Tool: Vite
- Deployment: Single server (e.g. Hetzner); build with
npm run buildthennpm run start
- Setup Guide:
SETUP_GUIDE.md- Complete setup instructions - Implementation Summary:
IMPLEMENTATION_SUMMARY.md- What's built - Quick Reference:
QUICK_REFERENCE.md- Code snippets - Deployment Guide:
DEPLOYMENT_GUIDE.md- Production deployment - Database Setup:
RUN_THESE_IN_ORDER.md- Database migrations
- API rate limiting to prevent abuse
- JWT for WebSocket/auth where configured
- HTTPS only in production
- CORS protection on API endpoints
- Build:
npm run build - On your server (Hetzner or any Node host): set env vars from
.env.example, then runnpm run start(ornpm run start:prod). - Point your domain to the server; set
VITE_WS_URLandVITE_API_URLto your public URL so the client connects to the same host. - Mobile: build with Capacitor and submit to App Store/Play Store.
Two streamers compete for gifts. Features include:
- Real-time score tracking
- Battle timer (1-10 minutes)
- Power-up boosters (2x multiplier, steal points, freeze)
- Winner announcement
- Automatic rewards distribution
Users can send animated gifts:
- Small gifts: Roses, hearts, stars (10-50 coins)
- Large gifts: Full-screen animations (100-5000 coins)
- Gift animations overlay on stream
- Creator earns diamonds (convertible to real money)
- Users buy coins with real money
- Coins used for gifts and boosters
- Creators earn diamonds from gifts
- Transparent wallet with transaction history
- Fork the repository
- Create feature branch (
git checkout -b feature/amazing-feature) - Commit changes (
git commit -m 'Add amazing feature') - Push to branch (
git push origin feature/amazing-feature) - Open Pull Request
This project is licensed under the MIT License.
- Documentation: Check docs in
/docsfolder - Issues: Open an issue on GitHub
- Email: support@elixstar.com (example)
- AI content moderation
- Live stream recording/replay
- Multi-streaming to other platforms
- NFT collectibles
- Advanced analytics dashboard
- Creator monetization tools
Built with β€οΈ by the Elix Star Team