feat: switch from MySQL to SQLite for zero-dependency deployment

- Rewrite db.php to use SQLite via PDO (no external DB server needed)
- Rewrite schema.sql for SQLite (AUTOINCREMENT, CHECK constraints,
  triggers for updated_at, ON CONFLICT instead of ON DUPLICATE KEY)
- Fix config.php upsert to use ON CONFLICT syntax
- Fix index.php: tag filter via json_each, vote upsert via ON CONFLICT,
  and fix protocol create route (was returning 405 for POST /api/protocols)
- Fix yaml.php seed import: replace invalid false callbacks with fn() => null,
  fix yaml_parse pos argument (-1 -> 0)
- Update Dockerfile: drop pdo_mysql/mysqli (pdo_sqlite is built in)
- Update CloudronManifest.json: remove mysql addon, bump to v0.3.0
- Update README for SQLite deployment
This commit is contained in:
Protocolbot
2026-07-06 14:42:45 -06:00
parent 7379d0c540
commit 3386ac6542
8 changed files with 155 additions and 132 deletions
+2 -6
View File
@@ -4,18 +4,14 @@
"author": "Media Economies Design Lab, CU Boulder",
"description": "A tool for authoring, sharing, and curating social protocols. Self-hostable and whitelabel-able.",
"tagline": "A commons of social protocols",
"version": "0.1.0",
"version": "0.3.0",
"healthCheckPath": "/api",
"httpPort": 8000,
"manifestVersion": 2,
"website": "https://medlab.host",
"contactEmail": "medlab@colorado.edu",
"icon": "file://icon.png",
"addons": {
"mysql": {
"noDatabase": false
}
},
"addons": {},
"tcpPorts": {},
"udpPorts": {},
"capabilities": [],