# SiB App SiB App is the magic tool that allows the Happy Dev network to thrive in a decentralized way. ## Getting Started These instructions will get you a copy of the project up and running on your local machine for development and testing purposes. See deployment for notes on how to deploy the project on a live system. ### Prerequisites To install SiB App, you'll need to have: - Python3 & Pip - NodeJS & NPM - A Prosody Server - (Optional) A SMTP Server ### Installing #### At first, you'll need to deploy a `sib-manager` server, then configure it. #### `sib-manager` installation or update ``` $ pip3 install -U sib-manager ``` #### `sib-manager` deploy ``` $ sib startproject newserver -m djangoldp_project -m oidc_provider@django-oidc-provider -m djangoldp_circle -m djangoldp_joboffer -m djangoldp_profile -m djangoldp_skill -m djangoldp_account -m djangoldp_notification -m djangoldp_conversation $ sib initproject newserver ``` We're using - `djangoldp_project`, - `django-oidc-provider`, - `djangoldp_circle`, - `djangoldp_joboffer`, - `djangoldp_profile`, - `djangoldp_skill`, - `djangoldp_account`, - `djangoldp_notification`, - `djangoldp_conversation` As dependencies, if you don't want them, just remove the `-m packagename`. `sibserver` is the name of the folder that `sib-manager` will create, choose it wisely. In addition to the `startproject` you can add : - `--site-url "http://localhost:8000"` - `--production` to use postgresql instead of sqlite - `--db-host`, `--db-name`, `--db-user` and `--db-pass` are used to configure the database (mandatory with `--production`) - `--smtp-host`, `--smtp-user` and `--smtp-pass` are used to configure the SMTP (optional) #### `sibserver` configuration You'll have to change some settings on the `sibserver` files. - Add your server name to `ALLOWED_HOSTS` - In `settings.py`, add your hostname on `ALLOWED_HOSTS`, eg: ``` ALLOWED_HOSTS = ['api.myserver.com', 'localhost'] ``` - Around line `96-97` of `settings.py` set your `PROSODY_HTTP_URL`, `JABBER_DEFAULT_HOST`, eg: ``` PROSODY_HTTP_URL = 'https://jabber.happy-dev.fr' JABBER_DEFAULT_HOST = 'happy-dev.fr' ``` #### Add an RSA Key for `oidc` On the first `sibserver` folder: ``` $ ./manage.py creatersakey ``` #### `sib-manager` launching On the first `sibserver` folder ``` $ sib runserver ``` You can also launch it directly from `manage.py`. Don't forget to activate the `venv` if so. #### Create a Client ID for Prosody & Client - Go to `localhost:8000/admin/` - Login with previously created account. - If needed you can create another admin account with `./manage.py createsuperadmin` - Add a `Clients` on `OpenID Connect Provider` section - Name it as you wish - `Client type`: `Public` - `Response types`: `id_token token (Implicit Flow)` - `Redirect URIs`: ``` http://localhost:3000 http://127.0.0.1:3000 http://0.0.0.0:3000 http://localhost:8000 https://myserver.com ``` - Keep the `6-digits` newly create `Client ID` somewhere #### Then, you'll have to install the client. #### Clone this repository ``` # With SSH $ git clone git@git.happy-dev.fr:startinblox/applications/sib-app.git # Or with HTTPS $ git clone https://git.happy-dev.fr/startinblox/applications/sib-app.git ``` #### Install dependencies ``` $ cd sib-app $ npm install $ node copy_lib.js $ cp -n src/config.sample.json src/config.json ``` #### Configure `config.json` On the newly created `./src/config.json` change the `dev` configuration like this: ``` "dev": { "sdn": "http://api.myserver.com", # Or localhost:8000 "cdn": "https://cdn.happy-dev.fr", "xmpp": "https://prosody.myserver.com/http-bind/", "client_id": "000000" # <- Here goes your previously created Client ID }, ``` #### That's all! Now let's run it! ``` # For dev $ make watch # Or for prod $ make build # Then on another terminal $ make serve ``` ## Deployment Deployment will need a registered RSA Key on production servers. ### On Alpha ``` $ make syncprod ``` ### On Staging ``` $ make sync ``` ## Built With * [Sib-Core](https://git.happy-dev.fr/startinblox/framework/sib-core/) - An awesome new framework! ### Architecture Some general schema of the existing StartinBlox applications architecture can be found [here](https://docs.google.com/presentation/d/1iCRGaJpFvZjhjIUnpsn6lRTJJ31ES6n94BNkJygzUwM/edit?usp=sharing).