{"id":17148811,"url":"https://github.com/trustmaster/paper","last_synced_at":"2026-02-21T09:01:33.937Z","repository":{"id":37776078,"uuid":"219297935","full_name":"trustmaster/paper","owner":"trustmaster","description":"Journalling app with a paper feel","archived":false,"fork":false,"pushed_at":"2023-03-14T21:28:17.000Z","size":4916,"stargazers_count":2,"open_issues_count":8,"forks_count":0,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-04-06T03:42:22.764Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"JavaScript","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/trustmaster.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}},"created_at":"2019-11-03T12:32:26.000Z","updated_at":"2022-02-25T19:13:34.000Z","dependencies_parsed_at":"2024-12-19T11:27:17.811Z","dependency_job_id":"1b9df77c-e74d-4cc5-b198-8ba786ef7736","html_url":"https://github.com/trustmaster/paper","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/trustmaster/paper","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/trustmaster%2Fpaper","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/trustmaster%2Fpaper/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/trustmaster%2Fpaper/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/trustmaster%2Fpaper/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/trustmaster","download_url":"https://codeload.github.com/trustmaster/paper/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/trustmaster%2Fpaper/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29677881,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-21T06:23:40.028Z","status":"ssl_error","status_checked_at":"2026-02-21T06:23:39.222Z","response_time":107,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"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":[],"created_at":"2024-10-14T21:29:54.540Z","updated_at":"2026-02-21T09:01:33.918Z","avatar_url":"https://github.com/trustmaster.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Paper Journal App\n\nPaper is a journaling tool that can help you keep your notes in a simple and accessible form while providing real feel of a physical journal.\n\n![Screenshot](./screenshot.png)\n\n## Key features\n\n- Edit what you see right in place\n- Save data in plain hypertext\n- Publish as a static site if you want\n\n## Roadmap\n\n1. MVP _(current)_\n  - Overall look and feel of the app\n  - Provides basic adding, editing, ordering of posts\n  - Saves data on disk\n2. Journal settings and theme\n  - Opens local projects with a provided path\n  - Project settings are stored alongside with project data\n  - Theme is saved with a project, projects can have different themes via CSS\n3. Bookmarks\n  - Locate sections and posts via bookmarks (local URLs), requires router\n  - Add bookmarks with managment operations to the sidebar \n4. Search\n  - Search posts by keywords, displaying the matching posts with the keywords highlighted\n5. Publishing\n  - Export a read-only compiled HTML of a journal that can be published on web\n\n## MVP\n\nThe app consists of two panels. The left panel is a sidebar displaying a tree table of contents of the blog. Contents can be sorted by drag \u0026 drop. New posts can be created by clicking a \"+\" button. Posts can be deleted via context menu.\n\nThe right panel displays posts as a single feed. Editing posts and creating content is seamless (think of Medium). For the MVP just standard formatting is enough. Media content is extra.\n\nData is saved as local HTML files. This can be done either via thin Node.js server, or by packaging it as an Electron app.\n\n### Plan\n\n#### Mock :white_check_mark:\n\nA static mockup with the outline of the future application:\n\n- Sidebar panel on the left with Table of contents as a list. Last item of the list is a \"+\" button to add a new post.\n- Main content area on the right with A4-sized pages displaying posts. Each post has: `title`, `date`, `text` (formatted).\n\n#### React components :white_check_mark:\n\nThe app is still static but the layout is converted into React components:\n\n- App\n  - Sidebar\n    - Navigation\n      - NavItem\n      - NewPost\n  - Content\n    - Post\n      - Date\n      - Text\n\n#### Interactive content :white_check_mark:\n\nOn this stage interactivity is added, so posts become editable and new posts can be added to the app. However, state is neither propagated throughout the app, nor persisted.\n\n#### State management :white_check_mark:\n\nTime to introduce Redux for state management and to bring Content and Sidebar together.\n\nAdditionally, operations like deleting posts should be implemented.\n\n#### Ordering content :white_check_mark:\n\nPosts can be ordered via Drag \u0026 Drop in the sidebar.\n\n_Additional: could intoduce hierarchy like Categories or Chapters at this step and implement nesting together with Drag \u0026 Drop._\n\n#### Persistence\n\nAt this point we have complete state management and all changes avialable in the UI, but these changes are not saved between sessions.\n\nHere we connect the store with either a simple Node.js server or move the app to Electron, and implement a persistent storage and loading from local file system.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftrustmaster%2Fpaper","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ftrustmaster%2Fpaper","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftrustmaster%2Fpaper/lists"}