Doughnut is a Personal Knowledge Management (PKM) tool combining zettelkasten style of knowledge capture with some features to enhance learning (spaced-repetition, smart reminders) and ability to share knowledge bits with other people (for buddy/team learning).
For more background info you can read::
π From the root of doughnut directory, in a terminal, run:
Please ensure your git configuration is appropriate for your OS to respect the correct line endings:
- macOS/Linux run
git config --global core.autocrlf input
thengit add --renormalize .
- Microsoft Windows
git config --global core.autocrlf true
thengit add --renormalize .
./setup-doughnut-dev.sh
Ensure your OS (WSL2/Ubuntu/Fedora, etc) has /bin/sh
point to bash
.
If you are using Ubuntu where /bin/sh
is symlinked to dash
, please
run sudo dpkg-reconfigure dash
and answer "No" to reconfigure to bash
as default.
πͺ WSL2 with WSLg: Additional things to note for Microsoft Windows10/Windows11 developers using WSL2g with Ubuntu-22.04.
~/.sdkman
dir and comment out sdkman related config in ~/.<SHELL>rc
.
π¦ π§ ONLY if you hit problems with the above quick-start setup, you should manually walk through the local development environment nix setup.
From the root of your doughnut directory, start your doughnut nix development environment with
nix develop
dum i && dum frontend:build && dum sut
- Rerun it each time you reset the database.
- From doughnut source root directory:
dum backend:test
We use cucumber Gherkin + cypress (test driver) Javascript/Typescript framework to drive the end-to-end test suite.
The Cypress+Cucumber tests are in JavaScript/TypeScript.
For MS Windows WSL2 users:
- you need to ensure your WSL2 Linux has
xvfb
installed manually before you can run cypress. This is not managed by Nix! export NODE_OPTIONS="--max-old-space-size=4096"
before running any cypress related commands ( e.g.cy:open
orcy:run
).
Purpose | Command (run from doughnut source root directory) |
---|---|
Install needed e2e tooling | dum i |
Start SUT (backend system under test) | dum sut (starts backend SUT ONLY) |
Start Mock for external backend | dum start:mb (starts mocked external backend ONLY) |
Start only the Cypress IDE | dum cy:open (starts Cypress IDE ONLY) |
Run all e2e test | dum t (compile frontend assets, start backend SUT, mountebank virtual service provider & cypress headless e2e testing) |
Run cypress IDE | dum test:open (starts frontend SUT in HMR mode, backend SUT, mountebank virtual service provider & cypress IDE) |
Generate TypeScript Interfaces | dum generateTypeScript (Generate TypeScript Interfaces from backend JSON classes. Should run manually every time backend JSON class changes) |
Purpose | Location |
---|---|
feature files | cypress/e2e/*.feature |
step definitions | cypress/step_definitions/*.ts |
custom DSL | cypress/support/*.ts |
cucumber hooks | cypress/step_definitions/common/hook.ts |
test fixtures | cypress/fixtures/*.* |
cypress config | cypress/config/*.json |
cypress plugins | cypress/plugins/index.ts |
You can find the database migrations in backend/src/main/resources/db.migration/
.
The migrations are run automatically when the backend app starts up.
It will also run the migrations for test when you run dum backend:test
.
To trigger the test DB migration manually, run backend/gradlew testDBMigrate
.
We chose Vue3 + Vite to build our frontend.
From doughnut
source root directory
dum frontend:test
dum frontend:sut
Build & Bundle Vue3 frontend web-app assets and startup backend app (backend webapp will launch on port 9081).
dum frontend:build
dum sut
Expect to find minified and uglified web bundle assets in backend/src/main/resources/static
directory:
β― pwd
/home/lia/doughnut/backend/src/main/resources/static
β― tree -L 3
.
βββ assets
β βββ main.32137c85.js
β βββ main.b097c993.css
β βββ vendor.8f9eb49d.js
βββ index.html
βββ odd-e.ico
βββ odd-e.png
1 directory, 6 files
- We welcome product ideas and code contribution.
- Collaborate over:
- GitHub Discussions for product ideas/features,
- GitHub Issues for reporting issues or bugs, OR
- doughnut gitter.im
- FOSS style; Fork and submit GitHub PR.
- Please keep the PR small and on only one topic
- The code need to come with tests