[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"project-105258":3},{"id":4,"name":5,"fullName":6,"owner":7,"repo":5,"description":8,"homepage":9,"htmlUrl":10,"language":11,"languages":10,"totalLinesOfCode":10,"stars":12,"forks":13,"watchers":14,"openIssues":15,"contributorsCount":16,"subscribersCount":16,"size":16,"stars1d":17,"stars7d":17,"stars30d":17,"stars90d":16,"forks30d":16,"starsTrendScore":18,"compositeScore":19,"rankGlobal":10,"rankLanguage":10,"license":20,"archived":21,"fork":21,"defaultBranch":22,"hasWiki":21,"hasPages":21,"topics":23,"createdAt":10,"pushedAt":10,"updatedAt":24,"readmeContent":25,"aiSummary":10,"trendingCount":16,"starSnapshotCount":16,"syncStatus":26,"lastSyncTime":27,"discoverSource":28},105258,"LightPost","brainstormity\u002FLightPost","brainstormity","A lightweight system to automate posting to all of your socials from one dashboard","",null,"Python",307,63,3,1,0,18,54,72.18,"MIT License",false,"main",[],"2026-11-01 00:12:53","# LightPost\n\n**A lightweight system to automate posting to all of your socials from one dashboard.**\n\nA lightweight, self-hosted social media scheduler. Connect your accounts, write a post, and publish now or schedule it for later—all from one dashboard.\n\n![LightPost landing page with its publishing headline and social platform logos](public\u002Flanding.png)\n\n## Features\n\n- **Multi-account publishing:** connect multiple accounts, including several on the same platform, and post to them together.\n- **Drafts and scheduling:** save, edit, duplicate, schedule, or publish immediately. Schedule inputs and post times use your browser’s timezone.\n- **Per-account content:** choose whether each destination receives text, images, or both, within platform requirements.\n- **YouTube videos:** connect your own channel, upload one MP4, choose visibility and audience, save drafts or schedule delivery. Resumable uploads and processing receipts survive restarts.\n- **Images and previews:** import public JPEG URLs, reuse images from Saved Library, add alt text, and preview your content before posting.\n- **Delivery tracking:** see individual account results and links to published posts. Retry unsuccessful destinations without repeating successful ones, or cancel further attempts.\n- **Persistent queue:** posts survive restarts, overdue schedules resume, and supported media-processing progress is saved.\n- **Account management:** verify connections, reconnect credentials, and disconnect accounts.\n- **Built-in setup guides:** account eligibility, credential instructions, permissions, and troubleshooting for every platform.\n- **Light and dark themes:** follow your device preference or save your own choice.\n- **Your data, your server:** encrypted credentials, optional password protection, workspace settings, and post-history exports.\n\nOne Python process, SQLite, and plain HTML\u002FCSS\u002FJavaScript. No external database, frontend bundler, or AI dependency. Node.js is only needed for development checks and formatting.\n\n## Supported platforms\n\n| Platform                | Supported posts                                                                               |\n| ----------------------- | --------------------------------------------------------------------------------------------- |\n| Bluesky                 | Text and up to four images                                                                    |\n| Mastodon                | Public text and up to four images                                                             |\n| X (Twitter)             | Text and up to four JPEG\u002FPNG images; API cost confirmation before publishing or scheduling    |\n| Instagram               | One public JPEG with an optional caption; Creator\u002FBusiness accounts                           |\n| Threads                 | Text or one public JPEG                                                                       |\n| Discord                 | Server webhook messages and up to four public images                                          |\n| LinkedIn                | Public personal-profile posts with text and up to four images                                 |\n| Telegram                | Public or private channel posts with text and up to four JPEG\u002FPNG images                      |\n| Facebook Pages          | Page feed posts with text and up to four JPEG\u002FPNG images                                      |\n| YouTube                 | One MP4 video with a title, optional description, visibility, audience and disclosure choices |\n| TikTok                  | _Under development_                                                                           |\n| Pinterest               | _Under development_                                                                           |\n| Google Business Profile | _Under development_                                                                           |\n\nImages are limited to **1 MB each**. Use **Add Image** to import a direct public HTTPS JPEG URL. Keep its URL available until delivery completes for Instagram, Threads, and Discord; your server can remain private. Platform-specific limits appear in the composer and Setup Guide. Video uploads are supported for YouTube only: one local MP4 up to 250 MB per post (H.264\u002FAAC recommended). Create separate posts for YouTube videos and other platforms.\n\nBring your own authorized platform credentials. API fees, token expiry, permissions, and account eligibility still apply.\n\n## Run locally or on your server\n\nRequires **Python 3.11+ on Linux or macOS**.\n\n```sh\ngit clone https:\u002F\u002Fgithub.com\u002Fbrainstormity\u002FLightPost.git\ncd LightPost\npython3 -m venv .venv\n.venv\u002Fbin\u002Fpython -m pip install -r requirements.txt\n.venv\u002Fbin\u002Fpython -m lightpost\n```\n\nOpen [localhost:3000\u002Fapp](http:\u002F\u002Flocalhost:3000\u002Fapp), connect an account, and create your first post. New workspaces start empty. Open **Setup Guide** in the sidebar for platform-specific setup.\n\nKeep the app running for scheduled delivery. For automatic startup on Linux, an optional systemd service is provided in [deploy\u002Flightpost.service](deploy\u002Flightpost.service); it expects the app at `\u002Fopt\u002Flightpost`, a `lightpost` system user, and a writable `data\u002F` directory.\n\n## Configuration and backups\n\nNo `.env` file is required for the default setup. To override settings, copy [.env.example](.env.example) to `.env`. Environment variables take precedence.\n\n| Setting              | Default \u002F purpose                                                                 |\n| -------------------- | --------------------------------------------------------------------------------- |\n| `HOST`, `PORT`       | `127.0.0.1:3000`                                                                  |\n| `DATABASE_PATH`      | `data\u002Flightpost.sqlite`; media and the generated key live alongside it            |\n| `ADMIN_PASSWORD`     | Optional locally; at least 16 characters required when binding beyond loopback    |\n| `ENCRYPTION_KEY`     | Generated automatically if omitted; custom keys must be 64 hexadecimal characters |\n| `COOKIE_SECURE`      | `false`; enable when serving over HTTPS                                           |\n| `META_GRAPH_VERSION` | `v25.0` for Instagram and Facebook Pages                                          |\n\nThis is a single-owner application. Use a trusted network or HTTPS for remote access. Run one app process per database and keep SQLite on local storage.\n\nFor a full backup, stop the app and copy the **entire data directory and `.env`** together. Preserve the encryption key. Post-history exports omit credentials and image files, so they are not full backups. Credentials, databases, and keys are excluded from Git.\n\nAn interrupted delivery may need manual review if a platform accepted a post before the connection dropped. Check the destination before retrying; delivery across platforms is not atomic or guaranteed exactly once.\n\n## Development\n\n```sh\n.venv\u002Fbin\u002Fpython -m pip install -r requirements.txt ruff==0.14.2\nnpm ci\nnpm test\nnpm run build\nnpm run format\n.venv\u002Fbin\u002Fpython -m ruff check lightpost tests\n```\n\nTests use temporary databases and mocked platform requests, never real social accounts. `npm run build` checks JavaScript syntax and runs frontend tests; there is no generated frontend to deploy. Run checks locally before pushing. No GitHub Actions workflows are included.\n\n## License\n\n[MIT](LICENSE). LightPost is an independent project and is not affiliated with Post Bridge or the supported platforms. The Instagram gradient glyph comes from [Meta’s official logo pack](https:\u002F\u002Fwww.meta.com\u002Fbrand\u002Fresources\u002Finstagram\u002Finstagram-brand\u002F). Additional logos come from [TikTok’s developer asset pack](https:\u002F\u002Fdevelopers.tiktok.com\u002Fdoc\u002Fgetting-started-design-guidelines), [Pinterest’s brand resources](https:\u002F\u002Fbusiness.pinterest.com\u002Fbrand-guidelines\u002F), and [Google Business Profile](https:\u002F\u002Fbusiness.google.com\u002Fus\u002Fbusiness-profile\u002F). Platform logos belong to their respective owners and are subject to their brand guidelines.\n",2,"2026-10-31 04:26:14","CREATED_QUERY"]