Development Workflow
Development-Workflow.mdDevelopment Workflow
Where To Edit
- change one page’s layout or copy: route
content.html - change one page’s server logic: route
index.php - change shared shell:
template.htmland probablytemplate_mobile.html - change shared interaction logic:
main.js - change shared look:
style.css - change persistence or permissions: relevant PHP code plus data contract
Safe Change Flow
- decide whether the change is content, route logic, shared shell, frontend behavior, or persistence
- edit the smallest correct surface
- if data shape changes, update read path, write path, and defaults
- if auth/admin behavior changes, enforce it in PHP, not just JS
- test the target page and at least one unrelated page that shares the shell
Linting
GitHub Actions runs three lint steps:
bash scripts/lint-php.shbash scripts/lint-javascript.shbash scripts/lint-css.sh
custom linting details:
- PHP uses
php -l - JavaScript uses
node --check - inline JS in
.htmland.phpfiles is syntax-checked too - CSS uses custom Node scripts that validate standalone CSS, inline
<style>, andstyle=""attributes
this setup is simple but honestly pretty smart for a repo with lots of inline markup/script/style.
Gotchas
- login/logout footer swap depends on exact HTML strings
main.jsis large and route-sensitive- feed and journal have different storage models
- bookmarks have both server and localStorage behavior
- some old code still references legacy bookmark storage patterns
- mobile view is both a cookie and an account setting
Broad Refactors Checklist
before making a sweeping change, review:
- root files:
index.php,content.html,template.html,template_mobile.html,main.js,style.css - affected route directory
- related API endpoint
lib/render.php- relevant workflow or script if the change affects deploy/lint/runtime ops
Practical Advice
- trust code over docs when they conflict
- prefer boring safe edits over galaxy-brain rewrites
- if you touch shared DOM ids or route transitions, click around the site after
- if you touch
/dataschema, document it immediately so future-you doesn’t get jump-scared