What is Bloom?
Bloom is a full-stack monorepo built on Next.js, NestJS, Prisma, and PostgreSQL, all written in TypeScript. It ships two user-facing portals and a shared backend API, along with a shared component library used across the portals.Public Portal
The applicant-facing site. Housing seekers browse available listings, submit applications via the Common Application or external links, and manage their accounts. Runs on port 3000.
Partners Portal
The admin dashboard for housing partners. Create, edit, and publish listings; view, edit, and export applications; and manage lottery workflows. Requires a login. Runs on port 3001.
Backend API
A NestJS REST API backed by Prisma and PostgreSQL. Serves data to both portals over HTTPS. Auto-generates OpenAPI/Swagger documentation at
/api. Runs on port 3100.Shared Helpers
A shared package (
shared-helpers) containing TypeScript types, utility functions, and components used by both the Public and Partners portals.Who is Bloom for?
| Audience | How they use Bloom |
|---|---|
| Housing seekers | Browse affordable housing listings, submit applications, track application status |
| Housing developers | Create and publish listings, manage incoming applications |
| Property managers | Edit listings, export applicant data, run lottery workflows |
| City / county jurisdictions | Configure jurisdiction-level settings, oversee multiple listings and partners |
Repository structure
Bloom uses a monorepo layout managed with Yarn workspaces. The core packages are:@bloom-housing/ui-seeds— Seeds design system: React components and design tokens. Storybook@bloom-housing/ui-components— Legacy component library being incrementally replaced by ui-seeds. Storybook
Key technologies
| Layer | Technology |
|---|---|
| Frontend | Next.js, React 19, TypeScript, SASS |
| Backend | NestJS, Prisma ORM, TypeScript |
| Database | PostgreSQL 15 |
| Testing | Jest, Cypress, Testing Library |
| CI/CD | GitHub Actions, GitLeaks, Dependabot |
| API docs | OpenAPI / Swagger (auto-generated) |
Bloom is licensed under Apache-2.0 and is open for contributions. See the contributing guidelines in the repository for commit conventions, pull request templates, and issue tracking.