@bloom-housing/backend-core v7.6.0
Bloom Backend Services
This package is a NestJS application that provides a core set of backend services via REST API endpoints to apps using the Bloom Housing framework. Information is stored in a Postgres database, accessed via TypeORM.
OpenAPI Documentation
OpenAPI (fka Swagger) documentation is automatically generated by the server at http://localhost:3100/docs/ for a standard local development environment. A raw JSON version of the schema is also available at /docs-json/, suitable for API client code generation or other code-based consumers.
Getting Started
- Install Node.js 14.x
brew install node@14. - Install Postgres 12
brew install postgresql - Copy the
.env.templatewithinbackend/coreto.envand edit variables appropriate to your local environment. Ensure sure the Database URL and Test Database URL match your Postgres configuration. - Install dependencies
yarn installwithinbackend/core
Seeding the Database
There are two databases used in this project: bloom and bloom_test. The first is used every time you are starting a project with yarn dev and second one is only used in end-to-end tests. Corresponding TypeORM configs are defined in ormconfig.ts and ormconfig.test.ts.
If you are just starting to work with the projects it's best to simply run:
yarn && yarn db:reseedwhich will create the bloom DB for you, migrate it to the latest schema, and seed with appropriate dev data. If running the reseed command requires that you input a password for Postgres, set the following environment variables: PGUSER to postgres and PGPASSWORD to the default password you inputted for the postgres user during Postgres installation. If you get the FATAL: database "<user>" does not exist error please run: createdb <user> first.
Dropping the DB:
yarn db:dropCreating the DB:
yarn db:createSeeding the DB:
yarn db:seedGenerating a new migration:
yarn db:migration:generateApplying migrations:
yarn db:migration:runRunning Tests
End-to-end tests:
yarn test:e2e:localUnit tests:
yarn testTranslations
The backend keeps translations for email related content in the DB in the translations table.
The /translations endpoint exposes CRUD operations on this table (admin only).
Translations are defined for each county code and language pair e.g. (Alameda, en). To modify a particular
translation pair:
- Fetch
GET /translationsand list all the translations - Find an ID of a pair that interest you
- Use
PUT /translations/:translationIdto modify it's content
Environment Variables
| Name | Description | Default | Type | |
|---|---|---|---|---|
| PORT | Port number the server will listen to for incoming connections | 3100 | number | |
| NODE_ENV | Controls build optimization and enables some additional logging when set to development | development | "development" | "production" | |
| DATABASE_URL | Database connection | postgres://localhost/bloom | string | |
| TEST_DATABASE_URL | Test database connection | postgres://localhost/bloom_test | string | string |
| THROTTLE_TTL | Rate limit TTL in seconds (currently used only for application submission endpoint) | 60 | number | |
| THROTTLE_LIMIT | Max number of operations in given time window THROTTLE_TTL after which HTTP 429 Too Many Requests will be returned by the server | 2 | number | |
| EMAIL_API_KEY | Sendgrid API key (see sendgrid docs for creating API keys | Available internally | string | |
| APP_SECRET | Secret used for signing JWT tokens (generate it with e.g. openssl rand -hex 48) | Available internally | string | |
| PARTNERS_PORTAL_URL | URL for partners site | http://localhost:3001 | string |
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
4 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
4 years ago
4 years ago
3 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago