Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
37 commits
Select commit Hold shift + click to select a range
41ce8a1
adds app example with hexagonal architecture
dgoerdes Aug 26, 2025
b6d1f42
work in progress to implement event-sourcing and CQRS patterns
dgoerdes Aug 26, 2025
235b9c4
reworks router and messages with better validation design
dgoerdes Sep 4, 2025
60aa55d
adds client package with todo
dgoerdes Sep 4, 2025
3ea4b08
refactors eventBus to work with new router
dgoerdes Sep 4, 2025
db02abd
wip: first iteration on routing and messages
dgoerdes Oct 4, 2025
02f91f1
final iteration for the core message router?
dgoerdes Oct 4, 2025
1d3a76f
rework OakRouter and HTTP implementation to better suit HTTP standards
dgoerdes Oct 4, 2025
617b27f
implements more if the eventsourcing parts
dgoerdes Oct 4, 2025
ca05435
adds concurrency control mechanisms and better event mapping
dgoerdes Oct 6, 2025
371dd49
fix(oak): fixes commandDelete method to not return data
dgoerdes Oct 6, 2025
d8a8b8d
implements event store observe method to observe and reply events wri…
dgoerdes Oct 6, 2025
6993803
rework to have pure core in example app and starts on docs
dgoerdes Oct 7, 2025
c50d766
feat(hono): adds hono package and demo
dgoerdes Jan 15, 2026
29badc0
feat(hono): adds middleware for correlation id handling
dgoerdes Jan 15, 2026
4c855a4
feat(core): adds correlation id to pretty logs format
dgoerdes Jan 15, 2026
1107393
simplify, go back to zod, cleanup
dgoerdes Jan 17, 2026
b3160eb
better observability for mongodb operations by adding traces
dgoerdes Jan 17, 2026
d49d3ec
feat(mongodb): add metrics for mongodb operations
dgoerdes Jan 22, 2026
b0cf2c3
feat(core): reworks eventBus to include observability and use exponen…
dgoerdes Jan 22, 2026
65a2e01
feat(core): rework router to implement observability and use the same…
dgoerdes Jan 22, 2026
f4bfe04
chore(core): better docs and comments
dgoerdes Jan 22, 2026
d9e2c48
changing the docs
dgoerdes Jan 23, 2026
6047936
more docs
dgoerdes Jan 24, 2026
5515163
more docs
dgoerdes Jan 26, 2026
96c2898
complete docs
dgoerdes Jan 26, 2026
c6ccb33
removes oak package
dgoerdes Jan 26, 2026
60a8e08
fixes formatting
dgoerdes Jan 26, 2026
f125aff
fixes some linting and type issues
dgoerdes Jan 26, 2026
5d839c1
pin shas for github actions
dgoerdes Jan 26, 2026
c8ecfcd
fix workflows
dgoerdes Jan 26, 2026
3d39ae2
fix workflow?
dgoerdes Jan 26, 2026
693e381
ci
dgoerdes Jan 26, 2026
6c2fa1b
fix some code smells
dgoerdes Jan 26, 2026
b857cb0
fix code smell
dgoerdes Jan 26, 2026
4d5e2ce
fmt
dgoerdes Jan 26, 2026
3f15944
bust the caching issues?
dgoerdes Jan 26, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
18 changes: 18 additions & 0 deletions .claude/settings.local.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
{
"permissions": {
"allow": [
"Bash(deno test:*)",
"Bash(deno add:*)",
"Bash(deno task:*)",
"Bash(deno check:*)",
"Bash(find:*)",
"Bash(deno doc:*)",
"WebFetch(domain:docs.eventsourcingdb.io)",
"Bash(cat:*)",
"WebSearch",
"Bash(ls:*)"
],
"deny": [],
"ask": []
}
}
5 changes: 5 additions & 0 deletions .claudeignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
.env
.env.*
.otel_token
*.pem
*.key
56 changes: 14 additions & 42 deletions .github/workflows/checks.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -12,62 +12,34 @@ concurrency:

jobs:
deploy:
name: Build & Deploy
name: Format, Lint, Type Check & Test
runs-on: ubuntu-latest
env:
DENO_DIR: deno_cache_dir

steps:
- uses: actions/checkout@v4
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd

