No description
Find a file
Philip Peterson e3c2e3e3a1 Add nice non-restrictive phone number input formatting for booking
- New pure-vanilla progressive formatter that turns typed digits into
  (123) 456-7890 (or 1 (800) 555-1212 for +1 numbers) on the fly.
- Works for free-form input: typing, pasting, editing anywhere, backspacing,
  extra chars, etc. — no hard mask or input restrictions.
- Applied to:
  - The Preact <rpt-booking> widget phone field (home page quick booking + details).
  - The final Drupal confirmation form at /schedule/book (via lightweight
    enhancer + .rpt-phone class).
- Prefills last_name / phone / comments on the confirmation form when the
  widget was used to pick the slot (so collected phone isn't lost).
- No new dependencies whatsoever:
  * Zero npm / package.json / composer changes.
  * Zero additional CDN / external scripts (uses native String.replace,
    regex, and input event + selection APIs only).
  * The new js/phone-format.js is simply attached via the pre-existing
    'app' library (already loaded on all riverside_pt.* routes).
  * Formatter logic duplicated in the ESM component (tiny pure function).
- The two other modified files (calendar.css, calendar.js) were left
  uncommitted as they are unrelated to this feature.
2026-06-03 20:35:40 -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 fix 2026-06-01 03:21:54 -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 Add nice non-restrictive phone number input formatting for booking 2026-06-03 20:35:40 -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 Update CLAUDE.md 2026-06-03 02:14:42 -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 wip 2026-05-24 19:23:05 -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