Java Spring Boot backend for a team capstone video library and social-style web application.
This backend provides REST APIs that support video management, comments, and a social-style feed. The application connects to a MySQL database and was designed to support a React frontend.
Interactive API documentation is available after starting the application:
http://localhost:8080/swagger-ui/index.html
Swagger API Overview |
Available API Endpoints |
OpenAPI Documentation Interface |
Backend
- Java
- Spring Boot
- Spring Data JPA
Database
- MySQL
Frontend (team project)
- React
The backend follows a layered architecture using Spring Boot controllers, services, and JPA repositories to separate the API layer, business logic, and database access.
Client (React / Swagger UI)
│
▼
Controllers (REST API Endpoints)
│
▼
Services (Business Logic)
│
▼
Repositories (Spring Data JPA)
│
▼
MySQL Database
Below is a summary of key REST API endpoints provided by the backend.
| Method | Endpoint | Description |
|---|---|---|
| GET | /users/all | Retrieve all users |
| GET | /users/{id} | Retrieve user by ID |
| POST | /users/save | Create a new user |
| PUT | /users/update/{id} | Update a user |
| DELETE | /users/delete/{id} | Delete a user |
| Method | Endpoint | Description |
|---|---|---|
| GET | /videos | Retrieve all videos |
| GET | /videos/{id} | Retrieve video by ID |
| POST | /save | Create a new video |
| PUT | /update/{content_id} | Update a video |
| DELETE | /delete/{content_id} | Delete a video |
| Method | Endpoint | Description |
|---|---|---|
| GET | /api/genres | Retrieve all genres |
| GET | /api/genres/{id} | Retrieve genre by ID |
| POST | /api/genres/save | Create a new genre |
| PUT | /api/genres/update/{id} | Update a genre |
| DELETE | /api/genres/delete/{id} | Delete a genre |
| Method | Endpoint | Description |
|---|---|---|
| GET | /posts/all | Retrieve all posts |
| POST | /posts/save | Create a new post |
| POST | /posts/save/user/{userId} | Create post for a user |
| POST | /posts/save/{userId}/{videoId} | Create post for user and video |
| GET | /posts/all/hotTake/{videoId} | Retrieve posts for a video |
Follow these steps to run the backend locally.
git clone https://github.com/kayanr/FlixxerBackEnd.git
cd FlixxerBackEndThe application expects configuration files inside:
src/main/resources
If the folder does not exist, create it.
Example project structure:
src
└── main
├── java
└── resources
Copy the example configuration file:
src/main/resources/application.properties.example
Create a new file named:
src/main/resources/application.properties
Then update the database credentials.
Example configuration:
spring.datasource.url=jdbc:mysql://localhost:3306/flixxer_db
spring.datasource.username=YOUR_USERNAME
spring.datasource.password=YOUR_PASSWORD
spring.jpa.hibernate.ddl-auto=update
spring.jpa.show-sql=true
spring.jpa.database-platform=org.hibernate.dialect.MySQLDialectCreate a MySQL database named:
flixxer_db
Example:
CREATE DATABASE flixxer_db;Run the project using Maven:
mvn spring-boot:runOnce the application starts, open:
http://localhost:8080/swagger-ui/index.html
Swagger provides interactive documentation for testing all API endpoints.
• Video Management – upload, retrieve, and manage video content
• Comments – store and retrieve comments associated with videos
• Social Feed – create and retrieve posts
This project was developed as part of a 5-person bootcamp capstone project.
I contributed as one of the backend developers, focusing on building the Spring Boot REST APIs and integrating the application with MySQL.