- name: Cache Deno dependencies
uses: actions/cache@v4
uses: actions/cache@8b402f58fbc84540c8b491a91e594a4576fec3d7
with:
path: ${{ env.DENO_DIR }}
key: deno_cache
key: deno-${{ runner.os }}-${{ hashFiles('deno.lock') }}
restore-keys: |
deno-${{ runner.os }}-

- uses: denoland/setup-deno@v2
- uses: denoland/setup-deno@e95548e56dfa95d4e1a28d6f422fafe75c4c26fb
with:
deno-version: v2.3.x
deno-version: v2

# Check if the code is formatted correctly.
- name: Check formatting (core)
- name: Check formatting
run: deno fmt --check
working-directory: ./packages/core
- name: Check formatting (mongodb)
run: deno fmt --check
working-directory: ./packages/mongodb
- name: Check formatting (oak)
run: deno fmt --check
working-directory: ./packages/oak
- name: Check formatting (utils)
run: deno fmt --check
working-directory: ./packages/utils

# Scan the code for syntax errors and style issues.
- name: Lint (core)
run: deno lint
working-directory: ./packages/core
- name: Lint (mongodb)
run: deno lint
working-directory: ./packages/mongodb
- name: Lint (oak)
- name: Lint
run: deno lint
working-directory: ./packages/oak
- name: Lint (utils)
run: deno lint
working-directory: ./packages/utils

# Run all test files in the repository and collect code coverage.
- name: Test (core)
run: deno test --allow-all --permit-no-files
working-directory: ./packages/core
- name: Test (mongodb)
run: deno test --allow-all --permit-no-files
working-directory: ./packages/mongodb
- name: Test (oak)
run: deno test --allow-all --permit-no-files
working-directory: ./packages/oak
- name: Test (utils)
- name: Type check
run: deno check

- name: Test
run: deno test --allow-all --permit-no-files
working-directory: ./packages/utils
21 changes: 10 additions & 11 deletions .github/workflows/docs.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -5,12 +5,6 @@ on:
release:
types: [created]

# Sets permissions of the GITHUB_TOKEN to allow deployment to GitHub Pages
permissions:
contents: read
pages: write
id-token: write

# Allow only one concurrent deployment, skipping runs queued between the run in-progress and latest queued.
# However, do NOT cancel in-progress runs as we want to allow these production deployments to complete.
concurrency:
Expand All @@ -20,19 +14,21 @@ concurrency:
jobs:
build:
runs-on: ubuntu-latest
permissions:
contents: read
steps:
- name: Checkout
uses: actions/checkout@v4
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd

- name: Setup Node
uses: actions/setup-node@v4
uses: actions/setup-node@6044e13b5dc448c55e2357c09f80417699197238
with:
node-version: 20
cache: npm
cache-dependency-path: "./docs/package-lock.json"

- name: Setup Pages
uses: actions/configure-pages@v4
uses: actions/configure-pages@983d7736d9b0ae728b81ab479565c72886d7745b

- name: Install dependencies
working-directory: ./docs
Expand All @@ -43,14 +39,17 @@ jobs:
run: npm run build

- name: Upload artifact
uses: actions/upload-pages-artifact@v3
uses: actions/upload-pages-artifact@7b1f4a764d45c48632c6b24a0339c27f5614fb0b
with:
path: docs/.vitepress/dist

deploy:
name: Deploy
needs: build
runs-on: ubuntu-latest
permissions:
pages: write
id-token: write

environment:
name: github-pages
Expand All @@ -59,4 +58,4 @@ jobs:
steps:
- name: Deploy to GitHub Pages
id: deployment
uses: actions/deploy-pages@v4
uses: actions/deploy-pages@d6db90164ac5ed86f2b6aed7e0febac5b3c0c03e
21 changes: 11 additions & 10 deletions .github/workflows/publish.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -5,30 +5,31 @@ on:
release:
types: [created]

permissions:
contents: read
id-token: write # The OIDC ID token is used for authentication with JSR.

jobs:
publish:
permissions:
contents: read
id-token: write # The OIDC ID token is used for authentication with JSR.

runs-on: ubuntu-latest

steps:
- uses: actions/checkout@v4
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd

