Private social media scheduler foundation for personal projects.
The repo currently provides:
- local auth with signed session cookies
- channel connection management for Bluesky, X, and LinkedIn
- per-channel posting schedules stored in D1
- encrypted credential storage for provider tokens
- optional scheduled R2 backups for recoverable app state
The current app is a private scheduler shell with four authenticated surfaces:
Queuefor schedule visibility and queue statusComposefor account-specific draftingHistoryfor sent-post reviewSettingsfor channel connections and credentials
The product model is still intentionally lightweight, but the operational foundation is in place for real integrations.
For setup and first run, start with docs/setup.md.
In short:
- Install dependencies with
npm install. - Create the D1 database and update
wrangler.jsonc. - Copy
.dev.vars.exampleto.dev.varsand setSESSION_SECRET. - Run
npm run db:migrate. - Create a local account with
npm run account:create -- --name "Scheduler Admin" --password "change-me" --role editor. - Start the app with
npm run dev.
Local development in this repo targets macOS.
- docs/setup.md: setup and first run
- docs/development.md: development workflow, verification, and local CI
- docs/backups.md: backup configuration and restore notes
- docs/adrs/README.md: architecture decisions
- specs/README.md: feature and architecture specs
- AGENTS.md: project-specific agent instructions
GET /loginhandles local sign-in.GET /,GET /compose,GET /history, andGET /settingsare authenticated app surfaces.POST /settings/channelsstores validated channel connections with encrypted token fields.POST /posting-schedulestores per-channel schedule state in D1.GET /api/healthprovides a stable health response for tooling.
- The pinned runtime versions live in
package.json. - Detailed development commands and quality-gate guidance live in docs/development.md.
- Detailed setup and environment configuration live in docs/setup.md.
