The CBO Suite is a case-management web application that enables CBOs and members of CBOs to work together more effectively.
- 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
.
If you are using GitHub Codespaces with the provided devcontainer, these prerequisites are provided.
To start the application:
> yarn
> yarn start:db // (optional) for local development
> yarn assets:
> yarn start:
Environments & Mapped Branches:
dev
branch: synchronized w/ integration environment.staging
branch: synchronized w/ staging environment.main
branch: synchronized w/ production & demo environments.
Active development is performed in feature branches and synchronized into the dev
branch as it stabilizes. When a sprint completes, the dev
branch is merged into the staging
branch. When the release is approved, the staging
branch will be merged into the main
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/*
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:
- A MongoDB compatible database. We use CosmosDB with MongoDB driver.
- A NodeJS web-server environment for the GraphQL API.
- A static website deployment (Azure Blob Storage/S3) for the web application. This may be CDN-hosted or self-hosted in static storage.
- A SendGrid account for sending automated emails (e.g. password reset emails).
- (optional) A Firebase account for In-App Notifications.
The application uses the config package to manage configuration settings per hosted environment. The following environment variables may be defined to override configuration settings:
-
- 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.