No description
- 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. |
||
|---|---|---|
| .gitea/workflows | ||
| .idea | ||
| .vscode | ||
| config/sync | ||
| docker | ||
| node_modules | ||
| scripts | ||
| web | ||
| .gitignore | ||
| build.sh | ||
| CLAUDE.md | ||
| composer.json | ||
| docker-compose.yml | ||
| Dockerfile | ||
| Makefile | ||
| package-lock.json | ||
| package.json | ||
| README.md | ||
| tailwind.config.js | ||
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