Skip to content
Merged
Show file tree
Hide file tree
Changes from 66 commits
Commits
Show all changes
75 commits
Select commit Hold shift + click to select a range
445ad4f
feat: add listing file number (#5558)
KrissDrawing Nov 17, 2025
51d6c9c
feat: add additional neighborhood amenities (#5563)
KrissDrawing Nov 17, 2025
f642fc1
feat: msq crud refactor (#5543)
mcgarrye Nov 17, 2025
d784a68
feat: build and publish dbseed container image (#5602)
avrittrohwer Nov 19, 2025
263fff9
fix: use conductor values for Common App form step checkpoints (#5504)
jaredcwhite Nov 19, 2025
27d8f00
feat: non-regulated fields implementation (#5455)
matzduniuk Nov 20, 2025
81e3009
feat: waitlist lottery - update get started screen states (#5574)
millord Nov 21, 2025
0ed07f7
feat: Waitlist Lottery - Lottery Results Screen (#5581)
millord Nov 21, 2025
2f0a9c8
feat: add copy for Common App pages for waitlist lottery listing (#5523)
jaredcwhite Nov 22, 2025
a617f10
feat: waitlist lottery - listing detail page states update (#5575)
millord Nov 24, 2025
f925203
fix: return proper translations for lottery published emails (#5515)
KrissDrawing Nov 25, 2025
9f678a5
feat: new listing field credit screening fee (#5584)
KrissDrawing Nov 25, 2025
8b99761
fix: set expire_after on applications (#5620)
ludtkemorgan Nov 25, 2025
f05249d
feat: preselect jurisdiction (#5582)
emilyjablonski Nov 25, 2025
da51299
fix: add missing credit screening fee string (#5624)
KrissDrawing Nov 25, 2025
7db0995
fix: marketing type months csv (#5622)
emilyjablonski Nov 25, 2025
8723383
feat: add waitlist lottery translation for the confirmation email (#5…
jaredcwhite Nov 28, 2025
9df334c
fix: pdf links in export not working (#5634)
emilyjablonski Dec 1, 2025
0c2c05d
fix: non regulated units table update (#5612)
matzduniuk Dec 2, 2025
70f5d12
fix: non regulated listing table update (#5615)
matzduniuk Dec 2, 2025
cc55be8
feat: partners new marketing flyer section (#5621)
KrissDrawing Dec 2, 2025
a6df519
fix: toggle off building selection criteria (#5632)
KrissDrawing Dec 3, 2025
02df977
feat: bloom-dev open tofu config (#5580)
avrittrohwer Dec 3, 2025
9002171
feat: 5628/Add password parameters to change password screen (#5636)
millord Dec 4, 2025
92239a2
fix: Edit send email page copy (#5633)
millord Dec 4, 2025
9282da3
added missing case for waitlistlottery for desc (#5645)
millord Dec 4, 2025
f43a654
feat: add marketing flyers to public site (#5631)
KrissDrawing Dec 5, 2025
447e153
Feat: Listing page update for non regulated (#5623)
matzduniuk Dec 8, 2025
9159fdc
fix: create pii deletion cron job of applications (#5601)
ludtkemorgan Dec 8, 2025
45d1dda
feat: properties toggle, preferences tabs (#5646)
emilyjablonski Dec 8, 2025
76b0e12
fix: router.locale on Terms page, updated page copy (#5643)
jaredcwhite Dec 9, 2025
1f336df
fix: Waitlist Lottery - Lottery Results Screen - missing translations…
millord Dec 9, 2025
483b091
fix: show lottery tab for waitlist lottery (#5673)
ludtkemorgan Dec 10, 2025
645d86c
feat: require min x images (#5656)
matzduniuk Dec 10, 2025
63498a0
feat: referral opportunity question update (#5672)
matzduniuk Dec 10, 2025
8250e2e
fix: user delete cron job (#5626)
ludtkemorgan Dec 10, 2025
42fc713
feat: allow alt text on listing images (#5675)
KrissDrawing Dec 11, 2025
959792e
fix: filter ami charts by jurisdiction in draft listing (#5678)
emilyjablonski Dec 11, 2025
4821214
fix: warn of user deletion cron job (#5652)
ludtkemorgan Dec 11, 2025
06b3996
feat: Password Expiration Modal (#5616)
millord Dec 12, 2025
f24156d
feat: Lottery results screen content update (#5657)
millord Dec 12, 2025
f6bb7b8
fix: add enableApplicationStatus flag (#5692)
KrissDrawing Dec 15, 2025
84d45e5
fix: missing translations dec 2025 and github action (#5681)
emilyjablonski Dec 15, 2025
3b1f031
feat: show a11y priority type in unit table (#5683)
emilyjablonski Dec 15, 2025
c93c75e
fix: add new applications statuses and fields (#5689)
KrissDrawing Dec 16, 2025
908bf07
feat: upgrade Bloom to Node 22, Next 15, and React 19 (#5557)
jaredcwhite Dec 16, 2025
cce3da9
chore(deps): bump form-data for security alert (#5702)
ludtkemorgan Dec 17, 2025
e9dbb36
fix: require alt text in la (#5688)
KrissDrawing Dec 17, 2025
8e54552
feat: AWS deployment instructions (#5671)
avrittrohwer Dec 18, 2025
e3ff312
fix: add application status dropdown with tag (#5703)
KrissDrawing Dec 23, 2025
fa26e38
fix: moving password expiry earlier in our login flow (#5687)
YazeedLoonat Dec 23, 2025
c977a6d
feat: Adjust password expired error (#5697)
millord Dec 23, 2025
62cc42e
fix: accessible feature lists (#5725)
emilyjablonski Dec 24, 2025
d231bc1
fix: add smoking policy radio (#5694)
KrissDrawing Jan 2, 2026
f98107d
feat: changes to listing DTOs for snapshots (#5721)
YazeedLoonat Jan 5, 2026
1a4f0ed
feat: application create and read refactor (#5701)
mcgarrye Jan 6, 2026
a9114d7
fix: move non-regulated selection to jurisdiction modal (#5690)
ludtkemorgan Jan 6, 2026
c8dfa4c
feat: reduce flakiness
mcgarrye Jan 6, 2026
f349c62
Merge remote-tracking branch 'core/main' into release/2026-01-06
ludtkemorgan Jan 6, 2026
286a73b
feat: Leasing Agent - Update (#5699)
millord Jan 6, 2026
f106fbe
feat: msq search and sort (#5711)
mcgarrye Jan 7, 2026
7ce2add
fix: utilities included showing obj keys (#5737)
emilyjablonski Jan 7, 2026
a566092
feat: rework VPC to use a /22 range (#5739)
avrittrohwer Jan 7, 2026
d7941f7
fix: detroit specific fixes from merge
ludtkemorgan Jan 7, 2026
66152ab
fix: Non-Regulated: Required documents in export (#5731)
millord Jan 7, 2026
fe86a02
Merge remote-tracking branch 'core/main' into release/2026-01-06
ludtkemorgan Jan 7, 2026
0ce113e
feat: infra CI checks (#5740)
avrittrohwer Jan 7, 2026
f92c976
feat: New Field - Parking fee (#5709)
millord Jan 8, 2026
c210860
feat: Frontend Integration Tests - shared-helpers/src/utilities/Addre…
millord Jan 8, 2026
7f7595f
feat: Frontend Integration Tests - partners/src/pages/sign-in (#5742)
millord Jan 8, 2026
a0cde33
refactor: update generate translations (#5682)
emilyjablonski Jan 8, 2026
8f6fa4c
fix: upgrade uic for tables alignment (#5744)
emilyjablonski Jan 8, 2026
b786eab
fix: partners amenities and features (#5743)
emilyjablonski Jan 8, 2026
76a58c4
Merge remote-tracking branch 'core/main' into release/2026-01-06
ludtkemorgan Jan 8, 2026
3aee982
fix: disable tofu workflows
ludtkemorgan Jan 8, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
1 change: 1 addition & 0 deletions .eslintrc.js
Original file line number Diff line number Diff line change
Expand Up @@ -56,6 +56,7 @@ module.exports = {
"**/.eslintrc.js",
"sentry-example-page.js",
"sentry-example-api.js",
"next-env.d.ts",
"*.csv",
],
}
2 changes: 1 addition & 1 deletion .github/workflows/cypress_partners.yml
Original file line number Diff line number Diff line change
Expand Up @@ -55,7 +55,7 @@ jobs:
- name: Set up Node.js
uses: actions/setup-node@v1
with:
node-version: 18
node-version: 22

- name: yarn in root dir
run: yarn
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/cypress_partners_listingapproval.yml
Original file line number Diff line number Diff line change
Expand Up @@ -48,7 +48,7 @@ jobs:
- name: Set up Node.js
uses: actions/setup-node@v1
with:
node-version: 18
node-version: 22

- name: yarn in root dir
run: yarn
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/cypress_public.yml
Original file line number Diff line number Diff line change
Expand Up @@ -56,7 +56,7 @@ jobs:
- name: Set up Node.js
uses: actions/setup-node@v1
with:
node-version: 18
node-version: 22

- name: yarn in root dir
run: yarn
Expand Down
20 changes: 20 additions & 0 deletions .github/workflows/docker_image_build.yml
Original file line number Diff line number Diff line change
Expand Up @@ -26,12 +26,27 @@ jobs:
- container: api
docker_context: "{{defaultContext}}:api"
dockerfile: Dockerfile
platforms: linux/amd64
- container: dbseed
docker_context: "{{defaultContext}}:api"
dockerfile: Dockerfile.dbseed
platforms: linux/amd64
- container: partners
docker_context: "{{defaultContext}}"
dockerfile: Dockerfile.sites.partners
platforms: linux/amd64
- container: public
docker_context: "{{defaultContext}}"
dockerfile: Dockerfile.sites.public
platforms: linux/amd64
- container: infra
docker_context: "{{defaultContext}}:infra"
dockerfile: Dockerfile
platforms: linux/amd64,linux/arm64
- container: infra-dev
docker_context: "{{defaultContext}}:infra"
dockerfile: Dockerfile.dev
platforms: linux/amd64,linux/arm64
runs-on: ubuntu-latest
steps:
- name: Log in to GitHub Container Registry
Expand All @@ -41,6 +56,10 @@ jobs:
username: ${{ github.actor }}
password: ${{ secrets.GITHUB_TOKEN }}

# Required to build multi-arch images.
- name: Setup Docker QEMU
uses: docker/setup-qemu-action@v3.7.0

# Required to use image layer cache.
- name: Setup Docker Buildx
uses: docker/setup-buildx-action@v3.11.1
Expand All @@ -53,6 +72,7 @@ jobs:
cache-from: type=registry,ref=${{ env.image_base }}/${{ matrix.container }}/container-layer-cache:latest
context: ${{ matrix.docker_context }}
file: ${{ matrix.dockerfile }}
platforms: ${{ matrix.platforms }}
tags: |
${{ env.image_base }}/${{ matrix.container }}:latest
${{ env.image_base }}/${{ matrix.container }}:gitsha-${{ github.sha }}
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/integration_tests_api.yml
Original file line number Diff line number Diff line change
Expand Up @@ -52,7 +52,7 @@ jobs:
- name: Set up Node.js
uses: actions/setup-node@v1
with:
node-version: 18
node-version: 22

- name: yarn in api dir
working-directory: ./api
Expand Down
4 changes: 2 additions & 2 deletions .github/workflows/lint.yml
Original file line number Diff line number Diff line change
Expand Up @@ -14,12 +14,12 @@ jobs:

steps:
- name: Check out Git repository
uses: actions/checkout@v2
uses: actions/checkout@v4

- name: Set up Node.js
uses: actions/setup-node@v1
with:
node-version: 18
node-version: 22

# ESLint and Prettier must be in `package.json`
- name: Install Node.js dependencies
Expand Down
39 changes: 39 additions & 0 deletions .github/workflows/missing-translations.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@
name: Missing Translations

on:
pull_request:
branches:
- main

jobs:
shared-helpers-unit:
runs-on: ubuntu-latest

steps:
- name: Check out Git repository
uses: actions/checkout@v4

- name: Set up Node.js
uses: actions/setup-node@v1
with:
node-version: 22

- name: yarn in root dir
run: yarn

# Rerun yarn in each app.
# It may seem unnecessary but there are some complex yarn package
# versioning dependencies here, so best to run to be safe.
# See https://github.com/bloom-housing/bloom/issues/3217#issuecomment-1430301029
# for more context.
- name: yarn in sites/public dir
working-directory: ./sites/public
run: yarn

- name: yarn in sites/partners dir
working-directory: ./sites/partners
run: yarn

# Tests
- name: yarn translations test shared/helpers
run: yarn test:shared-helpers:missing-translations
3 changes: 2 additions & 1 deletion .github/workflows/unit_tests_api.yml
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,7 @@ env:
RECAPTCHA_KEY: "secret-key"
GOOGLE_CLOUD_PROJECT_ID: "secret-key"
LOTTERY_DAYS_TILL_EXPIRY: 45
CLOUDINARY_CLOUD_NAME: "exygy"

jobs:
backend-unit:
Expand All @@ -37,7 +38,7 @@ jobs:
- name: Set up Node.js
uses: actions/setup-node@v1
with:
node-version: 18
node-version: 22

- name: yarn in api
working-directory: ./api
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/unit_tests_shared_helpers.yml
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ jobs:
- name: Set up Node.js
uses: actions/setup-node@v1
with:
node-version: 18
node-version: 22

- name: yarn in root dir
run: yarn
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/unit_tests_sites_partners.yml
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ jobs:
- name: Set up Node.js
uses: actions/setup-node@v1
with:
node-version: 18
node-version: 22

- name: yarn in root dir
run: yarn
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/unit_tests_sites_public.yml
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ jobs:
- name: Set up Node.js
uses: actions/setup-node@v1
with:
node-version: 18
node-version: 22

- name: yarn in root dir
run: yarn
Expand Down
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -102,3 +102,4 @@ memory-bank/

# Terraform providers
.terraform
*.tfstate
12 changes: 12 additions & 0 deletions api/.env.template
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,8 @@ GOOGLE_API_ID=
GOOGLE_API_KEY=
# cloudinary secret
CLOUDINARY_SECRET=
# cloudinary cloud name
CLOUDINARY_CLOUD_NAME=exygy
# app secret
APP_SECRET="some-long-secret-key"
# url for the proxy
Expand Down Expand Up @@ -44,8 +46,18 @@ LOTTERY_PUBLISH_PROCESSING_CRON_STRING=58 23 * * *
LOTTERY_PROCESSING_CRON_STRING=0 * * * *
# how many days till lottery data expires
LOTTERY_DAYS_TILL_EXPIRY=45
# controls the repetition of the msq retire cron job (should occur after LISTING_PROCESSING_CRON_STRING)
MSQ_RETIRE_CRON_STRING=5 * * * *
# how many days until application PII data exists
APPLICATION_DAYS_TILL_EXPIRY=
# controls the repetition of the PII deletion cron job
PII_DELETION_CRON_STRING=0 * * * *
# how many days until you delete users after inactivity
USERS_DAYS_TILL_EXPIRY=
# controls the repetition of the user deletion cron job
USER_DELETION_CRON_STRING=0 * * * *
# controls the repetition of the user deletion warn cron job
USER_DELETION_WARN_CRON_STRING=0 * * * *
# the list of allowed urls that can make requests to the api (strings must be exact matches)
CORS_ORIGINS=["http://localhost:3000", "http://localhost:3001"]
# spill over list of allowed urls that can make requests to the api (strings are turned into regex)
Expand Down
2 changes: 1 addition & 1 deletion api/Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -46,7 +46,7 @@ COPY --from=build /build/prisma/schema.prisma ./prisma/schema.prisma
COPY --from=build /build/prisma/migrations ./prisma/migrations
COPY --from=build /build/node_modules/.prisma ./node_modules/.prisma

# Create a non-root user to run (priciple of least priviledge).
# Create a non-root user to run (principle of least privilege).
WORKDIR /run
RUN groupadd --gid 2002 run && useradd --gid 2002 --uid 2002 --home /run run
RUN chown --recursive 2002:2002 /run
Expand Down
2 changes: 1 addition & 1 deletion api/Dockerfile.dbseed
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
# Keep up to date with Active LTS: https://nodejs.org/en/about/previous-releases
FROM node:22 AS build

# Create a non-root user to build (priciple of least priviledge).
# Create a non-root user to build (principle of least privilege).
WORKDIR /dbseed
RUN groupadd --gid 2002 dbseed && useradd --gid 2002 --uid 2002 --home /dbseed dbseed
RUN chown 2002:2002 /dbseed
Expand Down
2 changes: 1 addition & 1 deletion api/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@ If you don't have yarn installed, you can install homebrew with [these instructi

#### Installing Node

We are currently using Node version 18. You can install Node using homebrew with the following command: `brew install node@18`.
We are currently using Node version 22. You can install Node using homebrew with the following command: `brew install node@22`.

If you have multiple versions of Node installed, you can use [nvm](https://github.com/nvm-sh/nvm) (node version manager), or other similar tools, to switch between them. Ensure you're on the right version by checking with `node -v`.

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,8 +10,6 @@ CREATE TYPE "rent_type_enum" AS ENUM ('fixedRent', 'rentRange');
-- AlterTable
ALTER TABLE "listings"
ADD COLUMN "coc_info" TEXT,
ADD COLUMN "deposit_range_max" INTEGER,
ADD COLUMN "deposit_range_min" INTEGER,
ADD COLUMN "deposit_type" "deposit_type_enum",
ADD COLUMN "deposit_value" DECIMAL(65,30),
ADD COLUMN "has_hud_ebll_clearance" BOOLEAN,
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
-- AlterTable
ALTER TABLE "listings" ADD COLUMN "listing_file_number" TEXT;
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
-- AlterEnum
ALTER TYPE "neighborhood_amenities_enum" ADD VALUE 'shoppingVenues';
ALTER TYPE "neighborhood_amenities_enum" ADD VALUE 'hospitals';
ALTER TYPE "neighborhood_amenities_enum" ADD VALUE 'seniorCenters';
ALTER TYPE "neighborhood_amenities_enum" ADD VALUE 'recreationalFacilities';
ALTER TYPE "neighborhood_amenities_enum" ADD VALUE 'playgrounds';
ALTER TYPE "neighborhood_amenities_enum" ADD VALUE 'busStops';

-- AlterTable
ALTER TABLE "listing_neighborhood_amenities" ADD COLUMN "bus_stops" TEXT,
ADD COLUMN "hospitals" TEXT,
ADD COLUMN "playgrounds" TEXT,
ADD COLUMN "recreational_facilities" TEXT,
ADD COLUMN "senior_centers" TEXT,
ADD COLUMN "shopping_venues" TEXT;
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
-- AlterTable
ALTER TABLE "listings" ADD COLUMN "documents_id" UUID;

-- CreateTable
CREATE TABLE "listing_documents" (
"id" UUID NOT NULL DEFAULT uuid_generate_v4(),
"created_at" TIMESTAMP(6) NOT NULL DEFAULT CURRENT_TIMESTAMP,
"updated_at" TIMESTAMP(6) NOT NULL,
"birth_certificate" BOOLEAN,
"current_landlord_reference" BOOLEAN,
"government_issued_id" BOOLEAN,
"previous_landlord_reference" BOOLEAN,
"proof_of_assets" BOOLEAN,
"proof_of_custody" BOOLEAN,
"proof_of_income" BOOLEAN,
"residency_documents" BOOLEAN,
"social_security_card" BOOLEAN,

CONSTRAINT "listing_documents_pkey" PRIMARY KEY ("id")
);

-- CreateIndex
CREATE UNIQUE INDEX "listings_documents_id_key" ON "listings"("documents_id");

-- AddForeignKey
ALTER TABLE "listings" ADD CONSTRAINT "listings_documents_id_fkey" FOREIGN KEY ("documents_id") REFERENCES "listing_documents"("id") ON DELETE NO ACTION ON UPDATE NO ACTION;
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
ALTER TABLE "unit_group"
ADD COLUMN "monthly_rent" DECIMAL,
ALTER COLUMN "flat_rent_value_from" SET DATA TYPE DECIMAL,
ALTER COLUMN "flat_rent_value_to" SET DATA TYPE DECIMAL;
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
-- Adds new waitlist lottery confirmation translations for emails.

UPDATE translations
SET translations = jsonb_set(translations, '{confirmation,eligible,waitlistLottery}', '"Eligible applicants will be placed on the waitlist based on lottery rank order."')
WHERE language = 'en';

UPDATE translations
SET translations = jsonb_set(translations, '{confirmation,eligible,waitlistLottery}', '"Los solicitantes elegibles serán colocados en la lista de espera según el orden de clasificación de la lotería."')
WHERE language = 'es';

UPDATE translations
SET translations = jsonb_set(translations, '{confirmation,eligible,waitlistLottery}', '"Ang mga karapat-dapat na aplikante ay ilalagay sa waitlist batay sa order ng ranggo ng lottery."')
WHERE language = 'tl';

UPDATE translations
SET translations = jsonb_set(translations, '{confirmation,eligible,waitlistLottery}', '"Những người nộp đơn đủ điều kiện sẽ được đưa vào danh sách chờ dựa trên thứ hạng xổ số."')
WHERE language = 'vi';

UPDATE translations
SET translations = jsonb_set(translations, '{confirmation,eligible,waitlistLottery}', '"符合資格的申請人將根據抽籤順序列入候補名單。"')
WHERE language = 'zh';
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
-- AlterTable
ALTER TABLE "listings" ADD COLUMN "credit_screening_fee" TEXT;
11 changes: 11 additions & 0 deletions api/prisma/migrations/39_add_marketing_flyer_file/migration.sql
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
-- AlterTable
ALTER TABLE "listings" ADD COLUMN "accessible_marketing_flyer" TEXT,
ADD COLUMN "accessible_marketing_flyer_file_id" UUID,
ADD COLUMN "marketing_flyer" TEXT,
ADD COLUMN "marketing_flyer_file_id" UUID;

-- AddForeignKey
ALTER TABLE "listings" ADD CONSTRAINT "listings_marketing_flyer_file_id_fkey" FOREIGN KEY ("marketing_flyer_file_id") REFERENCES "assets"("id") ON DELETE NO ACTION ON UPDATE NO ACTION;

-- AddForeignKey
ALTER TABLE "listings" ADD CONSTRAINT "listings_accessible_marketing_flyer_file_id_fkey" FOREIGN KEY ("accessible_marketing_flyer_file_id") REFERENCES "assets"("id") ON DELETE NO ACTION ON UPDATE NO ACTION;
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
-- AlterTable
ALTER TABLE "listing_images" ADD COLUMN "description" TEXT;
Loading
Loading