website url https://fir-react-example-e2b28.web.app/
- [✔] Login
- [✔] Register
- [✔] Logout
- [✔] Show all course
- [✔] Get course data by Pagination
- [✔] Filter course by course name and course description
- [✔] Filter course by course duration
- [✔] Clear all filter
- [✔] Create course
- [✔] Delete course
- [✔] Responsive for web, ipad, and mobile size
- [✔] Loading action less than 3 seconds
- [✔] Notification for all action (created course, deleted course and api error)
- [✔] Scrolling pagination
- [✔] Filter course by search params
- [✔] Access token for sending api request (exp: 1h)
- [✔] Refresh token for re-generate tokens (exp: 7d)
- [✔] When user logout everyone else can't use refresh token anymore
- [✔] Auth route for client side
server deploy on https://skillplange-server.herokuapp.com/
Path | Method | Access | Description | Request Body Data |
---|---|---|---|---|
/register |
POST | Public | Register the user | - username (str) - password (str) - confirmPassword (str) -firstname (str) - lastname (str) - nickname (str) - birthday (str) - gender (str) |
/login |
POST | Public | Log the user in | username (str) -password (str) |
/refreshToken |
POST | Public | Re-generate tokens | - username (str) - refreshToken (str) |
/logout |
DELETE | Private | Log the user out | |
/course?take={takeParam}&skip={skipParam}&keyword={keywordParam}&minDuration={minParam}&maxDuration={maxParam} |
GET | Private | Get course by using pagination technique and filter course by using keyword, minDuration, and maxDuration params | |
/course |
POST | Private | Create course | Using form-data - image - name - description - category - subject - startTime (MM-DD-YYYY) - endTime (MM-DD-YYYY) - numberOfStudent - duration (second unit) |
/course/:id |
DELETE | Private | Delete Course |
root
├───client
│ ├───public
│ └───src
│ ├───api
│ ├───app
│ ├───common
│ │ ├───field
│ │ └───notification
│ ├───components
│ │ ├───course
│ │ ├───empty
│ │ └───navbar
│ ├───constants
│ ├───interfaces
│ ├───pages
│ │ ├───home
│ │ ├───login
│ │ └───register
│ └───slices
└───server
├───config
└───src
├───controller
├───dto
├───entity
├───firebase
├───interfaces
├───middleware
└───service
package.json
README.md
cd client
npm install
cd server
npm install
note : after that don't forget to create env file for client and server
in root directory
npm run dev
application will run concurrently for client and server side