A set of reusable Lowdefy modules backed by MongoDB. Drop them into a Lowdefy app to get authentication, user admin, contacts, companies, file attachments, audit events, and notifications without writing the YAML for each.
The repo is for app builders who already use Lowdefy and want a curated set of modules that work together — shared change stamps, shared event collection, shared layout — instead of assembling them piece by piece.
Prerelease. This repo is in a prerelease state (0.x). Breaking changes can land in any minor release. Pin to an exact version or commit SHA in production and review the changelog before upgrading.
| Module | One-liner |
|---|---|
| layout | Page wrapper — header, sider, menu, profile, notifications, dark mode, auth pages |
| events | Audit event log — new-event API, timeline panel, change_stamp template |
| files | File attachments backed by S3 — upload, download, file cards, file lists |
| notifications | Bell, inbox, deep-link routing, configurable send routine |
| user-account | Login, email verification, profile view/edit/create |
| user-admin | User administration — list, edit, invite |
| contacts | Contact management — list, detail, edit, create, selector |
| companies | Company management — list, detail, edit, create, selector |
| release-notes | Render CHANGELOG.md as a release-notes page |
graph TD
layout --> user-account
layout --> notifications
user-account --> layout
user-account --> events
user-admin --> layout
user-admin --> events
user-admin --> notifications
notifications --> layout
contacts --> layout
contacts --> events
contacts --> companies
contacts --> files
companies --> layout
companies --> events
companies --> contacts
companies --> files
files --> layout
files --> events
release-notes --> layout
events
A few notes on the shape:
eventshas no dependencies — every other module either logs events or carries a change stamp, so it sits at the bottom of the graph.layoutdepends onuser-accountandnotificationsbecause the page chrome integrates the profile dropdown and the notification bell. Those modules in turn depend onlayoutfor their own pages — the cycle is intentional and resolved at runtime.contactsandcompaniesdepend on each other for selectors and bidirectional links. Same story — runtime cycle, by design.- Dependencies are not installed transitively. Declaring
dependencies:in a manifest tells the build how to wire cross-module references — it does not pull modules in. Every module you use must be added as its own entry inlowdefy.yaml. So addingcompaniesmeans also adding entries forlayout,events,contacts, andfiles(and their dependencies in turn).
| You need… | Add… |
|---|---|
| A login page and a profile page | layout, events, user-account |
| To invite and manage users | + user-admin, notifications |
| A bell and inbox for in-app messages | + notifications |
| Contact management with company links | + contacts, companies, files |
| File attachments on any entity | + files |
| An audit log on writes anywhere in the app | + events (most other modules already log) |
A release-notes page from CHANGELOG.md |
+ release-notes |
The minimum set for an authenticated app is layout + events + user-account + notifications. Everything else is opt-in.
Modules are added to the modules array in lowdefy.yaml:
modules:
- id: events
source: "github:lowdefy/modules-mongodb/modules/events@v0.5.0"
vars:
display_key: my-app
- id: layout
source: "github:lowdefy/modules-mongodb/modules/layout@v0.5.0"
# Drop logo-{light,dark}-theme.png and logo-square-{light,dark}-theme.png
# into the app's public/ folder — the layout reads them by convention.
- id: user-account
source: "github:lowdefy/modules-mongodb/modules/user-account@v0.5.0"
vars:
app_name: my-app
- id: notifications
source: "github:lowdefy/modules-mongodb/modules/notifications@v0.5.0"
vars:
app_name: my-appEach entry pins a source (GitHub ref or local file: path), passes vars, and optionally remaps dependencies and connections when entry IDs don't match the names declared in the module manifest. See https://docs.lowdefy.com/modules for the full module-system reference.
Per-module READMEs cover the vars, exports, and a worked example for each module. docs/idioms.md covers the shared patterns (change_stamp, event_display, slot vars, app_name, avatar colors, secrets) that most modules use.
apps/demo/ wires every module together against MongoDB. It's the canonical worked example — match its vars.yaml files in apps/demo/modules/{module}/vars.yaml for each module's input.
Some modules require @lowdefy/modules-mongodb-plugins, a peer plugin package shipped from this repo with custom blocks (ContactSelector, EventsTimeline, FileManager, SmartDescriptions) and a FetchRequest action.
Releases are tagged in this repo. Pin module sources to a specific tag (@v1.2.0) — pinning to a branch will pull whatever is on that branch at build time. Release notes live in CHANGELOG.md.