4c78b624f856f53ce3dbce9b8c8f12526d312a8f
Folder sync failed silently whenever FileBrowser was unreachable: every call site swallows the error with console.error, so projects and tasks were created in the portal with no matching folder on the drive. Add api/folder-reconcile.js, a secret-protected endpoint that walks companies/projects/tasks/subcontractors and creates only the folders that are missing. It never deletes or renames. Folders on disk with no portal record are reported as orphans for manual review, since they predate the portal and hold real client work. Extract shared FileBrowser helpers into api/_lib/filebrowser.js. Note that this build returns directory listings under a `folders` key rather than `items`; reading the wrong key yields an empty list and makes the whole tree look missing, so listDirectories handles both shapes. Reconcile lists before writing and creates leaves directly rather than re-walking each path from the root, which keeps a full run at a few seconds instead of timing out at the 300s function limit. Schedule hourly via pg_cron: Vercel Hobby caps crons at once per day. Requires app.folder_reconcile_secret to be set on the database separately. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Description
Portal for Fourge Branding
Languages
JavaScript
82.3%
CSS
5%
TypeScript
4.4%
PLpgSQL
4.2%
HTML
4.1%