Store and sync your notes across all your devices
Explore the docs »
View Demo
·
Report Bug
·
Request Feature
Table of Contents
Notizen is an app to create and store your notes across your devices.
Notizen means notes in Luxembourgish. That's a cool two parts name !
This project is a monorepo based on the cra-monorepo-demo project file setup.
Monorepo 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.
This can be achived with the use of
yarn workspace
- package.json workspaces setting
- lerna
The project structure is as follows :
.
└── notizen/
├── node_modules/
|── backend
│ └── ...
│ └── package.json
|── frontend
│ ├── common/ (shared component library)
│ │ └── components
│ │ └── package.json
│ ├── desktop (Electron + create-react-app)
│ │ └── ...
│ │ └── package.json
│ ├── mobile (create-react-native-app)
│ │ └── ...
│ │ └── package.json
│ ├── web (create-react-app)
│ │ └── ...
│ │ └── package.json
├── package.json
|── infra
│ └── ...
|── documents
│ └── ...
└── yarn.lock
This is a work in progress. No synchronisation at the moment. Actually all datas are retrieved via a database. So there is a need to have a connection to use the app.
Some little tricks are used to speed up response for users with a slow connection :
- Optimistic rendering:
When an event (Redux action) is submited, this event is handled with ReduxThunkAction life cycle methods :
- action.pending
Event start : Update the local state when possible before receiving validation - action.fulfilled
Event is successfully played - action.rejected
Event is rejected Rollback the local state
- Synchronise local state into a local storage db
Synchronise local storage db when the local state change. Load local state from local storage when loading the app.
Offline Synchronisation with CQRS :
- Automerge
- Automerge author Martin Kleppmann website
- Designing Data-Intensive Applications by Martin Kleppmann
- YJS
- Are CRDTS suitable for shared editing ? by YJS author Kevin Jahns
To get a local copy up and running follow these simple example steps.
- Yarn
npm install --global yarn
- Clone the repo
git clone https://github.com/willahh/notizen.git
- Install packages
yarn install
- Start the backend
cd backend yarn start
- Start the frontend
cd frontend/web yarn start
Optional :
- Run storybook
cd frontend/web yarn run storybook
See the open issues for a list of proposed features (and known issues).
Contributions are what make the open source community such an amazing place to be learn, inspire, and create. Any contributions you make are greatly appreciated.
- Fork the Project
- Create your Feature Branch (
git checkout -b feature/AmazingFeature
) - Commit your Changes (
git commit -m 'Add some AmazingFeature'
) - Push to the Branch (
git push origin feature/AmazingFeature
) - Open a Pull Request
- Choose an Open Source License
- GitHub Pages
- Tailwind documentation
- Heroicons
- Loaders.css
- Animate.css
- Smooth Scroll
- Sticky Kit
- JVectorMap
- Font Awesome
All Rights Reserved
Copyright (c) 2021 William Ravel