Maxify is a full-stack personal music streaming service built with modern technologies. It allows users to upload, organize, and stream their personal music collection through a beautiful web interface.
- Upload audio files (MP3, WAV, FLAC, AAC, OGG, M4A)
- Automatic metadata extraction
- Personal music library organization
- Advanced search functionality
- Create and manage custom playlists
- Add/remove tracks from playlists
- Playlist sharing and organization
- Drag & drop playlist management
- Web-based audio player with full controls
- Play/pause, skip, seek functionality
- Volume control
- Queue management
- Real-time progress tracking
- JWT-based authentication
- Secure user registration and login
- Protected routes and API endpoints
- Password hashing with bcrypt
- Responsive design with Tailwind CSS
- Beautiful components with shadcn/ui
- Dark/light theme support
- Mobile-friendly interface
- Real-time notifications
- Framework: Gin
- Database: PostgreSQL
- Cache: Redis
- ORM: GORM
- Authentication: JWT with golang-jwt
- File Storage: Local filesystem
- Framework: Next.js 14 with App Router
- Language: TypeScript
- Styling: Tailwind CSS
- Components: shadcn/ui
- Forms: React Hook Form + Zod
- HTTP Client: Axios
- Icons: Lucide React
maxify/
โโโ server/ # Go backend
โ โโโ cmd/server/ # Application entry point
โ โโโ internal/ # Internal packages
โ โ โโโ config/ # Configuration management
โ โ โโโ database/ # Database connections
โ โ โโโ models/ # Data models
โ โ โโโ services/ # Business logic
โ โ โโโ controllers/ # HTTP handlers
โ โ โโโ middleware/ # HTTP middleware
โ โ โโโ routes/ # Route definitions
โ โโโ docker-compose.yml # Docker services
โ โโโ go.mod # Go dependencies
โ โโโ Makefile # Build commands
โโโ client/ # Next.js frontend
โ โโโ src/
โ โ โโโ app/ # Next.js app router pages
โ โ โโโ components/ # React components
โ โ โโโ contexts/ # React contexts
โ โ โโโ lib/ # Utilities and API client
โ โโโ package.json # Node.js dependencies
โ โโโ tailwind.config.js # Tailwind configuration
โโโ docs/ # Project documentation
- Go 1.21+
- Node.js 18+
- Docker and Docker Compose
- Git
git clone <repository-url>
cd maxifycd server
# Copy environment file
cp env.example .env
# Start PostgreSQL and Redis
docker-compose up -d
# Install Go dependencies
go mod tidy
# Run the server
go run cmd/server/main.goThe backend will be available at http://localhost:8080
cd client
# Copy environment file
cp env.local.example .env.local
# Install dependencies
npm install
# Start development server
npm run devThe frontend will be available at http://localhost:3000
- Open
http://localhost:3000in your browser - Register a new account or login
- Upload your first audio file
- Create playlists and start streaming!
POST /api/v1/auth/register- Register new userPOST /api/v1/auth/login- User loginPOST /api/v1/auth/logout- User logout
GET /api/v1/users/profile- Get user profilePUT /api/v1/users/profile- Update user profileGET /api/v1/users/stats- Get user statistics
POST /api/v1/tracks/upload- Upload audio fileGET /api/v1/tracks- Get user's tracksGET /api/v1/tracks/:id- Get specific trackDELETE /api/v1/tracks/:id- Delete trackGET /api/v1/tracks/:id/stream- Stream audio file
POST /api/v1/playlists- Create playlistGET /api/v1/playlists- Get user's playlistsGET /api/v1/playlists/:id- Get specific playlistPUT /api/v1/playlists/:id- Update playlistDELETE /api/v1/playlists/:id- Delete playlistPOST /api/v1/playlists/:id/tracks- Add track to playlistDELETE /api/v1/playlists/:id/tracks/:trackId- Remove track from playlist
GET /api/v1/search?q=query- General searchGET /api/v1/search/tracks?q=query- Search tracksGET /api/v1/search/playlists?q=query- Search playlistsGET /api/v1/search/suggestions?q=query- Get search suggestions
cd server
docker-compose up -d# Build backend
cd server
go build -o bin/maxify cmd/server/main.go
# Build frontend
cd client
npm run buildcd server
go test ./...cd client
npm testcd server
go run cmd/server/main.gocd client
npm run dev# Backend
cd server
go fmt ./...
# Frontend
cd client
npm run lint
npm run formatEdit server/.env:
DB_HOST=localhost
DB_PORT=5432
DB_USER=maxify_user
DB_PASSWORD=maxify_password
DB_NAME=maxify
REDIS_HOST=localhost
REDIS_PORT=6379
JWT_SECRET=your-secret-key
JWT_EXPIRY=24h
PORT=8080
UPLOAD_DIR=./uploads
MAX_FILE_SIZE=50MBEdit client/.env.local:
NEXT_PUBLIC_API_URL=http://localhost:8080/api/v1- Software Requirements Specification: SRS
- Domain Model: DM
- Use Cases: UC
- Architecture Diagrams: Component, Deployment
- Fork the repository
- Create a feature branch (
git checkout -b feature/amazing-feature) - Commit your changes (
git commit -m 'Add amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
This project is for educational purposes only.
- Gin - HTTP web framework
- Next.js - React framework
- shadcn/ui - UI components
- Tailwind CSS - CSS framework
- Lucide - Beautiful icons
- Cloud storage integration (AWS S3, Google Cloud)
- Real-time collaboration features
- Advanced audio analysis and recommendations
- Mobile app (flutter)
- Social features (sharing, following)
- Podcast support
- Offline mode with PWA
- Advanced search with full-text search
- Audio transcoding and format conversion
- Analytics and usage statistics