---
# System prepended metadata

title: Ý tưởng cho Unirate

---

# Ý tưởng cho Unirate

## Core ideas

- Sync rating của Codeforces, AtCoder, Codechef lên cùng 1 scale của Codeforces
- Mượn hệ thống rating của atcoder bằng kenkoooo unofficial API, codeforces thì có sẵn còn codechef thì phải crawl

## Features

- **Listing bài với difficulty scale**
- Cung cấp rest API cho problemset (kết hợp với arugo ? cái này chết tươi rồi)
- Community cast vote chỉnh độ khó của codechef (? đéo ổn)
- Virtual contest (để sau)
- **Community cast vote đánh giá bài hay / dở**

Duong Nguyen's features recommendation:
- Recommend bài cho user, user làm bài và sẽ có virtual rating. Một khi bấm vào nút làm bài, user sẽ được đưa tới trang đề, và có timing. Time cho bài sẽ dc tính tương đối theo rating của người dùng và bài. Nếu người dùng không làm được, người đó sẽ bị giảm rating và rating của bài sẽ tăng và ngược lại. MMR
- Community cast vote đánh giá bài hay dở, tiêu chí này sẽ được dùng để priority phần recommend bài, bài nào nhiều like sẽ có tần suất recommend cao hơn.
- 

## Tech stack

- Front: Vue, Bootstrap5
- Server: Node, Express
- Database: Mongodb, mongoose
- API: express, axios
- Hosting: netlify

## Resources

- [Vue](https://www.youtube.com/watch?v=qZXt1Aom3Cs)
- [Node & express](https://www.youtube.com/watch?v=zb3Qk8SG5Ms&list=PL4cUxeGkcC9jsz4LDYc6kv3ymONOKxwBU)
- [Demo blog app bằng vue 3 vids đầu](https://www.youtube.com/playlist?list=PLEHxjuvUU2QrilipaMLO-mWn3MEX6J-Oo)
- [VueX](https://www.youtube.com/watch?v=5lVQgZzLMHc)
- [Login với JWT](https://www.youtube.com/watch?v=b91XgdyX-SM)
- [rest api with mongoose](https://www.youtube.com/watch?v=fgTGADljAeg)
- [authentication jwt nhưng có vue](https://www.youtube.com/watch?v=W5Ky44mWQZE)
## TODO

- Front, trước mắt là làm 1 cái giao diện sao cho display đc list bài đã
- Backend:
    - Dựng schema:
        - Problem
        - User
        - 
    - Kết nối mongo & thử nghiệm
    - API với axios, methods:
        - Trả về list bài
        - register user
        - Trả về detail 1 bài
        - update thông tin 1 bài


- Initialize project [done]
- Dựng server backend với router & nhận rest api của những thứ sau: (trước mắt với codeforces API)
    - View all problems [done]
    - View 1 problem [discarded]
- Database:
    - Dựng schema [done]
    - Kết nối mongodb atlas [done]
    - Initialize codeforces database
    - atcoder database
    - codechef database
    - 