shu-scheduling-helper-frontend
A web-based timetabler helping SHUers filter and preselect courses easily.
This is a continuation of SHU-scheduling-helper (a Chrome extension). Considering that the update method of the extension cannot adapt to the new online courses selecting system of Shanghai University in a timely way, we decided to make this project online.
The shu-scheduling-helper project has a frontend part and a backend part. For safety reasons, the backend part is private, but its APIs are open.
Features
- Courses looking up and filtering
- Reserved courses list
- Colorful timetable with editable random seed
- Quick inputting
- Exporting text, backup and restoring
- Automatic conflicts solving
Frameworks & Main Libraries | |
---|---|
Frontend | vue ant-design-vue (UI) axios (HTTP client) localforage (Data persistence) pako (Compression) vuex (State management) ... |
Backend | flask ... |
Development
Backend APIs
API 1
https://app.zkllab.com/xk/courses/info
API 2
{hash} is presented by API 1
https://app.zkllab.com/xk/courses/{hash}.json
Frontend quick start
$ git clone https://github.com/ZKLlab/shu-scheduling-helper-frontend.git
$ cd shu-scheduling-helper-frontend
$ yarn # install
$ yarn serve # serve at localhost:8080
Build for production
$ yarn build
Directory structure
.
├── babel.config.js
├── public
│ └── ......
├── src
│ ├── apiConfig.js
│ ├── assets
│ │ └── ......
│ ├── mixins # Mixins for common components
│ │ └── ......
│ ├── pages
│ │ ├── index # Desktop version
│ │ │ ├── App.vue
│ │ │ ├── components
│ │ │ │ └── ......
│ │ │ └── main.js
│ │ ├── m # Mobile version
│ │ │ ├── App.vue
│ │ │ ├── components
│ │ │ │ └── ......
│ │ │ └── main.js
│ │ ├── quick-inputting
│ │ │ ├── App.vue
│ │ │ └── main.js
│ │ └── redirect
│ │ └── main.js
│ ├── plugins
│ │ └── ant-design-vue.js
│ ├── storage.js # Data persistence (compression)
│ ├── store.js # Core part processing data
│ └── utils.js # Some reusable logics
└── vue.config.js