Skip to content
This repository has been archived by the owner on Sep 7, 2020. It is now read-only.

Developer guide

Massimo Girondi edited this page Nov 22, 2017 · 17 revisions

Developer guide

  • 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

Project management

Sprints

The project development follows 2-week long sprints. The first official sprint start is set to Monday 23th.

Repository structure

  • bots
    • telegram_bot
    • ...
  • backend (api)
  • docs
    • frontend

Branching strategy

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:
  1. merge M into F
  2. fix merge issues and generated regressions in F
  3. 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.

Technologies used

  • 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
Why ZenHub instead of Waffle.io
  • 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
Why MondoDB without Mongoose?
  • 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}

Team management

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.

Communication channels

For team communication we use a Telegram group.

Conflicts

Conflicts will be handled with a hard-vote policy.