Applications & tools for Community-Based Organizations (CBOs) to work together more effectively
Перейти к файлу
Chris Trevino 13dd220ef2 update docker-compose settings 2021-12-06 11:14:08 -08:00
.devcontainer update docker-compose settings 2021-12-06 11:14:08 -08:00
.github interleaved logging; split playwright dep installation from acceptance test run 2021-10-29 18:38:45 -07:00
.husky update husky.sh 2021-09-03 14:37:11 -07:00
.vim upgrade to yarn 3 2021-08-25 17:06:29 -07:00
.vscode merge main 2021-12-03 22:41:53 +00:00
.yarn use custom babel stack in api 2021-10-29 17:02:59 -07:00
packages update docker-compose settings 2021-12-06 11:14:08 -08:00
.eslintignore add linting fixes 2021-09-30 15:18:10 -07:00
.eslintrc remove console.log from api layer 2021-10-04 09:59:09 -07:00
.gitattributes Merged PR 53554: greenlight -> resolve in code; add robots.txt 2021-07-13 21:41:34 +00:00
.gitignore pack git hash into window.__SITE_VERSION__ for ops 2021-10-26 11:28:53 -07:00
.lintstagedrc.json update .lintstagedrc 2021-05-05 09:31:11 -07:00
.pnp.cjs use transpiled services in acceptance tests 2021-10-29 17:54:08 -07:00
.prettierignore remove ms header from next-env.d.ts 2021-09-03 15:20:18 -07:00
.prettierrc.json update prettierrc 2021-10-01 15:46:36 -07:00
.vsts-ci.yml remove deployment onto ms infra steps 2021-09-02 10:44:15 -07:00
.yarnrc.yml clean acceptance testing packages 2021-09-30 14:07:50 -07:00
CODE_OF_CONDUCT.md Merged PR 54772: Rename packages 2021-08-13 00:53:05 +00:00
CONTRIBUTING.md Merged PR 54772: Rename packages 2021-08-13 00:53:05 +00:00
DEVELOPMENT.md Merged PR 54772: Rename packages 2021-08-13 00:53:05 +00:00
LICENSE Merged PR 54772: Rename packages 2021-08-13 00:53:05 +00:00
README.md Wire firebase settings into app config 2021-08-26 14:39:08 -07:00
babel.config.js Merged PR 53235: move codeql to separate task 2021-07-02 23:01:51 +00:00
encodeFirebaseConfig.mjs remove console.log from api layer 2021-10-04 09:59:09 -07:00
package.json interleaved logging; split playwright dep installation from acceptance test run 2021-10-29 18:38:45 -07:00
tsconfig.json typescript updates 2021-05-04 13:06:30 -07:00
yarn.lock use transpiled services in acceptance tests 2021-10-29 17:54:08 -07:00

README.md

Community-Based Organization Operations Suite (CBO Suite)

The CBO Suite is a case-management web application that enables CBOs and members of CBOs to work together more effectively.

Developing

Prerequisites

  • NodeJS LTS Release
  • Yarn v1 global installation (npm i -g yarn)
  • docker-compose OR a MongoDB connection string defined in the environment variable DB_CONNECTION_STRING

To begin developming the app locally:

If DB_CONNECTION_STRING environment variable is defined:

> yarn build:schema
> yarn start:

If using docker-compose

-- Shell 1 --
> yarn build:schema
> yarn start:api:local

-- Shell 2 --
> yarn start:webapp

Branch & Release Strategy

Environments & Mapped Branches:

  • dev branch: synchronized w/ integration environment.
  • main branch: synchronized w/ production environment.

Active development is performed in feature branches and synchronized into the dev branch as it stabilizes. When releases are ready for production, they are merged into the main branch.

Development Branches: The following branch naming patterns are utilized for different kinds of efforts within the project. All branches should target the dev branch, except for hotfix branches, which may target both dev and main.

  • Bugfixes: fix/*
  • Features: feature/*
  • Hotfix: hotfix/*
  • CI: ci/*
  • Documentation: docs/*
  • Testing: test/*
  • Refactoring: refactor/*

Operations & Deployment

The GitHub Actions CI workflow is used to automate the deployment of the app in accordance with the branching strategy described above. The infrastructure required for an instance of the application is:

  1. A MongoDB compatible database. We use CosmosDB with MongoDB driver.
  2. A NodeJS web-server environment for the GraphQL API.
  3. A static website deployment (Azure Blob Storage/S3) for the web application. This may be CDN-hosted or self-hosted in static storage.
  4. A SendGrid account for sending automated emails (e.g. password reset emails).
  5. (optional) A Firebase account for In-App Notifications.

Configuration

The application uses the config package to manage configuration settings per hosted environment. The following environment variables may be defined to override configuration settings:

  • API environment variables

    • DB_CONNECTION_STRING (required): The MongoDB connection string for the database.
    • JWT_SECRET (strongly recommended): A secret, random string used for salting JWT tokens.
    • SENDGRID_API_KEY (required for email): The SendGrid API key.
    • EMAIL_FROM (required for email): The email address used for sending automated emails.
    • CONTACT_US_EMAIL (required for email): The email address used for customer support.
    • PORT (optional): the port the application is running on. This is provided by default from the Azure App Service runtime.
    • FIREBASE_AUTH_URI (optional): The Firebase Auth URI for the Firebase account.
    • FIREBASE_TOKEN_URI (optional): The Firebase Token URI for the Firebase account.
    • FIREBASE_AUTH_PROVIDER_X509_CERT_URL (optional): The Firebase Auth Provider X509 Cert URL for the Firebase account.
    • FIREBASE_TYPE (optional): The Firebase type for the Firebase account.
    • FIREBASE_PROJECT_ID (optional): The Firebase project ID for the Firebase account.
    • FIREBASE_PRIVATE_KEY_ID (optional): The Firebase private key ID for the Firebase account.
    • FIREBASE_PRIVATE_KEY (optional): The Firebase private key for the Firebase account.
    • FIREBASE_CLIENT_EMAIL (optional): The Firebase client email for the Firebase account.
    • FIREBASE_CLIENT_ID (optional): The Firebase client ID for the Firebase account.
    • FIREBASE_CLIENT_X509_CERT_URL (optional): The Firebase client X509 Cert URL for the Firebase account.
  • Web App environment variables

    • API_URL (required): The URL of the GraphQL API this webapp will communicate with.
    • SOCKET_URL (required): The URL of the sockets API this webapp will communicate with.