This repository has been archived by the owner on Sep 7, 2020. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 3
Developer guide
Massimo Girondi edited this page Nov 22, 2017
·
17 revisions
- The language of the source code, API and repository pages is English
- The web interface and the Telegram Bot use Italian
- The comments in the source follow JSDoc sintax
- All API methods need to be annotated with ApiDoc.js sintax
- All the files under the docs folder of the repository are automatically published trough GitHub Pages
The project development follows 2-week long sprints. The first official sprint start is set to Monday 23th.
- bots
- telegram_bot
- ...
- backend (api)
- docs
- frontend
We will use the following strategy:
- a master-only with feature branches
- a merging strategy that works as follows: given the master branch M and the feature branch F (with a new feature in F and M ahead of F, i.e. no fast-forward allowed), the steps to merge F into M are:
- merge M into F
- fix merge issues and generated regressions in F
- merge F into M We have already used this merging strategy and the difference between it and the rebase one is that we isolate merge regressions in the feature branch and we keep a linear history of merges (which is not the case with the rebase command); this isolation allows us to reset branches locally if we understand that the feature branch was not ready to be merged.
- Source code hosted on GitHub
- Planning through GitHub Issues and ZenHub
- Web pages hosted on GitHub pages
- Backend hosted Heroku
- DB hosted on mLab
- Bot API by Telegram
- Login through Google OAuth2.0
- Team communication thorough Telegram group
- Node.js, MongoDB for backend
- Bootsrap, JQuery, HTML5 for Web frontend
- No private repositories support in free version
- Still have some bugs
- ZenHub is free and is integrated in the GitHub website
- The ZenHub extension provide easy access to the notifications
- ZenHub is available both for Firefox and Chrome
- ZenHub is also available trough a dedicated Web Application
- MongoDB native driver is faster
- At any point, if we use a "standard" way for saving data, it's possible to switch to an object-based access to the DB
- MongoDB is a document-oriented NoSQL DBMS; using a schema-based access driver makes the choice of using a NoSQL database silly; MongoDB allows multiple versions of the same Object (i.e., abstract entity) to be stored and used with no need to modify the existing code (both {type: student, name:Tom} and {type: student, name:Tom, surname:Bill}
The work will be divided by features, so that everybody can work with all the technologies of the project. Every component (bot, backend, website,..) will be assigned a person who will be accountable for that component: this will ensure good control on the whole system while keeping the team flexibility high.
For team communication we use a Telegram group.
Conflicts will be handled with a hard-vote policy.