VibeOn is a Spring Boot–based REST API for a music streaming platform. It provides functionality for managing users, songs, and playlists, along with secure authentication and AI-powered features using Ollama.
- User authentication and authorization (JWT-based)
- Playlist management (create, update, delete)
- Song management and playlist association
- Playlist-song mapping with ordering support
- File handling for songs and images
- AI integration using Ollama (Mistral model)
- Generic AI service for structured and unstructured responses
- Java 17
- Spring Boot
- Spring Data JPA (Hibernate)
- MySQL
- Spring Security (JWT)
- Spring AI (Ollama)
- Lombok
- Maven
The project includes a generic AI service built on top of Ollama:
-
Uses Spring AI
ChatClient -
Accepts dynamic prompts
-
Returns:
- plain text responses
- structured JSON mapped to Java objects
-
Handles markdown-formatted responses (e.g., ```json blocks)
-
Centralized parsing and error handling
This enables use cases such as:
- content generation
- recommendation logic
- structured AI-driven responses
src/main/java/com/project/vibeon
│
├── controller # REST controllers
├── service # Interfaces
├── serviceimpl # Business logic implementations
├── repository # JPA repositories
├── entity # Database models
├── dto
│ ├── request # Request DTOs
│ └── response # Response DTOs
├── config # Security and application configs
├── filter # Security filters (JWT, etc.)
├── util # Utility classes
├── exception # Global exception handling
├── Application.java # Entry point
app_usersongplaylistplaylist_song(mapping table with position and metadata)
git clone <repo-url>
cd vibeonUpdate application.properties:
spring.datasource.url=jdbc:mysql://127.0.0.1:3306/vibeon?createDatabaseIfNotExist=true&useSSL=false&serverTimezone=UTC
spring.datasource.username=your_username
spring.datasource.password=your_passwordEnsure MySQL is installed and running on your system.
mvn clean installmvn spring-boot:runBase URL:
http://localhost:8080
Endpoints include:
- authentication and authorization
- playlist management
- song operations
- AI-powered features
This project is licensed under the MIT License.
- Uses JPA relationships instead of manual foreign key handling
- Repository methods follow entity field naming conventions
- AI responses are parsed into typed objects when required