No description
  • TypeScript 95.4%
  • Python 2.6%
  • JavaScript 1%
  • Shell 0.6%
  • Dockerfile 0.3%
Find a file
2026-06-30 12:54:41 +02:00
.gitea chore: init monorepo skeleton with pnpm + turborepo 2026-04-14 18:19:44 +02:00
apps fix(migrations): add journal entries for 0023 + 0024 so runtime migrate() applies them 2026-06-30 12:29:37 +02:00
deploy chore(infra): immutable image tags + parametrized compose + rollback docs (#397) 2026-05-25 09:19:08 +02:00
dev fix(dev): PostgreSQL-Superuser auf 'postgres' setzen 2026-05-03 13:37:17 +02:00
docs/adr feat(planner): mark candidate done with todo-source bridge sync 2026-06-15 08:55:14 +02:00
infra fix(fdroid): point repo_icon at icon.png template 2026-05-02 14:37:34 +02:00
packages feat(mail): Pipeline-Regeln — Kategorie löst create-todo aus (Closes #177) 2026-06-30 12:18:59 +02:00
scripts feat(search): rc33 — mm-knowhow on-device Embedding-Retrieval + Sync (#258) 2026-06-28 14:46:40 +02:00
.dockerignore ci(drone): lint/typecheck/test/build + api & web image publish 2026-04-15 22:47:44 +02:00
.drone.yml fix(ci): YAML colon-space in fdroid-nightly build-apk skip-command 2026-06-23 21:10:39 +02:00
.editorconfig chore: init monorepo skeleton with pnpm + turborepo 2026-04-14 18:19:44 +02:00
.gitignore feat(#374): Playwright-Setup + erster Smoke-Test für Web (Phase 1 von E2E) 2026-05-21 08:50:30 +02:00
.npmrc feat(mobile): Expo + Expo Router + Tamagui app 2026-04-15 22:36:26 +02:00
.nvmrc chore: init monorepo skeleton with pnpm + turborepo 2026-04-14 18:19:44 +02:00
.prettierignore chore: init monorepo skeleton with pnpm + turborepo 2026-04-14 18:19:44 +02:00
.prettierrc.json chore: init monorepo skeleton with pnpm + turborepo 2026-04-14 18:19:44 +02:00
api.sh feat(174): Mail-Review-Session — interaktiver Tag-Bestätigungs-Flow 2026-05-04 19:16:59 +02:00
CLAUDE.md chore(infra): immutable image tags + parametrized compose + rollback docs (#397) 2026-05-25 09:19:08 +02:00
package.json feat(mail): Pipeline-Regeln — Kategorie löst create-todo aus (Closes #177) 2026-06-30 12:18:59 +02:00
pnpm-lock.yaml feat(day-planner): add Heute / Day-View UI 2026-06-09 09:26:01 +02:00
pnpm-workspace.yaml chore: init monorepo skeleton with pnpm + turborepo 2026-04-14 18:19:44 +02:00
README.md chore: init monorepo skeleton with pnpm + turborepo 2026-04-14 18:19:44 +02:00
roadmap.json chore(roadmap): mark rc34 as done 2026-06-30 12:38:45 +02:00
turbo.json feat(#386): E2E Phase 4.5 - Mobile component tests via vitest 2026-05-22 16:12:04 +02:00
web.sh feat(174): Mail-Review-Session — interaktiver Tag-Bestätigungs-Flow 2026-05-04 19:16:59 +02:00

mrrmlabapp

Personal monorepo app with a pluggable feature-module architecture. First feature: shopping list. Later: whatever is interesting at the time.

Stack

  • Monorepo: pnpm workspaces + Turborepo
  • Web: Vite + React + TanStack Router
  • Mobile: Expo (managed) + Expo Router
  • Backend: NestJS
  • UI: Tamagui (cross-platform)
  • DB: PostgreSQL + Drizzle ORM
  • Auth: Keycloak (OIDC)
  • CI: Drone + Gitea

Structure

apps/
  api/       # NestJS backend
  web/       # Vite web app
  mobile/    # Expo React Native app
packages/
  config/              # shared tsconfig / eslint / prettier presets
  shared-types/        # Zod schemas — single source of truth for API contracts
  api-client/          # typed API client + TanStack Query hooks
  auth/                # Keycloak OIDC (web + native)
  ui/                  # Tamagui components
  feature-shopping-list/   # first feature module (blueprint for future ones)

Requirements

  • Node 24+ (the version pinned in .nvmrc)
  • pnpm 9.15.x (see packageManager field in package.json)
  • git

Node itself: use fnm or nvm to install the version from .nvmrc, e.g.:

fnm install   # reads .nvmrc
fnm use

Setup

1. Clone

git clone https://git.mrrm.de/admin-mrrm/mrrmlabapp.git
cd mrrmlabapp

2. Install pnpm

pnpm is the package manager for this monorepo. There are two ways to get it, and the right one depends on your platform.

Corepack ships with Node 16.9+ and reads the packageManager field in package.json so everyone automatically uses the exact same pnpm version.

corepack enable
corepack prepare pnpm@9.15.0 --activate
pnpm --version   # -> 9.15.0

Termux (Android)

Termux's Node build does not include Corepack. Install pnpm globally via npm instead:

npm install -g pnpm@9.15.0
pnpm --version   # -> 9.15.0

If the global install fails due to permissions, use the standalone installer:

curl -fsSL https://get.pnpm.io/install.sh | sh -

Note: keep the version in sync with the packageManager field in the root package.json. When that field is bumped, re-run the install command above with the new version.

3. Install dependencies

pnpm install

This installs everything for all workspace packages in one go.

4. Verify

pnpm exec turbo --version

Should print the Turborepo version without errors.

Common commands

pnpm dev        # run all dev servers in parallel
pnpm build      # build everything
pnpm lint       # lint everything
pnpm typecheck  # type-check everything
pnpm test       # run tests