{"id":51845183,"url":"https://github.com/jgaa/smtool","last_synced_at":"2026-07-23T11:30:23.392Z","repository":{"id":362745739,"uuid":"1258359808","full_name":"jgaa/smtool","owner":"jgaa","description":"Desktop app for content planning, goals setting, scheduling and fan-out publishing on Social Media","archived":false,"fork":false,"pushed_at":"2026-06-15T08:03:44.000Z","size":1852,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-06-15T11:07:53.399Z","etag":null,"topics":["content-pipeline","content-planning","content-strategy","cpp","creator-tools","desktop-application","productivity","qml","qt","workflow"],"latest_commit_sha":null,"homepage":"","language":"C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/jgaa.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":"AGENTS.md","dco":null,"cla":null}},"created_at":"2026-06-03T14:01:23.000Z","updated_at":"2026-06-15T08:03:52.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/jgaa/smtool","commit_stats":null,"previous_names":["jgaa/smtool"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/jgaa/smtool","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jgaa%2Fsmtool","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jgaa%2Fsmtool/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jgaa%2Fsmtool/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jgaa%2Fsmtool/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/jgaa","download_url":"https://codeload.github.com/jgaa/smtool/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jgaa%2Fsmtool/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":35801472,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-07-20T02:08:10.276Z","status":"online","status_checked_at":"2026-07-23T02:00:06.683Z","response_time":57,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["content-pipeline","content-planning","content-strategy","cpp","creator-tools","desktop-application","productivity","qml","qt","workflow"],"created_at":"2026-07-23T11:30:22.650Z","updated_at":"2026-07-23T11:30:23.387Z","avatar_url":"https://github.com/jgaa.png","language":"C++","funding_links":[],"categories":[],"sub_categories":[],"readme":"# smtool\n\nsmtool is a native content strategy and publishing workflow application built with Qt.\n\nThe goal is to help creators, founders, developers, and indie hackers transform ideas into a balanced stream of long-form and short-form content.\n\n## Why?\n\nMost content tools focus on publishing.\n\nsmtool focuses on the workflow before publishing:\n\nIdea → Draft → Long-form Content → Fan-out → Schedule → Publish\n\nThe project started as an experiment to improve my own content creation workflow while documenting the development of software products in public.\n\n## Goals\n\n- Capture and organize content ideas\n- Maintain a balanced content strategy\n- Plan blogs, videos, and social posts\n- Create fan-out workflows from long-form content\n- Visualize publishing schedules\n- Track content through its lifecycle\n\n## Philosophy\n\nsmtool is built around a simple idea: your ideas should remain yours.\n\nContent planning does not require cloud services, user accounts, subscriptions, tracking, telemetry, or advertising.\n\nsmtool is a desktop application that stores data on your own devices and operates independently of online services.\n\nThe project aims to provide a calm, distraction-free environment for content planning and publishing workflows while respecting privacy, ownership, and user autonomy.\n\nAny future synchronization features will be optional and designed to preserve these principles. \n\n## Example Workflow\n\nA single source item:\n\n- Blog post: \"Building secure gRPC services\"\n\ncan generate:\n\n- LinkedIn post: Key lesson\n- LinkedIn post: Common mistake\n- Mastodon post: Technical detail\n- Short video clip\n- Newsletter summary\n\nsmtool helps manage this process.\n\n## Companion Android App\n\nA lightweight Android companion app is planned to make idea capture fast and frictionless.\n\nThe purpose of the mobile app is not to provide full content management functionality. Instead, it acts as a simple inbox for collecting ideas while away from the desktop.\n\nPlanned features:\n\n- One-tap idea capture\n- Voice dictation\n- Quick notes\n- Optional content pillar selection\n- Local storage\n- Offline operation\n\nExample workflow:\n\n1. An idea appears while walking, commuting, or exercising.\n2. Open the mobile app.\n3. Dictate the idea.\n4. Save.\n5. Continue what you were doing.\n\nAt a later time, the mobile app will synchronize captured ideas with the desktop application, where they enter the Inbox workflow for clarification, planning, scheduling, and publication.\n\nThe design goal is to minimize friction and context switching while maximizing idea capture. The mobile application is designed as a capture tool, not a content creation tool.\n\n## Current Status\n\nThe desktop app is ready in it's initial version.\n\nThe mobile companion app is under development.\n\n## Technology\n\n- Qt 6\n- C++20\n- QML\n- SQLite\n- CMake\n\n## Build\n\n```bash\ncmake -S desktop -B build/desktop\ncmake --build build/desktop --parallel\n```\n\n## Run\n\n```bash\n./build/desktop/bin/SmTool\n```\n\nTo seed demo content into an empty database:\n\n```bash\n./build/desktop/bin/SmTool --seed-demo-data\n```\n\nTo override the SQLite path explicitly:\n\n```bash\n./build/desktop/bin/SmTool --database-path /tmp/smtool.sqlite\n```\n\nBy default the application stores its database under `QStandardPaths::AppDataLocation`.\n\n## Test\n\n```bash\nctest --test-dir build/desktop --output-on-failure\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjgaa%2Fsmtool","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fjgaa%2Fsmtool","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjgaa%2Fsmtool/lists"}