s
This commit is contained in:
110
README.md
Normal file
110
README.md
Normal file
@@ -0,0 +1,110 @@
|
||||

|
||||
# stillnavidrome (project still)
|
||||
> still water, now with navidrome
|
||||
|
||||
> project based on [shadcn/ui](https://github.com/shadcn-ui/ui)'s music template
|
||||
|
||||
This is a modern music streaming web application built with [Next.js](https://nextjs.org/) and [shadcn/ui](https://ui.shadcn.com/), now powered by **Navidrome** for a complete self-hosted music streaming experience.
|
||||
|
||||
**✨ New**: Migrated from Firebase + static data to **Navidrome/Subsonic** integration for real music streaming!
|
||||
|
||||
### Features
|
||||
|
||||
- 🎵 **Real Music Streaming** via Navidrome/Subsonic API
|
||||
- 📱 **Modern UI** with shadcn/ui components
|
||||
- 🎨 **Dynamic Album Artwork** from your music library
|
||||
- ⭐ **Favorites** - Star albums, artists, and songs
|
||||
- 📋 **Playlist Management** - Create and manage playlists
|
||||
- 🔍 **Search** - Find music across your entire library
|
||||
- 🎧 **Audio Player** with queue management
|
||||
- 📊 **Scrobbling** - Track your listening history
|
||||
|
||||
### Preview
|
||||

|
||||
|
||||
## Quick Start
|
||||
|
||||
### Prerequisites
|
||||
- [Navidrome](https://www.navidrome.org/) server running
|
||||
- Node.js 18+ and pnpm
|
||||
|
||||
### Setup
|
||||
|
||||
1. **Clone and install**
|
||||
|
||||
```bash
|
||||
git clone https://github.com/sillyangel/project-still.git
|
||||
cd project-still/
|
||||
pnpm install
|
||||
```
|
||||
|
||||
2. **Configure Navidrome connection**
|
||||
|
||||
```bash
|
||||
cp .env.example .env.local
|
||||
```
|
||||
|
||||
Edit `.env.local` with your Navidrome server details:
|
||||
|
||||
```env
|
||||
NEXT_PUBLIC_NAVIDROME_URL=http://localhost:4533
|
||||
NEXT_PUBLIC_NAVIDROME_USERNAME=your_username
|
||||
NEXT_PUBLIC_NAVIDROME_PASSWORD=your_password
|
||||
```
|
||||
|
||||
3. **Run the development server**
|
||||
|
||||
```bash
|
||||
pnpm dev
|
||||
```
|
||||
|
||||
Open [http://localhost:40625](http://localhost:40625) in your browser.
|
||||
|
||||
## Migration from Firebase
|
||||
|
||||
This project was migrated from Firebase to Navidrome. See [NAVIDROME_MIGRATION.md](./NAVIDROME_MIGRATION.md) for detailed migration notes and troubleshooting.
|
||||
|
||||
## Tech Stack
|
||||
|
||||
- **Frontend**: Next.js 15, React 19, TypeScript
|
||||
- **UI**: shadcn/ui, Tailwind CSS, Radix UI
|
||||
- **Backend**: Navidrome (Subsonic API compatible)
|
||||
- **Audio**: Web Audio API with streaming
|
||||
- **State**: React Context for global state management
|
||||
|
||||
## Project Structure
|
||||
```
|
||||
lib/
|
||||
navidrome.ts # Navidrome API client
|
||||
app/
|
||||
components/
|
||||
NavidromeContext.tsx # Data provider for Navidrome
|
||||
AudioPlayerContext.tsx # Audio player state management
|
||||
album-artwork.tsx # Album display component
|
||||
artist-icon.tsx # Artist display component
|
||||
AudioPlayer.tsx # Main audio player
|
||||
library/ # Library pages
|
||||
albums/ # Albums view
|
||||
artists/ # Artists view
|
||||
playlists/ # Playlists view
|
||||
album/[id]/ # Album detail page
|
||||
artist/[artist]/ # Artist detail page
|
||||
```
|
||||
|
||||
## Contributing
|
||||
|
||||
1. Fork the repository
|
||||
2. Create a feature branch
|
||||
3. Make your changes
|
||||
4. Test with your Navidrome server
|
||||
5. Submit a pull request
|
||||
|
||||
## License
|
||||
|
||||
This project is licensed under the MIT License.
|
||||
|
||||
## Acknowledgments
|
||||
|
||||
- [shadcn/ui](https://ui.shadcn.com/) for the beautiful UI components
|
||||
- [Navidrome](https://www.navidrome.org/) for the amazing music server
|
||||
- [Subsonic API](http://www.subsonic.org/pages/api.jsp) for the API specification
|
||||
Reference in New Issue
Block a user