- uses: denoland/setup-deno@v2
- uses: denoland/setup-deno@e95548e56dfa95d4e1a28d6f422fafe75c4c26fb
with:
deno-version: v2.3.x
deno-version: v2

- name: Publish core package
working-directory: ./packages/core
run: deno publish --allow-slow-types
run: deno publish

- name: Publish mongodb package
working-directory: ./packages/mongodb
run: deno publish

- name: Publish oak package
working-directory: ./packages/oak
- name: Publish hono package
working-directory: ./packages/hono
run: deno publish

- name: Publish utils package
Expand Down
40 changes: 40 additions & 0 deletions .zed/settings.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
{
"lsp": {
"deno": {
"settings": {
"deno": {
"enable": true
}
}
}
},
"languages": {
"JavaScript": {
"language_servers": [
"deno",
"!typescript-language-server",
"!vtsls",
"!eslint"
],
"formatter": "language_server"
},
"TypeScript": {
"language_servers": [
"deno",
"!typescript-language-server",
"!vtsls",
"!eslint"
],
"formatter": "language_server"
},
"TSX": {
"language_servers": [
"deno",
"!typescript-language-server",
"!vtsls",
"!eslint"
],
"formatter": "language_server"
}
}
}
10 changes: 10 additions & 0 deletions CLAUDE.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
# Format, Lint, Type Check & Test

Whenever something is changed in the examples or packages, run the following commands to format, lint, type check and test the code. Running these commands from the repository root will check all examples and packages.

```
deno fmt --check
deno lint
deno check
deno test
```
13 changes: 8 additions & 5 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,17 +1,20 @@
<img
src="https://raw.githubusercontent.com/overlap-dev/Nimbus/main/media/intro.png"
<img
src="https://raw.githubusercontent.com/overlap-dev/Nimbus/main/media/intro.png"
alt="Nimbus"
/>

# Installation

Find all packages and installation instructions at [jsr.io/@nimbus](https://jsr.io/@nimbus).
Find all packages and installation instructions at
[jsr.io/@nimbus](https://jsr.io/@nimbus).

# Documentation

Find the full documentation at [https://nimbus.overlap.at/](https://nimbus.overlap.at/).
Find the full documentation at
[https://nimbus.overlap.at/](https://nimbus.overlap.at/).

In addition code documentation is automatically generated and can be found for each package at [jsr.io/@nimbus](https://jsr.io/@nimbus).
In addition code documentation is automatically generated and can be found for
each package at [jsr.io/@nimbus](https://jsr.io/@nimbus).

# License

Expand Down
12 changes: 6 additions & 6 deletions RELEASE.md
Original file line number Diff line number Diff line change
@@ -1,21 +1,21 @@
# How to release a new version of the packages

For each package make sure the version in the `packages/<PACKAGE_NAME>/deno.json` is set correctly and stick to semantic versioning.
For each package make sure the version in the
`packages/<PACKAGE_NAME>/deno.json` is set correctly and stick to semantic
versioning.

Once everything is ready make a new commit with a message of this type:

```
chore: release 0.0.0
```

Push to `main` and create a new release on GitHub from there on the GitHub workflow will take care of the rest.
Push to `main` and create a new release on GitHub from there on the GitHub
workflow will take care of the rest.

## Manually publish to JSR

```
cd packages/<PACKAGE_NAME>
deno publish --allow-slow-types
deno publish
```

**Slow Types**
Because of some Zod inferred types, the `--allow-slow-types` flag is required to publish the package to JSR.
35 changes: 31 additions & 4 deletions deno.json
Original file line number Diff line number Diff line change
Expand Up @@ -2,12 +2,39 @@
"compilerOptions": {
"strict": true
},
"exclude": [
"docs/"
],
"workspace": [
"./packages/core",
"./packages/mongodb",
"./packages/oak",
"./packages/hono",
"./packages/utils",
"./examples/the-expense"
"./examples/hono-demo"
],
"nodeModulesDir": "none"
}
"nodeModulesDir": "none",
"fmt": {
"include": [
"examples/",
"packages/"
]
},
"lint": {
"include": [
"examples/",
"packages/"
]
},
"check": {
"include": [
"examples/",
"packages/"
]
},
"test": {
"include": [
"examples/",
"packages/"
]
}
}
Loading