Files
unsupervised-scheduler/memory/project_schedular.md
James Griffin 2fb2ca392d
All checks were successful
CI / Coding Standards (push) Successful in 43s
CI / PHPStan (push) Successful in 52s
CI / Tests (PHP 8.1) (push) Successful in 47s
CI / Tests (PHP 8.2) (push) Successful in 49s
CI / Tests (PHP 8.3) (push) Successful in 37s
CI / No Debug Code (push) Successful in 2s
Restructure src/ and tests/ from package-by-type to package-by-domain
All classes are now organised by domain (Availability, Booking, Auth).
Each domain package contains its value object, repository, admin controller,
REST endpoint, and any shortcode pages under a matching sub-namespace.
Cross-cutting wiring (Plugin, AdminMenu, RestRegistrar, ShortcodeRegistrar,
Schema) lives at src/ root. Tests mirror the domain structure.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-30 16:37:30 -03:00

1.4 KiB

name, description, type
name description type
unsupervised-schedular project context WordPress lesson scheduling plugin — stack, architecture decisions, conventions project

WordPress plugin for instructor/student lesson scheduling. Full scaffold created 2026-03-30.

Stack: PHP 8.1+, WordPress 6.0+, Composer, PHPUnit 10, Brain\Monkey 2.7, Mockery, PHPStan, PHPCS/WPCS, Gitea Actions CI.

Why: New greenfield project for unsupervised.ca.

Key decisions:

  • Custom DB tables (us_availability, us_lessons) over CPTs — relational data, conflict detection, fast queries
  • REST API (us-scheduler/v1) for all front-end interactions; templates are minimal shell divs, JS (vanilla) takes over
  • Instructors use wp-admin login; students use front-end [us_student_login] shortcode calling wp_signon()
  • PSR-4 namespace Unsupervised\Schedular\ from src/
  • Package-by-domain architecture (restructured 2026-03-30): src/Availability/, src/Booking/, src/Auth/ — each domain contains its value object, repository, controller, REST endpoint, and any shortcode pages. Cross-cutting wiring (Plugin, AdminMenu, RestRegistrar, ShortcodeRegistrar, Schema) lives at src/ root. Tests mirror the domain structure under tests/Unit/<Domain>/.

How to apply: When adding features, create a domain package under src/<Domain>/ with all related classes, mirror it in tests/Unit/<Domain>/, write a feature doc in docs/features/, then run composer test.