{"id":50332122,"url":"https://github.com/tafo/prifeed","last_synced_at":"2026-05-29T10:30:35.632Z","repository":{"id":356249495,"uuid":"1231179935","full_name":"tafo/prifeed","owner":"tafo","description":"A local-first, private journal feed. Your thoughts, your machine, your timeline.","archived":false,"fork":false,"pushed_at":"2026-05-07T09:31:31.000Z","size":581,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-05-07T09:34:47.425Z","etag":null,"topics":["agpl","desktop-app","electron","journal","local-first","privacy","react","sqlite","tailwindcss","typescript"],"latest_commit_sha":null,"homepage":"","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"agpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/tafo.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":"SECURITY.md","support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-05-06T17:54:56.000Z","updated_at":"2026-05-07T09:31:36.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/tafo/prifeed","commit_stats":null,"previous_names":["tafo/prifeed"],"tags_count":null,"template":false,"template_full_name":null,"purl":"pkg:github/tafo/prifeed","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tafo%2Fprifeed","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tafo%2Fprifeed/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tafo%2Fprifeed/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tafo%2Fprifeed/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/tafo","download_url":"https://codeload.github.com/tafo/prifeed/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tafo%2Fprifeed/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":33648529,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-05-29T02:00:06.066Z","response_time":107,"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":["agpl","desktop-app","electron","journal","local-first","privacy","react","sqlite","tailwindcss","typescript"],"created_at":"2026-05-29T10:30:34.847Z","updated_at":"2026-05-29T10:30:35.614Z","avatar_url":"https://github.com/tafo.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003cdiv align=\"center\"\u003e\n  \u003cimg src=\"resources/icons/icon-d-t-letter.svg\" width=\"96\" height=\"96\" alt=\"Prifeed\" /\u003e\n\n  \u003ch1\u003ePrifeed\u003c/h1\u003e\n\n  \u003cp\u003e\u003cstrong\u003eA local-first, private journal feed. Your thoughts, your machine, your timeline.\u003c/strong\u003e\u003c/p\u003e\n\n  \u003cp\u003e\n    \u003ca href=\"LICENSE\"\u003e\u003cimg src=\"https://img.shields.io/badge/license-AGPL--3.0-blue.svg\" alt=\"License: AGPL-3.0\" /\u003e\u003c/a\u003e\n    \u003ca href=\"https://www.electronjs.org/\"\u003e\u003cimg src=\"https://img.shields.io/badge/Electron-39-47848F?logo=electron\u0026logoColor=white\" alt=\"Electron 39\" /\u003e\u003c/a\u003e\n    \u003ca href=\"https://www.typescriptlang.org/\"\u003e\u003cimg src=\"https://img.shields.io/badge/TypeScript-5-3178C6?logo=typescript\u0026logoColor=white\" alt=\"TypeScript\" /\u003e\u003c/a\u003e\n  \u003c/p\u003e\n\u003c/div\u003e\n\n---\n\nPrifeed is a desktop app. It is a personal journal with a timeline feed. You can write notes, comment on past entries, and add photos (soon). Your data stays on your computer.\n\nThere are no accounts. There are no servers. There is no telemetry. The data is a SQLite file and a media folder. You can copy it, back it up, or move it to another machine.\n\nMany people use private social accounts as a notebook. The timeline format works well for this. But one wrong click can make a private note public. Prifeed gives you the same timeline format without that risk.\n\n## Privacy commitment\n\n- **No accounts.** No sign-up. No email. No login.\n- **No servers.** Your data stays on your device.\n- **No telemetry.** The app does not send any data to a server.\n- **No vendor lock-in.** Your entries are plain SQLite and media files. To export, copy the folder.\n- **Open source.** Read the code. Build it yourself. Check every claim above.\n\nOptional sync will be **bring-your-own-cloud**. Prifeed will talk to your Google Drive, Dropbox, or your own server. We will not see your data.\n\n## Screenshots\n\n\u003e _Screenshots coming soon._\n\n## Features\n\n- 📜 **Timeline feed**: entries grouped by day (Today, Yesterday, weekday, date)\n- 💬 **Threaded comments**: leave comments on your own entries\n- ✏️ **Edit and delete**: with a clean in-app confirmation\n- 🌗 **Light, dark, and system themes**: Atom One Dark and GitHub Light inspired\n- ⌨️ **Keyboard-friendly**: `⌘N` (or `Ctrl+N`) to write, `⌘+Enter` to post, `Esc` to cancel\n- 🪶 **Premium minimalist UI**: Phoenix-inspired typography, slim scrollbars, auto-grow text fields\n- 🔒 **Local-first storage**: better-sqlite3 file in your OS user-data folder\n\n## Tech stack\n\n- **[Electron 39](https://www.electronjs.org/)**: cross-platform desktop runtime\n- **[React 19](https://react.dev/)** + **[TypeScript](https://www.typescriptlang.org/)**: UI\n- **[Vite 7](https://vitejs.dev/)** via **[electron-vite](https://electron-vite.org/)**: bundler\n- **[Tailwind CSS v4](https://tailwindcss.com/)**: styling\n- **[Headless UI v2](https://headlessui.com/)** + **[Heroicons](https://heroicons.com/)**: accessible primitives\n- **[better-sqlite3](https://github.com/WiseLibs/better-sqlite3)**: local data storage\n- **[pnpm](https://pnpm.io/)**: package manager\n\n## Getting started\n\n### Prerequisites\n\n- Node.js (LTS recommended)\n- pnpm (`corepack enable \u0026\u0026 corepack prepare pnpm@latest --activate`)\n- On Windows, a build chain for native modules. See `package.json` `pnpm.onlyBuiltDependencies` for the modules that need to compile.\n\n### Develop\n\n```sh\npnpm install\npnpm dev\n```\n\n### Build\n\n```sh\npnpm build:win     # Windows installer\npnpm build:mac     # macOS .app + .dmg\npnpm build:linux   # AppImage / snap / deb\n```\n\n### Other scripts\n\n```sh\npnpm typecheck     # TypeScript check\npnpm lint          # ESLint\npnpm format        # Prettier\n```\n\n## Project structure\n\n```\nsrc/\n  main/           Electron main process (Node, filesystem, SQLite)\n  preload/        IPC bridge (typed window.api exposed to renderer)\n  renderer/       React UI (Vite, TypeScript)\n    src/\n      types.ts          shared types (Post, Comment)\n      lib/              utilities (time, theme, useEditable)\n      components/       React components\nresources/        runtime assets (icon, etc.)\nbuild/            packaging assets (installer icons)\n```\n\nThe renderer uses the `@renderer/*` import alias instead of relative paths.\n\n## Roadmap\n\nPrifeed is in early dogfood. Items ship when they are useful. There are no fixed dates.\n\n- [ ] **Photo attachments**: drag-drop images stored next to the SQLite file\n- [ ] **Search**: full-text search across entries and comments\n- [ ] **Archive**: soft-delete with a Trash view (delete is permanent for now)\n- [ ] **Markdown / rich text**: formatting in entries\n- [ ] **Cloud sync (BYOC)**: encrypted sync to your own Google Drive, Dropbox, or WebDAV\n- [ ] **Auto-update**: `electron-updater` is wired up but not active yet\n- [ ] **Mobile companion (read-only)**: open the same data on your phone\n- [ ] **Hosted sync (paid)**: optional managed sync service for users who do not want to set up cloud accounts\n\nSuggestions and use-case stories are welcome via Issues.\n\n## License\n\nPrifeed is open source under the **GNU Affero General Public License v3.0 (AGPL-3.0)**. See [LICENSE](LICENSE) for the full text.\n\nIn short: you can read, modify, and self-distribute Prifeed for free. If you offer Prifeed (or a modified version) as a network service, AGPL requires you to publish your source modifications. The \"Prifeed\" name and logo are not licensed for redistribution under a different brand without permission.\n\nIf a hosted sync service launches later, it will be a separate paid offering. The desktop app license will not change.\n\n## Contributing\n\nPrifeed is in an early phase. The design and data model are still settling. Issues, bug reports, and \"I want to use this for X\" stories are very welcome. Pull requests are appreciated. Please open an issue first for anything beyond a small fix. Directional feedback is more useful right now than parallel implementations.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftafo%2Fprifeed","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ftafo%2Fprifeed","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftafo%2Fprifeed/lists"}