A microservices-based music platform built with FastAPI, demonstrating modern backend architecture patterns.
This project consists of three independent microservices:
Handles user authentication and management.
- User registration
- User login
- Profile management
Manages music catalog including songs, artists, and albums.
- Add/remove songs
- Artist management
- Album cataloging
Creates and manages user playlists.
- Create playlists
- Add/remove songs from playlists
- Share playlists
- Framework: FastAPI
- Database: SQLite (can be upgraded to PostgreSQL)
- Language: Python 3.9+
- API Documentation: Swagger UI (auto-generated)
- Python 3.9+
- pip
- Virtual environment (recommended)
- Clone the repository:
git clone https://github.com/yourusername/music-microservices.git
cd music-microservices
- Create and activate virtual environment:
python3 -m venv venv
source venv/bin/activate # On Windows: venv\Scripts\activate
- Install dependencies:
pip install -r requirements.txt
User Service:
cd user-service
uvicorn main:app --reload --port 8001
Access API docs: http://localhost:8001/docs
Music Service:
cd music-service
uvicorn main:app --reload --port 8002
Access API docs: http://localhost:8002/docs
Playlist Service:
cd playlist-service
uvicorn main:app --reload --port 8003
Access API docs: http://localhost:8003/docs
Each service has auto-generated interactive API documentation available at /docs
endpoint.
POST /users/register
- Register new userPOST /users/login
- Login userGET /users
- Get all usersGET /users/{id}
- Get user by IDDELETE /users/{id}
- Delete user
POST /songs
- Add new songGET /songs
- Get all songsGET /songs/{id}
- Get song by IDPUT /songs/{id}
- Update songDELETE /songs/{id}
- Delete song
POST /playlists
- Create playlistGET /playlists
- Get all playlistsGET /playlists/{id}
- Get playlist by IDPOST /playlists/{id}/songs
- Add song to playlistDELETE /playlists/{id}
- Delete playlist
Run tests for each service:
pytest user-service/tests
pytest music-service/tests
pytest playlist-service/tests
Run all services with Docker Compose:
docker-compose up
music-microservices/
├── user-service/ # User authentication service
├── music-service/ # Music catalog service
├── playlist-service/ # Playlist management service
├── shared/ # Shared utilities
├── docs/ # Documentation
├── README.md
└── requirements.txt
Contributions are welcome! Please feel free to submit a Pull Request.
This project is licensed under the MIT License.
Christyan Simbolon
- GitHub: @chrisimbolon
- Portfolio: chrisimbolon.dev
This project demonstrates:
- ✅ Microservices architecture
- ✅ RESTful API design
- ✅ FastAPI framework
- ✅ Service-to-service communication
- ✅ Database design per service
- ✅ API documentation
- ✅ Modern Python development practices
Built with ❤️ and 🎸 by Christyan Simbolon