{"id":13449848,"url":"https://github.com/willahh/notizen","last_synced_at":"2026-04-11T09:33:03.083Z","repository":{"id":53475330,"uuid":"337821083","full_name":"willahh/notizen","owner":"willahh","description":"Store and sync your notes across all your devices","archived":false,"fork":false,"pushed_at":"2021-04-22T20:04:32.000Z","size":27204,"stargazers_count":2,"open_issues_count":66,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-07-24T07:56:55.341Z","etag":null,"topics":["nestjs","postgresql","react","reactnative","redux","storybook","tailwindcss","typeorm","typescript"],"latest_commit_sha":null,"homepage":"","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/willahh.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE.txt","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2021-02-10T18:48:32.000Z","updated_at":"2021-04-01T16:47:57.000Z","dependencies_parsed_at":"2022-08-17T23:05:33.318Z","dependency_job_id":null,"html_url":"https://github.com/willahh/notizen","commit_stats":null,"previous_names":[],"tags_count":2,"template":false,"template_full_name":null,"purl":"pkg:github/willahh/notizen","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/willahh%2Fnotizen","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/willahh%2Fnotizen/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/willahh%2Fnotizen/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/willahh%2Fnotizen/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/willahh","download_url":"https://codeload.github.com/willahh/notizen/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/willahh%2Fnotizen/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31676205,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-11T08:18:19.405Z","status":"ssl_error","status_checked_at":"2026-04-11T08:17:08.892Z","response_time":54,"last_error":"SSL_read: 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":["nestjs","postgresql","react","reactnative","redux","storybook","tailwindcss","typeorm","typescript"],"created_at":"2024-07-31T06:00:58.356Z","updated_at":"2026-04-11T09:33:03.050Z","avatar_url":"https://github.com/willahh.png","language":"TypeScript","funding_links":[],"categories":["Running the update"],"sub_categories":["By Popularity"],"readme":"\u003c!-- PROJECT SHIELDS --\u003e\n\u003c!--\n*** Reference links are enclosed in brackets [ ] instead of parentheses ( ).\n*** See the bottom of this document for the declaration of the reference variables\n*** for contributors-url, forks-url, etc. This is an optional, concise syntax you may use.\n*** https://www.markdownguide.org/basic-syntax/#reference-style-links\n--\u003e\n\n\n\u003cbr /\u003e\n\u003cp align=\"center\"\u003e\n  \u003ca href=\"documents/images/github-logo.png\"\u003e\n    \u003cimg src=\"documents/images/github-logo.png\" alt=\"Logo\" width=\"300\" \u003e\n  \u003c/a\u003e\n\n  \u003ch3 align=\"center\"\u003eNotizen\u003c/h3\u003e\n\n  \u003cp align=\"center\"\u003e\n    Store and sync your notes across all your devices\n    \u003cbr /\u003e\n    \u003ca href=\"https://github.com/willahh/notizen\"\u003e\u003cstrong\u003eExplore the docs »\u003c/strong\u003e\u003c/a\u003e\n    \u003cbr /\u003e\n    \u003cbr /\u003e\n    \u003ca href=\"https://willahh.github.io/notizen/\"\u003eView Demo\u003c/a\u003e\n    ·\n    \u003ca href=\"https://github.com/willahh/notizen/issues\"\u003eReport Bug\u003c/a\u003e\n    ·\n    \u003ca href=\"https://github.com/willahh/notizen/issues\"\u003eRequest Feature\u003c/a\u003e\n  \u003c/p\u003e\n\u003c/p\u003e\n\n\n\n\u003c!-- TABLE OF CONTENTS --\u003e\n\u003cdetails open=\"open\"\u003e\n  \u003csummary\u003eTable of Contents\u003c/summary\u003e\n  \u003col\u003e\n    \u003cli\u003e\n      \u003ca href=\"#about-the-project\"\u003eAbout The Project\u003c/a\u003e\n      \u003cul\u003e\n        \u003cli\u003e\u003ca href=\"#built-with\"\u003eBuilt With\u003c/a\u003e\u003c/li\u003e\n      \u003c/ul\u003e\n    \u003c/li\u003e\n    \u003cli\u003e\n      \u003ca href=\"#getting-started\"\u003eGetting Started\u003c/a\u003e\n      \u003cul\u003e\n        \u003cli\u003e\u003ca href=\"#prerequisites\"\u003ePrerequisites\u003c/a\u003e\u003c/li\u003e\n        \u003cli\u003e\u003ca href=\"#installation\"\u003eInstallation\u003c/a\u003e\u003c/li\u003e\n      \u003c/ul\u003e\n    \u003c/li\u003e\n    \u003cli\u003e\u003ca href=\"#usage\"\u003eUsage\u003c/a\u003e\u003c/li\u003e\n    \u003cli\u003e\u003ca href=\"#roadmap\"\u003eRoadmap\u003c/a\u003e\u003c/li\u003e\n    \u003cli\u003e\u003ca href=\"#sync\"\u003eSynchronisation\u003c/a\u003e\u003c/li\u003e\n    \u003cli\u003e\u003ca href=\"#contributing\"\u003eContributing\u003c/a\u003e\u003c/li\u003e\n    \u003cli\u003e\u003ca href=\"#license\"\u003eLicense\u003c/a\u003e\u003c/li\u003e\n    \u003cli\u003e\u003ca href=\"#contact\"\u003eContact\u003c/a\u003e\u003c/li\u003e\n    \u003cli\u003e\u003ca href=\"#acknowledgements\"\u003eAcknowledgements\u003c/a\u003e\u003c/li\u003e\n  \u003c/ol\u003e\n\u003c/details\u003e\n\n\n## About The Project\n\n[![Product Name Screen Shot][product-screenshot]](https://example.com)\n\u003c!-- [![Product Name Screen Shot][product-screenshot-dark]](https://example.com) --\u003e\n\nNotizen is an app to create and store your notes across your devices.\n\nNotizen means notes in Luxembourgish. That's a cool two parts name !\n\n### Project structure\nThis project is a monorepo based on the [cra-monorepo-demo](https://github.com/jibin2706/cra-monorepo-demo) project file setup.\n\nMonorepo allows the separation of several packages into one. Thanks to this technique several sub-packages can be independent and some can shares certain files, like common/components shared between the desktop app and the web app.\n\nThis can be achived with the use of \n - `yarn workspace`\n - package.json workspaces setting\n - lerna\n\nThe project structure is as follows : \n```html\n.\n└── notizen/\n    ├── node_modules/\n    |── backend\n    │   └── ...\n    │   └── package.json\n    |── frontend\n    │   ├── common/ (shared component library)\n    │   │   └── components\n    │   │   └── package.json\n    │   ├── desktop (Electron + create-react-app)\n    │   │   └── ...\n    │   │   └── package.json\n    │   ├── mobile (create-react-native-app)\n    │   │   └── ...\n    │   │   └── package.json\n    │   ├── web (create-react-app)\n    │   │   └── ...\n    │   │   └── package.json\n    ├── package.json\n    |── infra\n    │   └── ...\n    |── documents\n    │   └── ...\n    └── yarn.lock\n```\n\n### Built With\n\n* [Typescript](https://www.typescriptlang.org/)\n* [React](https://reactjs.org/)\n* [Redux](https://redux.js.org/)\n* [ReactNative](https://reactnative.dev/)\n* [Tailwind CSS](https://tailwindcss.com/)\n* [Postgresql](https://www.postgresql.org/)\n* [Storybook](https://storybook.js.org/)\n\n### Synchronisation / Offline\nThis is a work in progress. No synchronisation at the moment.\nActually all datas are retrieved via a database.\nSo there is a need to have a connection to use the app.\n\nSome little tricks are used to speed up response for users with a slow connection :\n1. Optimistic rendering:  \n When an event (Redux action) is submited, this event is handled with ReduxThunkAction life cycle methods : \n  - action.pending  \n    Event start : Update the local state when possible before receiving validation\n  - action.fulfilled  \n    Event is successfully played\n  - action.rejected  \n    Event is rejected\n    Rollback the local state\n\n2. Synchronise local state into a local storage db  \nSynchronise local storage db when the local state change.\nLoad local state from local storage when loading the app.\n\n#### TODO\nOffline Synchronisation with CQRS :\n- [Automerge](https://github.com/automerge/automerge)\n- [Automerge author Martin Kleppmann website](https://martin.kleppmann.com/)\n- [Designing Data-Intensive Applications by Martin Kleppmann](https://www.amazon.co.uk/gp/product/1449373321/ref=as_li_qf_sp_asin_il_tl?ie=UTF8\u0026camp=1634\u0026creative=6738\u0026creativeASIN=1449373321\u0026linkCode=as2\u0026tag=dataintensive-21)\n- [YJS](https://docs.yjs.dev/)\n- [Are CRDTS suitable for shared editing ? by YJS author Kevin Jahns](https://blog.kevinjahns.de/are-crdts-suitable-for-shared-editing/)\n\n\n\n\n\n## Getting Started\nTo get a local copy up and running follow these simple example steps.\n\n\n### Prerequisites\n\n* Yarn\n  ```sh\n  npm install --global yarn\n  ```\n\n### Installation\n\n1. Clone the repo\n   ```sh\n   git clone https://github.com/willahh/notizen.git\n   ```\n2. Install packages\n   ```sh\n   yarn install\n   ```\n3. Start the backend\n    ```sh\n    cd backend\n    yarn start\n    ```\n3. Start the frontend\n    ```sh\n    cd frontend/web\n    yarn start\n    ```\n\nOptional :\n1. Run storybook\n    ```sh\n    cd frontend/web\n    yarn run storybook\n    ```\n\n## Usage\n\n\n## Roadmap\n\nSee the [open issues](https://github.com/willahh/notizen/issues) for a list of proposed features (and known issues).\n\n\n## Contributing\n\nContributions are what make the open source community such an amazing place to be learn, inspire, and create. Any contributions you make are **greatly appreciated**.\n\n1. Fork the Project\n2. Create your Feature Branch (`git checkout -b feature/AmazingFeature`)\n3. Commit your Changes (`git commit -m 'Add some AmazingFeature'`)\n4. Push to the Branch (`git push origin feature/AmazingFeature`)\n5. Open a Pull Request\n\n\n## Acknowledgements\n* [Choose an Open Source License](https://choosealicense.com)\n* [GitHub Pages](https://pages.github.com)\n* [Tailwind documentation](https://tailwindcss.com/docs/theme)\n* [Heroicons](https://heroicons.com/)\n* [Loaders.css](https://connoratherton.com/loaders)\n* [Animate.css](https://daneden.github.io/animate.css)\n* [Smooth Scroll](https://github.com/cferdinandi/smooth-scroll)\n* [Sticky Kit](http://leafo.net/sticky-kit)\n* [JVectorMap](http://jvectormap.com)\n* [Font Awesome](https://fontawesome.com)\n\n[contributors-url]: https://github.com/willahh/notizen/graphs/contributors\n[forks-url]: https://github.com/willahh/notizen/network/members\n[stars-url]: https://github.com/willahh/notizen/stargazers\n[issues-url]: https://github.com/willahh/notizen/issues\n[milestones-url]: https://github.com/willahh/notizen/milestones\n[license-url]: https://github.com/willahh/notizen/blob/master/LICENSE.txt\n[product-screenshot]: documents/images/notizen-screen-light-01.png\n[product-screenshot-dark]: documents/images/notizen-screen-dark-01.png\n\n## Contact\n- [@twitter](https://twitter.com/willahhravel)\n- [Notizen repository](https://github.com/willahh/notizen)\n\n## License\nAll Rights Reserved\n\nCopyright (c) 2021 William Ravel\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fwillahh%2Fnotizen","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fwillahh%2Fnotizen","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fwillahh%2Fnotizen/lists"}