A modern, full-stack music streaming web application built with React.js, TypeScript, and Tailwind CSS. Groovlee features a Spotify-like interface with playlist management, music playback controls, search functionality, and a responsive design.
Developer: Ashutosh Anand
Development Period: 2024
- 🎶 Music Playback: Full-featured music player with play/pause, skip, shuffle, and repeat
- 📱 Responsive Design: Works seamlessly on desktop, tablet, and mobile devices
- 🔍 Search Functionality: Real-time search for songs and albums
- 📂 Playlist Management: Create, edit, and manage personal playlists
- 🎨 Modern UI: Clean, dark-themed interface inspired by modern music apps
- ⚡ Fast Performance: Built with Vite for lightning-fast development and builds
- React 18 - Modern UI framework with hooks
- TypeScript - Type-safe JavaScript development
- Tailwind CSS - Utility-first CSS framework
- Wouter - Lightweight client-side routing
- TanStack Query - Server state management and caching
- Radix UI - Accessible component primitives
- Lucide React - Beautiful icon library
- Node.js - JavaScript runtime
- Express.js - Web application framework
- TypeScript - Type-safe server development
- Drizzle ORM - Type-safe database toolkit
- PostgreSQL - Robust relational database
- Zod - Schema validation library
- Vite - Next-generation build tool
- ESBuild - Fast JavaScript bundler
- PostCSS - CSS transformation tool
- tsx - TypeScript execution engine
- Node.js (v18 or higher)
- npm or yarn package manager
-
Clone the repository
git clone https://github.com/ashutosh2287/groovlee.git cd groovlee
-
Install dependencies
npm install
-
Set up environment variables
cp .env.example .env # Edit .env with your database configuration
-
Start the development server
npm run dev
-
Open your browser Navigate to
http://localhost:5000
groovlee/
├── client/ # Frontend React application
│ ├── src/
│ │ ├── components/ # Reusable UI components
│ │ ├── pages/ # Application pages
│ │ ├── hooks/ # Custom React hooks
│ │ ├── lib/ # Utilities and helpers
│ │ └── contexts/ # React contexts
├── server/ # Backend Express application
│ ├── routes.ts # API route definitions
│ ├── storage.ts # Data storage interface
│ └── index.ts # Server entry point
├── shared/ # Shared types and schemas
│ └── schema.ts # Database schemas
└── Configuration files
GET /api/playlists
- Fetch user playlistsGET /api/playlists/:id
- Get specific playlistPOST /api/playlists
- Create new playlistPATCH /api/playlists/:id
- Update playlistDELETE /api/playlists/:id
- Delete playlistPOST/DELETE /api/playlists/:id/songs/:songId
- Manage playlist songsGET /api/songs
- Fetch all songsGET /api/songs/search
- Search songsGET /api/albums
- Fetch all albumsGET /api/albums/search
- Search albums
- Home (
/
) - Featured content and recommendations - Search (
/search
) - Search for music content - Library (
/library
) - Personal playlists and collections - Playlist (
/playlist/:id
) - Individual playlist view
- MusicPlayer - Global music playback controls
- Sidebar - Navigation menu with responsive design
- TopBar - Search and navigation controls
- AlbumCard - Reusable content display component
npm run dev
- Start development servernpm run build
- Build for productionnpm start
- Start production servernpm run check
- Run TypeScript type checkingnpm run db:push
- Push database schema changes
- Playback Controls: Play, pause, next, previous
- Progress Tracking: Real-time playback progress
- Volume Control: Adjustable volume with mute functionality
- Shuffle & Repeat: Multiple playback modes
- Queue Management: Dynamic playlist queuing
- Mobile-First: Optimized for mobile devices
- Adaptive Layout: Smooth transitions between screen sizes
- Touch-Friendly: Optimized touch interactions
- Fast Loading: Optimized performance across devices
- Type Safety: Full TypeScript integration
- Caching: Intelligent data caching with TanStack Query
- Real-time Updates: Live data synchronization
- Error Handling: Comprehensive error management
- Fork the repository
- Create your 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
This project is licensed under the MIT License - see the LICENSE file for details.
Ashutosh Anand
- LinkedIn: [https://www.linkedin.com/in/ashutosh-anand-1651841b6/]
- GitHub: [https://github.com/ashutosh2287]
- Design inspiration from Spotify and modern music streaming platforms
- UI components built with Radix UI and shadcn/ui
- Icons provided by Lucide React
- Built with love using modern web technologies