---
# System prepended metadata

title: A Fullstack developer exercise

---

# A Fullstack developer exercise
This exercise is made to test your abilities to solve a typical fullstack issue.

## Context
Basically, you'll need to connect to spotify API to be able to do album searches, then from your Backend API show the current comments, allowing the user to put a comment on a specific album.

The FrontEnd part could be developed using your prefeered JS Framework (Angular, React, Vue,...)
The Backend must be a Java SE api, using MySQL to store the comments

## API Endpoints

The backend must to expose the following endpoints:

-   GET /search?q=:searchQuery -> Returns a filtered list from Spotify API
-   GET /album/:albumId -> Returns album details from Spotify API
-   GET /comments/:albumId -> Returns album comments from MySQL Database
-   POST /comments -> Create a new comment from MySQL Database
    -   Body: { albumId: String, email: String, text: String }

### Spotify credentials
To comunicate to Spotify through our backend, you must have a Spotify access token. To get this access token, login in:

https://developer.spotify.com/dashboard/

Create an App and follow the steps
- After creating the App, a client_id and a client_secret will be provided
- Once you have the keys, create .env file in the backend/ directory with the following env variables:

```
SPOTIFY_CLIENT_ID=<client_id>
SPOTIFY_CLIENT_SECRET=<client_secret>
```

## Front End Sections and functionalities
- /albums -> Display the list of albums, each album must be selectable and linked to /albums/:id 
- /albums/:id -> Display basic album information, title, description. At the botttom COMMENTS SECTION, where you must be able to list the comments and add a new one

## Technical Requirements
### API
- Developed with Java SE and MySQL
- Use you best Architecture approach to prove your skills
- Try to use small code pieces

### Front End
- Use components

