A sleek, modern music streaming web application built with Next.js and React, featuring a responsive UI and advanced music playback capabilities.
- Music Player: Full-featured music player with controls for play/pause, skip, volume, and progress tracking
- Responsive Design: Beautiful UI that adapts seamlessly across desktop, tablet, and mobile devices
- Music Library: Browse through songs, albums, playlists, and genres
- Personalized Experience: Recently played tracks, liked songs, and saved content
- Expanded Views: Detailed song cards with lyrics, artist info, and similar tracks
- Modern UI: Sleek animations, transitions, and intuitive navigation
- Frontend Framework: Next.js 15 (with App Router)
- UI Library: React 19
- Styling: Tailwind CSS 4
- Animations: Framer Motion
- Icons: React Icons
- TypeScript: Type-safe code for better development experience
- Turbopack: Enhanced development performance
This Web app was developed with the assistance of open source LLM models including:
- Qwen: Used during development for codebase generation and architecture design
- Llama: Used during development for UI/UX improvements and feature implementation
- Deepseek: Used during development for code optimization and technical documentation
This project was created for the Frontend UI Hackathon 2025 #2, showcasing advanced UI/UX techniques and integration of modern technologies in web development.
- Clone the repository
- Install dependencies:
npm install
- Set up environment variables:
Then edit
cp .env.example .env.local
.env.localwith your configuration - Run the development server:
npm run dev
- Open http://localhost:3000 in your browser
The easiest way to deploy this app is using Vercel:
- Push your code to a Git repository (GitHub, GitLab, or Bitbucket)
- Import the project in Vercel
- Set your environment variables in the Vercel dashboard
- Deploy
This app can be deployed using Docker:
- Build the Docker image:
docker build -t sonance-app . - Run the container:
docker run -p 3000:3000 -e NODE_ENV=production sonance-app
- Build for production:
npm run build
- Start the production server:
npm start
The app is configured for production with:
- Standalone output mode for easy deployment
- Image optimization and caching
- Gzip compression
- Security headers
Before deploying to production, follow these steps for optimal performance and stability:
- Use the
OptimizedImagecomponent for all images (src/app/components/common/OptimizedImage.tsx) - Verify all
<img>tags have been replaced with Next.js<Image>components - Check next.config.js for proper image domain configurations
- Fix React Hook dependency warnings (see scripts/prod-ready.js for checklist)
- Address all TypeScript errors (temporarily disabled in next.config.js)
- Replace JavaScript-style comments in JSX with proper JSX comments
- Use proper JSX escaping for apostrophes and quotes: ' "
- Enable production build optimizations:
npm run build
- Check Lighthouse scores and address any issues
- Review bundle size and implement code-splitting where necessary
- Implement lazy loading for non-critical components
- Remove temporary configuration options from next.config.js:
// Remove these once issues are fixed eslint: { ignoreDuringBuilds: true, }, typescript: { ignoreBuildErrors: true, }
- Add Content-Security-Policy headers
- Implement proper error handling
- Run thorough testing across different devices and browsers
- Test keyboard navigation and screen reader accessibility
- Verify all user flows work as expected
For a complete production readiness checklist, see scripts/prod-ready.js.
src/app/: Main application codecomponents/: UI components (MusicCard, NowPlayingBar, etc.)hooks/: Custom React hooksdata/: Data models and sample contentutils/: Utility functionscontext/: React context providers
Contributions are welcome! Please feel free to submit a Pull Request.
This project is open source and available under the MIT License.