diff --git a/README.md b/README.md index 1489beb..5be09ae 100644 --- a/README.md +++ b/README.md @@ -1,74 +1,209 @@ -# HD app +# SiB App -HD app is the magic tool that allows the Happy Dev network to thrive in a decentralized way. +SiB App is the magic tool that allows the Happy Dev network to thrive in a decentralized way. -## Use cases +## Getting Started -Identified and scheduled use cases of the application includes (but are not limited to): +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. -- Listing of projects -- Listing of members -- Search of members by skills -- Invoicing and billing -- Project-scoped chat -- Personal messaging +### Prerequisites -### Chat +To install SiB App, you'll need to have: -The repository of the SIB Chat component can be found here: +- Python3 & Pip +- NodeJS & NPM +- A Prosody Server +- (Optional) A SMTP Server -- https://git.happy-dev.fr/startinblox/sib-chat +### Installing -It is based on XMPP as messaging protocol, Prosody as the server and ConverseJS as the client. +#### At first, you'll need to deploy a `sib-manager` server, then configure it. -### Project +#### `sib-manager` installation or update -The repository of the project listing components is the core and can be found here: +``` +$ pip3 install -U sib-manager +``` -- https://git.happy-dev.fr/startinblox/sib-core +#### `sib-manager` deploy -### Invoicing +``` +$ sib startproject sibserver -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 --venv +``` -The invoicing component is still at an early stage. Its repository is here: +We're using +- `djangoldp_project`, +- `django-oidc-provider`, +- `djangoldp_circle`, +- `djangoldp_joboffer`, +- `djangoldp_profile`, +- `djangoldp_skill`, +- `djangoldp_account`, +- `djangoldp_notification`, +- `djangoldp_conversation` -- https://git.happy-dev.fr/startinblox/sib-invoicing +As dependencies, if you don't want them, just remove the `-m packagename`. -## Architecture +The `--venv` mean that `sib-manager` will create and use a virtual env, if you want to use your system env remove it. -Some general schema of the existing StartinBlox applications architecture can be found here: +`sibserver` is the name of the folder that `sib-manager` will create, choose it wisely. -https://docs.google.com/presentation/d/1iCRGaJpFvZjhjIUnpsn6lRTJJ31ES6n94BNkJygzUwM/edit?usp=sharing +#### `sibserver` configuration -## Installation +You'll have to change some settings on the `sibserver` files. -If you want to contribute or test the app, please follow those steps. +- Change `oidc_provider` from `packages.py` to `settings.py`: + - Remove `oidc_provider` line in `./sibserver/packages.py` + - Add `oidc_provider` on `INSTALLED_APPS` in `./sibserver/settings.py` +- 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 `75-79` of `settings.py` set your `PROSODY_HTTP_URL`, `JABBER_DEFAULT_HOST` & `BASE_URL`, eg: + ``` + PROSODY_HTTP_URL = 'https://jabber.happy-dev.fr' + JABBER_DEFAULT_HOST = 'happy-dev.fr' + BASE_URL = 'https://localhost:8000' + ``` -### Requirements +- If you wish use another database than `sqlite`, you can also configure it on `DATABASES` in `settings.py` -You need to have both NodeJS and NPM installed and working. +- If you want to receive mails from notifications, you need to add these lines & configure them at the end of `settings.py` + ``` + EMAIL_HOST = "your.smtp.srv" + EMAIL_HOST_USER = "user@email.com" + EMAIL_HOST_PASSWORD = "password" + EMAIL_USE_TLS = True #Or False + ``` -### Installation process +#### `sibserver` migrate -clone then: +On the first `sibserver` folder: -* `make install` +``` +$ ./manage.py migrate +``` -Edit the created `./src/config.pug` file to : - - update the `client_id` [you generated on the server](https://git.happy-dev.fr/startinblox/applications/sib-app-data-server/blob/master/README.md#openidconnect-configuration) / OIDC provider - - update the `sdn` / Server Domain Name to match yours +#### Add an RSA Key for `oidc` -## Build +On the first `sibserver` folder: -A first build is mandatory for compiling the static assets. +``` +$ ./manage.py creatersakey +``` -* `make build` +#### `sib-manager` launching -or +On the first `sibserver` folder -* `make watch` +``` +$ sib runserver +``` -if you are working on something and want to benefit of the hot reload feature. +You can also launch it directly from `manage.py`. Don't forget to activate the `venv` if so. -## Run server +#### Create a Client ID for Prosody & Client -* `make serve` +- 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). + + \ No newline at end of file