No description
Find a file
Philip Peterson 1e3ba132a4 Suppress duplicate key errors on semaphore table during rebuilds
- In _riverside_pt_rebuild(): proactively TRUNCATE the semaphore table
  at the very start of every rebuild. This eliminates the common
  'duplicate key value violates unique constraint "semaphore____pkey"'
  errors for 'state:Drupal\Core\Cache\CacheCollector' and 'cron' that
  appear in postgres logs.

- In entrypoint.sh: add TRUNCATE semaphore at strategic points
  (right after site:install, before module enables, before/after
  riverside:rebuild, before final drush cr). Wrapped with || true
  so they never break the startup script.

- Added a note in CLAUDE.md under the rebuild section explaining
  the errors and the quick manual fix.

These are harmless (Drupal's DbLockBackend usually recovers) but
very noisy in the container logs during the default full rebuild
path.
2026-06-04 00:06:27 -07:00
.gitea/workflows Add front page, nav rebuild, and CI workflow 2026-05-14 20:05:46 -07:00
.idea Structure 2026-05-12 17:28:47 -07:00
.vscode File extensions 2026-05-08 22:56:06 -07:00
config/sync wip booking flow 2026-05-13 14:55:52 -07:00
docker Suppress duplicate key errors on semaphore table during rebuilds 2026-06-04 00:06:27 -07:00
node_modules wip 2026-05-24 19:23:05 -07:00
scripts wip booking flow 2026-05-13 14:55:52 -07:00
web Suppress duplicate key errors on semaphore table during rebuilds 2026-06-04 00:06:27 -07:00
.gitignore Initial commit 2026-04-20 00:33:56 -04:00
build.sh Fix styling 2026-05-27 23:42:59 -07:00
CLAUDE.md Suppress duplicate key errors on semaphore table during rebuilds 2026-06-04 00:06:27 -07:00
composer.json wip booking flow 2026-05-13 14:55:52 -07:00
docker-compose.yml Fix statelessness 2026-05-28 18:14:59 -07:00
Dockerfile Use sendmail only on dev 2026-06-03 23:30:44 -07:00
Makefile Fix styling 2026-05-27 23:42:59 -07:00
package-lock.json wip 2026-05-24 19:23:05 -07:00
package.json Tailwind 2026-05-16 11:45:33 -07:00
README.md Fix statelessness 2026-05-28 18:14:59 -07:00
tailwind.config.js add swatch page, rename colors 2026-06-01 02:46:47 -07:00

Riverside Physical Therapy

A Drupal-based appointment scheduling site for booking sessions between patients and practitioners.

Running locally

docker compose up --build

Default behavior: Every start performs a full database wipe + rebuilds the entire site from code (content types, fields, menu, etc.). See CLAUDE.md for details and the DRUPAL_FAST=1 escape hatch for faster iteration.

Admin login: admin / admin at /user/login

Makefile commands

make shell        # open a bash shell in the app container
make drush <cmd>  # run any drush command, e.g. make drush cr

Scripts

Seed provider availability

Populates provider_availability nodes for the next calendar month across all active providers, using randomised noise per provider.

make drush php-script scripts/seed_availability.php

Preview without saving:

SEED_DRY_RUN=1 make drush php-script scripts/seed_availability.php

Wipe existing availability for the month before seeding:

SEED_WIPE=1 make drush php-script scripts/seed_availability.php

Running the script twice without SEED_WIPE=1 will create duplicates.

Modules

  • FullCalendar View — interactive appointment calendar
  • Webform — patient booking forms
  • Symfony Mailer — transactional email