## 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) # 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 |