Typing and Editing for Learners and Teachers
A composition classroom: Writers draft without paste-cheating, Editors review and redraft, Observers watch, Administrators run a Facility (school), a Superintendent runs several Facilities. Blocks are classes.
PHP 8 + MariaDB (InnoDB) + PDO. Object pages import only the modules they use ($import = ['auth','writ']).
- Clone into the web folder (
/srv/www/99/webdiror similar). - Create a MariaDB database and user.
- Open
install.php. Database host should be127.0.0.1(TCP), notlocalhost(Unix socket). - Host setting is scheme-less:
write.pink,99.example.org, orexample.org/99. The app always useshttps://. - That creates a Superintendent. Create a Facility, then an Administrator.
- Mail, SMTP password, and host live in
config.php— SysAdmin work, not the in-app Admin.
Walk-in Superintendent recovery: set allow_create_super to true in config, open install.php, then set it false again.
- CLI:
php bin/update.phporbash bin/pw99-update - Admin / Superintendent locker: Update app
- Pulls GitHub
master, never overwritesconfig.php, runs SQL migrations.
Import the old database first, then run the updater once. It adds facilities, drafts/redrafts JSON, tests, notifications, 2FA/passkey columns, and maps everyone to a Home facility.
| Role | Seat |
|---|---|
| Writer | Student |
| Observer | Parent / tutor |
| Editor | Teacher |
| Supervisor | Facility staff |
| Admin | One Facility |
| Superintendent | Many Facilities; password reset is in-person only |
- Writs, Assignments (writ + memo instructions), Tests (MC / fill-in / short answer / T-F)
- Fill-in:
||is OR;|&is AND/OR (either or both). No exclusive AND. - Redraft: editor version becomes the writer's next start.
draftsandredraftsJSON history. Show history or gray no history. - Note → Memo; Memo → Assignment.
- Lost-password email (Admin and below). TOTP authenticator. Passkeys.
- Google, Apple, and GitHub login (SysAdmin
oauthkeys in config). Create or link. Authenticator and passkeys still apply after a social login. - In-app + email notification checkboxes in the Locker. Acknowledge deletes the notice.
PinkWrite 88 typing practice ships in 88/.
GPLv3