Files
mice/README.md
angel ff4a3ed0da
Some checks failed
Development Docker Image (Nightly) / check_changes (push) Successful in 5s
Development Docker Image (Nightly) / push_to_registry (push) Failing after 5s
Update README.md
2025-10-27 12:35:57 -05:00

138 lines
3.7 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<p align="center">
<img src="https://git.sillyangel.dev/angel/mice/raw/main/public/icon-512.png?raw=true" alt="Mice Logo" width="120" />
</p>
<h1 align="center"><strong>Mice | Navidrome Client</strong></h1>
> Project based on [shadcn/ui](https://github.com/shadcn-ui/ui)'s music template.
<!-- this looks like "ai" lol but its not -->
This is a "Modern" Navidrome (or Subsonic) client built with [Next.js](https://nextjs.org/) and [shadcn/ui](https://ui.shadcn.com/). It creates a beautiful, responsive music streaming web application that connects to your Navidrome server, and fully able to self-host using docker!
## 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
- **Search** - Find music across your entire library
- **Audio Player** with queue management
- **Scrobbling** - Track your listening history
- **Playlist Management** - Create and manage playlists
- **Caching** - Cache/Offline save your server
### Preview
![preview](https://git.sillyangel.dev/angel/mice/raw/branch/dev/public/home-preview.png)
## Quick Start
### Prerequisites
- [Navidrome](https://www.navidrome.org/) server running
- Node.js 18+
### Setup
1. **Clone and install the required dependencies**
```bash
git clone https://github.com/sillyangel/project-still.git
cd project-still/
pnpm install
# or npm
npm install
```
## 2. **Configure the Navidrome connection**
First, copy the example environment file:
```bash
cp .env.example .env
```
Next, open the new `.env` file and update it with your Navidrome server credentials:
```env
NEXT_PUBLIC_NAVIDROME_URL=http://localhost:4533
NEXT_PUBLIC_NAVIDROME_USERNAME=your_username
NEXT_PUBLIC_NAVIDROME_PASSWORD=your_password
NEXT_PUBLIC_POSTHOG_KEY=phc_XXXXXXXXXXXXXXXXXX
NEXT_PUBLIC_POSTHOG_HOST=https://us.i.posthog.com
```
> **Tip:** If you dont have your own Navidrome server yet, you can use the public demo credentials:
```env
NEXT_PUBLIC_NAVIDROME_URL=https://demo.navidrome.org
NEXT_PUBLIC_NAVIDROME_USERNAME=demo
NEXT_PUBLIC_NAVIDROME_PASSWORD=demo
```
3. **Run the development server**
```bash
pnpm dev
# or npm
npm run dev
```
Open [http://localhost:40625](http://localhost:40625) in your browser.
## Docker Deployment
For easy deployment using Docker:
### Quick Docker Setup
```bash
# Run using pre-built image (app will prompt for Navidrome configuration)
docker run -p 3000:3000 sillyangel/mice:latest
# Or build locally
docker build -t mice .
docker run -p 3000:3000 mice
```
### Docker Compose (Recommended)
```bash
# Copy environment template and configure
cp .env.docker .env
# Edit .env with your settings (optional - app can prompt)
docker-compose up -d
```
### Pre-configured Docker Run
```bash
docker run -p 3000:3000 \
-e NEXT_PUBLIC_NAVIDROME_URL=http://your-navidrome-server:4533 \
-e NEXT_PUBLIC_NAVIDROME_USERNAME=your_username \
-e NEXT_PUBLIC_NAVIDROME_PASSWORD=your_password \
sillyangel/mice:latest
```
**For detailed Docker configuration, environment variables, troubleshooting, and advanced setups, see [DOCKER.md](./DOCKER.md)**
## 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
## 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