A modern, AI-powered platform built with SvelteKit 5 for semantic audio generation and real-time, server-side audio generation.
A full-stack SaaS application demonstrating a production-grade RAG pipeline for free-text audio lookup and real-time, server-side audio generation. The core architecture is domain-agnostic and can be applied to any use case requiring semantic audio search and synthesis.
- Blair: Slow and smooth, gentle presence
- Aimee: Bubbly and high energy, personal attention specialist
- Cai: Tapping specialist with charming enthusiasm
- AI Script Generation: Powered by OpenAI GPT-4 for personalized ASMR scripts
- Voice Synthesis: High-quality voice generation using ElevenLabs
- Content Categorization: Smart categorization using Pinecone vector database
- Personalized Experiences: Customized content based on user preferences
- Multiple Trigger Types: Hand sounds, mouth sounds, personal attention
- Dynamic Audio Generation: Real-time audio creation and playback
- Audio Storage: Secure cloud storage with Supabase
- Pre-generated Content: Curated library of ASMR triggers
- Stripe Integration: Secure payment processing
- Subscription Management: Flexible billing options
- User Authentication: Secure user accounts with Supabase Auth
- SvelteKit 5: Latest Svelte with runes and modern reactivity
- Tailwind CSS + DaisyUI: Beautiful, responsive design
- Interactive Components: Floating bubbles, particle visualizations
- Dark/Light Themes: Customizable theme system
- Mobile Responsive: Optimized for all devices
- SvelteKit 5 - Modern web framework with runes
- TypeScript - Type-safe development
- Tailwind CSS - Utility-first CSS framework
- DaisyUI - Component library for Tailwind
- Three.js - 3D graphics and particle effects
- Framer Motion - Smooth animations
- Supabase - Database, authentication, and storage
- OpenAI GPT-4 - AI script generation
- ElevenLabs - Voice synthesis
- Pinecone - Vector database for content categorization
- Stripe - Payment processing
- AWS S3 - Additional cloud storage
- Vite - Fast build tool and dev server
- ESLint + Prettier - Code quality and formatting
- TypeScript - Static type checking
Before you begin, ensure you have the following installed:
- Node.js (v18 or higher)
- npm or yarn
- Git
-
Clone the repository
git clone https://github.com/yourusername/asmr-app.git cd asmr-app -
Install dependencies
npm install
-
Set up environment variables
cp .env.example .env
Fill in your environment variables in
.env:# Supabase Configuration PUBLIC_SUPABASE_URL=your_supabase_project_url PUBLIC_SUPABASE_ANON_KEY=your_supabase_anon_key PRIVATE_SUPABASE_SERVICE_KEY=your_supabase_service_role_key # OpenAI Configuration OPENAI_API_KEY=your_openai_api_key OPENAI_ORGANIZATION_ID=your_openai_organization_id OPENAI_PROJECT_ID=your_openai_project_id # ElevenLabs Configuration ELEVENLABS_API_KEY=your_elevenlabs_api_key # Pinecone Configuration PRIVATE_PINECONE_API_KEY=your_pinecone_api_key # Stripe Configuration PRIVATE_STRIPE_SECRET_KEY=your_stripe_secret_key PUBLIC_YOUR_DOMAIN=your_domain_url # Character Voice IDs (ElevenLabs) AIMEE_VOICE_ID=your_aimee_voice_id BLAIR_VOICE_ID=your_blair_voice_id CAI_VOICE_ID=your_cai_voice_id # Stripe Price IDs STRIPE_BASIC_PRICE_ID=your_basic_price_id STRIPE_PREMIUM_PRICE_ID=your_premium_price_id # Client-side Environment Variables (VITE_ prefix) VITE_STRIPE_BASIC_PRICE_ID=your_basic_price_id VITE_STRIPE_PREMIUM_PRICE_ID=your_premium_price_id
-
Set up your services
- Create a Supabase project and configure authentication
- Set up OpenAI API access
- Create ElevenLabs account and voice IDs
- Configure Pinecone vector database
- Set up Stripe for payments
-
Start the development server
npm run dev
-
Open your browser Navigate to
http://localhost:5173 -
Available scripts
npm run dev # Start development server npm run build # Build for production npm run preview # Preview production build npm run check # Type checking npm run format # Format code with Prettier npm run lint # Lint code with ESLint
src/
βββ components/ # Reusable UI components
β βββ audio/ # Audio-related components
β βββ billing/ # Payment and subscription components
β βββ misc/ # Miscellaneous components
β βββ pages/ # Page-level components
β βββ shader/ # 3D graphics and visualizations
β βββ ui/ # Basic UI components
βββ lib/ # Utility libraries and stores
β βββ stores/ # Svelte stores for state management
β βββ server/ # Server-side utilities
β βββ utils/ # Helper functions
βββ routes/ # SvelteKit routes and API endpoints
β βββ api/ # API routes
β βββ auth/ # Authentication pages
β βββ (protected)/ # Protected routes
βββ static/ # Static assets
- Create a new Supabase project
- Enable authentication providers
- Set up storage buckets for audio files
- Configure Row Level Security (RLS) policies
- Create an OpenAI account
- Generate API keys
- Set up organization and project IDs
- Create ElevenLabs account
- Generate voice IDs for each character
- Configure API access
- Create Pinecone account
- Set up vector database
- Configure embeddings for content categorization
- Connect your GitHub repository to Vercel
- Set environment variables in Vercel dashboard
- Deploy automatically on push to main branch
- Connect repository to Netlify
- Set build command:
npm run build - Set publish directory:
build - Configure environment variables
- Build the application:
npm run build - Serve the
builddirectory with your preferred web server - Ensure all environment variables are set
We welcome contributions! Please follow these steps:
- Fork the repository
- Create a feature branch
git checkout -b feature/amazing-feature
- Commit your changes
git commit -m 'Add some amazing feature' - Push to the branch
git push origin feature/amazing-feature
- Open a Pull Request
- Follow the existing code style
- Write meaningful commit messages
- Add tests for new features
- Update documentation as needed
This project is licensed under the MIT License - see the LICENSE file for details.
If you encounter any issues or have questions:
- Check the Issues - Look for existing issues or create a new one
- Documentation - Review this README and code comments
- Community - Join our community discussions
- SvelteKit Team - For the amazing framework
- OpenAI - For powerful AI capabilities
- ElevenLabs - For high-quality voice synthesis
- Supabase - For backend infrastructure
- Tailwind CSS - For beautiful styling utilities
Made with β€οΈ for the ASMR community