MisterAzix / boumboum-back

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

# Music Match API with AdonisJS

An innovative application that connects people based on their musical preferences, drawing inspiration from Tinder.

## User Flow

### User Registration/Login
- Users sign up or log in using their Spotify credentials.

### Profile Creation
- Users complete their profiles, including basic information (name, date of birth, brief description, gender preference, and profile picture).
- Users select and customize their top 4 favorite tracks from Spotify, retrieved using the Spotify API.

### Matchmaking
- Users are presented with potential matches based on their gender preference.

### Interaction
- Users see their matches.
- For mutual matches, they can view the email of the match.

## API Requirements

We seek a skilled Node.js developer to create this API using the AdonisJS framework. The chosen database engine can be PostgreSQL or MySQL based on your expertise and recommendation.

## Required Endpoints

1. **User Registration/Login**
   - Implement OAuth2 authentication with Spotify to allow users to register or log in.

2. **Logout Endpoint**
   - Provide a secure endpoint for users to log out of their accounts.

3. **Profile Management**
   - Create endpoints for users to complete their profiles, including basic information and their preferred Spotify tracks.

4. **Matching Endpoint**
   - Develop an endpoint to retrieve and match users based on their gender preference.

5. **Spotify Integration**
   - Implement an endpoint to search for songs using the Spotify API.

6. **Match History**
   - Develop an endpoint to list all matches, indicating whether the match is mutual. Include relevant user data for each match.

## Additional Spotify Data

Upon user registration, it's crucial to save the user's Spotify preferences for future use, including:
- User's top 20 artists
- User's top 20 tracks
- Artists the user follows

## Technical Details

- **Framework:** AdonisJS
- **Database:** MySQL
- **Authentication:** OAuth2 with Spotify

## Getting Started

1. **Install Dependencies**
    ```bash
    npm install
    ```

2. **Configure Database Connection**
    - Set up the database connection details in your `.env` file.

3. **Configure Spotify API**
    - Add your Spotify client_id and client_secret in your `.env` file.

4. **Run Migrations and Seed Data**
    ```bash
    node ace migration:run
    node ace db:seed
    ```

5. **Start the Application**
    ```bash
    npm run dev
    ```

6. **Access the API at**
   - [http://localhost:3333/api](http://localhost:3333/api)

## API Documentation

- For the Login API (http://localhost:3333/api/signin), open it in a browser as the request will be redirected to Spotify for authentication. This API won't work in Postman.
- All other APIs are provided in the Postman collection.

About


Languages

Language:TypeScript 99.5%Language:Dockerfile 0.5%