Task breakdown for the Addis Software Test Project - MERN Stack
Creating a music website application using MERN stack.
mkdir AdissMusicApp
- On GitHub create a new repository named "addisMusicApp".
npm create-react-app frontend --template typescript
npm init -y
- Install emotion Styled System
npm i @emotion/styled @emotion/react @emotion/core
- Install Redux Toolkit
npm install @reduxjs/toolkit
npm install react-redux
- Install Redux-Saga
npm install redux-saga
- Install Styled system
npm i styled-system styled-components @types/styled-components
- Install React-Router-Dom
npm install react-router-dom
- Install Lucide React icons
npm install lucide-react
- Install React Toastify
npm install --save react-toastify
- Install Mongoose, express, cors
npm intall mongoose express cors
- Install Nodemon
npm install nodemon
- Install dotenv
npm install dotenv
- Install cookie parser
npm install cookie-parser
- Install bycrpt, jsonwebparser
npm install bcryptjs jsonwebtoken
Define MongoDB schema for songs Include fields:
- Title
- Artist
- Album
- Genre
- cover-image (coverUrl)
- releaseDate
Define MongoDB schema for album Include fields:
- Title
- Artist
- cover-image (coverUrl)
- releaseDate
- Genre
Define MongoDB schema for artist Include fields:
- Name
- Artist-image (artistUrl)
- Genre
Define MongoDB schema for User Include fields:
- name
- password
- Create endpoint to create a new song
- Create endpoint to list all songs
- Create endpoint to update a song
- Create endpoint to delete a song
- Create endpoint to create a new user
- ---Create endpoint to list all users
- Create endpoint to update a user
- Create endpoint to delete a user
- Create Authentication
- Create a protect middleware
- Create endpoint to calculate and return overall statistics
- Include statistics such as total songs, artists, albums, genres, songs per genre, etc.
- Write unit tests for each endpoint using testing frameworks like Jest
- Test API functionality using Thunder Client
- Create Dockerfile for backend
- Docker-compose for MongoDB and backend
- Initialize React project with Typescript
- Install required packages (Redux Toolkit, Redux-Saga, Emotion, Styled System)
- creating an intractive Landing page for the website
- creating an intractive About page for the website
- Design UI for displaying list of songs
- Fetch songs from backend API and display them
- Implement functionality to add, and delete songs
- Update UI dynamically when songs are added, or deleted without page reload
- Design UI to display overall statistics
- Fetch statistics data from backend API and display them
- Implement filtering functionality, such as filter by genre
- Update song list based on applied filters
- Integrate frontend with backend REST API endpoints
- Test integration and ensure proper data flow between frontend and backend
- Writing unit tests for components and Redux logic
- Test UI functionality and behavior
- Debug and fix any issues
- Host frontend application on platforms like Netlify or Vercel
- Implement additional features like user
- authentication,
- search functionality, etc.
- Deploy backend using platforms like Heroku or Render