NTU NLP lab wiki backend by express
Download/install nodejs from nvm, then execute
npm install
Open a development webserver in localhost
:
npm run data-init-dev
npm run dev
Depoly a production webserver in server:
npm run data-init
npm run start
Open with arguments:
npm run {dev|start} -- [arguments] ...
Open with specified port:
npm run {dev|start} -- --port 23456
url = localhost:3000 (development)
= nlg17.csie.ntu.edu.tw (production)
View http://url/api/
for example
Method | URL | Description | Parameter |
---|---|---|---|
POST | http://url/api/login | Login with id_token | {id\_token: '...', ...} |
POST | http://url/api/logout | Logout |
Method | URL | Description | Parameter |
---|---|---|---|
GET | http://url/api/seminar | Get all seminar | |
POST | http://url/api/seminar | Create new seminar | {topic: '...', ...} |
POST | http://url/api/seminar/:id | Update seminar with id=:id |
{topic: '...', ...} |
DELETE | http://url/api/seminar/:id | Delete seminar with id=:id |
It's same for all data (seminar
, news
, contactList
, ...)
Method | URL | Description | Parameter |
---|---|---|---|
GET | http://url/api/workstations | Get info of workstations (gpu ...) | |
GET | http://url/api/takeOutGarbage | Get garbage | |
GET | http://url/api/user | Get current user info | |
GET | http://url/api/conference/search | Search conference on wikicfp | {q: ...} |
Apis below by POST
are all admin only.
Method | URL | Description | Parameter |
---|---|---|---|
POST | http://url/api/seminar/postpone | Postpone the future seminars | {id: ...} |
POST | http://url/api/seminar/weekday | Change future seminars' weekday | {weekday: 0~6} |
POST | http://url/api/seminar/swap | Swap two auto-gen seminars | {id1: ..., id2: ...} |
POST | http://url/api/seminar/schedule | Re-schedule future seminars | {idList: ..., date: ...} |
POST | http://url/api/garbage/schedule | Schedule garbage order | {idList: ..., date: ...} |
GET | http://url/api/system | Get the system variables | |
POST | http://url/api/system | Set the system variables (not recommend) | {seminarWeekday: ..., ...} |
- index.js Code entry
- package.json
- config.js Backend config
- client_secret.json Client secret for google apis
- data/ Old wiki data for database initialize
- static/ Front end single page app
- templates/ Templates for email ... etc
- src/
- server.js Start the server
- config.js Config loader
- models/ Models scheme
- contactList.js
- news.js
- seminar.js
- slide.js
- system.js
- conference.js
- email.js
- routers/ Route defination
- index.js Route defination
- settings/ Settings for express
- model.js Function: DB/model relative things
- login.js Function: login/user/google-login relative things
- gpu-usage.js Function: get workstation gpu/cpu usage
- take-out-garbage.js ction: godlike auto take out the garbage by ContactList
- manage.js Function: manage backend (scheduling ...)
- cfp-search.js Function: search conference on www.wikicfp.com/
- fake-fe.js Function: fake front-end for testing
- services/
- index.js Loads all services
- mail.js Mail service: Scan email in DB periodically to send
- seminar.js Seminar service: Weekly add new seminar and send reminder email
- conference.js Conference service: Update conference information periodically
- gapi-test.js Kanna tell you taking out the garbage
- google-api.js Function: google api things, like getting token in backend
- weekly.js Function: Weekly run services
- utils/ Utilities for code
- tools/ Tools
- data-parser.js Parse json data into DB
- test/ Unit test
- Data
- More data
- Record validation
- User role
- File server
- Security
- Session: store session in mongo (production)
- Session: httpOnly
- https
- random jwt key (in 'router/login.js')
- Service
- Mail service
- Call for paper service
- Seminar scheduling
- Take out the garbage scheduling
- delete 權限 (admin/owner only)
- API route
- dev/product environment
- static folder for front-end