{"id":50524647,"url":"https://github.com/campfirium/foliole","last_synced_at":"2026-06-03T07:04:37.635Z","repository":{"id":361616920,"uuid":"1019204023","full_name":"campfirium/foliole","owner":"campfirium","description":"An approachable incremental reading app.","archived":false,"fork":false,"pushed_at":"2026-05-31T13:45:49.000Z","size":17880,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"dev","last_synced_at":"2026-05-31T15:06:00.966Z","etag":null,"topics":["fsrs","incremental-reading","knowledge-management","learning","local-first","markdown","note-taking","personal-knowledge-management","reading","spaced-repetition"],"latest_commit_sha":null,"homepage":"https://foliole.app","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/campfirium.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":"SUPPORT.md","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":"2025-07-14T00:50:46.000Z","updated_at":"2026-05-31T13:52:52.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/campfirium/foliole","commit_stats":null,"previous_names":["campfirium/foliole"],"tags_count":1,"template":false,"template_full_name":null,"purl":"pkg:github/campfirium/foliole","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/campfirium%2Ffoliole","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/campfirium%2Ffoliole/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/campfirium%2Ffoliole/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/campfirium%2Ffoliole/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/campfirium","download_url":"https://codeload.github.com/campfirium/foliole/tar.gz/refs/heads/dev","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/campfirium%2Ffoliole/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":33852300,"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-06-03T02:00:06.370Z","response_time":59,"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":["fsrs","incremental-reading","knowledge-management","learning","local-first","markdown","note-taking","personal-knowledge-management","reading","spaced-repetition"],"created_at":"2026-06-03T07:04:36.806Z","updated_at":"2026-06-03T07:04:37.626Z","avatar_url":"https://github.com/campfirium.png","language":"TypeScript","funding_links":[],"categories":["Application"],"sub_categories":["Incremental Reading"],"readme":"\u003cp align=\"center\"\u003e\n  \u003csub\u003e\n    \u003ca href=\"https://github.com/campfirium/foliole/blob/dev/README.md\"\u003eEnglish\u003c/a\u003e ·\n    \u003ca href=\"https://github.com/campfirium/foliole/blob/dev/README.zh.md\"\u003e简体中文\u003c/a\u003e\n  \u003c/sub\u003e\n\u003c/p\u003e\n\n# Foliole\n\nMake reading actually complete.\u003cbr\u003e\nAn approachable incremental reading app.\n\nWindows alpha is open for testing.\u003cbr\u003e\nAndroid alpha is expected around July.\u003cbr\u003e\nmacOS and iOS alpha builds are expected around August.\n\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"assets/screenshots/foliole-desktop.png\" alt=\"Foliole desktop app showing a document library, reading pane, and scheduling panel.\" width=\"900\"\u003e\n\u003c/p\u003e\n\n## Design Principles\n\n### Open Source\n\nThe code is open source. Anyone can review the implementation, build it from source, or contribute improvements.\n\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"assets/screenshots/Open%20Source.png\" alt=\"Foliole desktop interface preview.\" width=\"900\"\u003e\n\u003c/p\u003e\n\n### Open Data\n\nUses a SQLite database and provides a Markdown mirror, making materials easier to read, migrate, and reuse.\n\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"assets/screenshots/Open%20Data.png\" alt=\"Foliole document library and reading workspace.\" width=\"900\"\u003e\n\u003c/p\u003e\n\n### Local First\n\nNo account system. No central cloud sync. All data stays on your personal devices; devices sync over the local network.\n\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"assets/screenshots/Local%20First.png\" alt=\"Foliole local reading workspace.\" width=\"900\"\u003e\n\u003c/p\u003e\n\n## Core Features\n\n### Native Incremental Reading\n\nBuilt around Piotr Woźniak’s incremental reading ideas, with a native workflow for extracting passages, creating cloze deletions, and refining materials without leaving the reading flow.\n\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"assets/screenshots/Native%20Incremental%20Reading.png\" alt=\"Foliole reading pane with extracted notes.\" width=\"900\"\u003e\n\u003c/p\u003e\n\n### Integrated FSRS Scheduling\n\nIntegrates FSRS (Free Spaced Repetition Scheduler), an open and efficient review scheduling algorithm.\n\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"assets/screenshots/Integrated%20FSRS%20Scheduling.png\" alt=\"Foliole scheduling panel in the desktop app.\" width=\"900\"\u003e\n\u003c/p\u003e\n\n### Bring Reading Materials Together\n\nHandles reading materials from different sources, whether local files, web documents, notes managed in Obsidian, or materials exported from Readwise Reader.\n\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"assets/screenshots/Bring%20Reading%20Materials%20Together.png\" alt=\"Foliole document list and reading sources.\" width=\"900\"\u003e\n\u003c/p\u003e\n\n### Index External Documents\n\nIndexes other local folders on your computer without copying or moving the original files, creating an external document library that can be searched, viewed, and used across supported clients.\n\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"assets/screenshots/Index%20External%20Documents.png\" alt=\"Foliole document navigation and indexed folders.\" width=\"900\"\u003e\n\u003c/p\u003e\n\n### Complex Content Support\n\nSupports Markdown, PDF, EPUB, LaTeX math, code blocks, and other content rendering needs.\n\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"assets/screenshots/Complex%20Content%20Support.png\" alt=\"Foliole complex content reading view.\" width=\"900\"\u003e\n\u003c/p\u003e\n\n## Acknowledgements\n\nSpecial thanks to Piotr Woźniak and Jarrett Ye. Without SuperMemo, incremental reading, and FSRS, Foliole would not exist.\n\nMany thanks to the following open-source projects and components:\n\n- better-sqlite3\n- Capacitor\n- CodeMirror 6\n- Drizzle ORM\n- Electron\n- React\n- SQLite\n- TypeScript\n- Vite\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcampfirium%2Ffoliole","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcampfirium%2Ffoliole","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcampfirium%2Ffoliole/lists"}