From the project, choose Create Database. Select PostgreSQL and version 17. Name the database taskboard, then set the region, compute, and storage for your project. Review the estimate before you create it. Keep public network access disabled. Put the app and database in the same project, environment, and region for the internal connection. Review the engine, version, region, capacity, and network settings, then create the database. Provisioning takes time. This edit shortens the recorded wait; it does not change the setup steps. The database overview now says Running. That confirms resource provisioning; the app still needs its own connection check. Create the app from resilis slash nodejs-postgres-task-board on main. Use the repository root and the Development environment. Set DATABASE_URL as a secret, then set PORT to 3000. Keep DEMO_READ_ONLY false while testing writes. The connection value stays masked. The sample listens on port 3000, and its Dockerfile exposes that port. Keep the build and start override fields empty. Open the live app after it is ready. The board identifies PostgreSQL storage. Enter Keep this task after restart and choose Add task. The new item appears in To do. Move the new task from To do to Doing with its status menu. Wait for the board to update, then confirm its Doing column before the rebuild. For the persistence check, open Configuration, choose Build, then select Rebuild. Leave the database running so the app process can be replaced. Wait for the new build to finish and check the final deployment log entry. It reports success. Independent runtime checks confirmed that the app process was replaced. After the new app process starts, the same task remains in Doing. The verified app is ready and reports PostgreSQL storage. After testing, set DEMO_READ_ONLY to true, save without automatic redeploy, then rebuild. Before sharing, verify that POST, PATCH, and DELETE return 403 and leave tasks unchanged.