backend/README.md

67 lines
2.5 KiB
Markdown

## Meeting Planner Backend
Meeting Planner helps you find the best time to schedule a meeting across several timezones.
It's based on the availibity of all participants for specific days.
- [Documentation](https://git.armada.digital/meeting-planner/documentation)
- [Frontend](https://git.armada.digital/meeting-planner/frontend)
---
**URL** https://meeting-planner-backend.herokuapp.com/
---
# Backend architecture
- [API endpoints](https://git.armada.digital/meeting-planner/documentation/src/branch/master/api-documentation.md)
- [Database design](https://dbdiagram.io/d/5e769ab14495b02c3b88936f)
- [Flowchart](https://app.diagrams.net/#Uhttps://git.armada.digital/meeting-planner/documentation/raw/branch/master/meetingscheduler.drawio)
## Installation
### 0 | Requirements
Meeting Planner runs on virtually any system where Node.js is supported.
This means it runs on Linux, macOS, Windows as well as container solutions such as Docker / Kubernetes and Heroku.
**Versions**
- Postgres 9.5 or later
- NodeJS 10.12 or later
*[KnexJS](https://knexjs.org/), the database driver used is compatible with other databases like MySQL.
With small adaptation, it should be possible to use them, but this has not been tested.*
### 1 | Configure Postgres to use UTC
** Make sure that Postgres database used is configured to UTC **
`SET TIME ZONE 'UTC';`
See [Postgres Documentation](https://www.postgresql.org/docs/current/sql-set.html)
### 2 | Create and/or configure environement variables
- Create a `.env` file at the root of the backend folder
- Replace all variables noted with `$` below, and save it to the `.env` file
```
NODE_ENV=development // This can't be changed for now
PORT=$port_number
DATABASE_URL=postgres://$db_user:$db_user_password@$hostname:5432/$db_name
JWT_SECRET=$long_random_characters
```
### 3 | Installation of packages with npm
- `npm i`
### 4 | Migrate tables to database
- `npx knex migrate:latest`
### 5 | Seed database with dummy content **(optional)**
Running this will add some accounts along with some meetings.
- `npx knex seed:run`
**Accounts created**
| Liza | Emile | Jack | Cynthia | Celine |
| :--------------- | :---------------- | :--------------- | :------------------ | :----------------- |
| liza@example.com | emile@example.com | jack@example.com | cynthia@example.com | celine@example.com |
| liza-password | emile-password | jack-password | cynthia-password | celine-password |