Prologue
Packages
On this page
Introduction
Marmeon is a set of packages that are released together. A new app depends on most of them already, and you add the others when you need what they bring. Each installed package registers itself through discovery, so adding one is a single command:
pnpm add @marmeon/redisEvery package has the same version as every other: upgrade them together. The release policy explains why.
What a new app has
pnpm create marmeon installs these packages:
| Package | What it brings | Read more |
|---|---|---|
@marmeon/core | The application, modules, service providers, the container, configuration, events and the clock. | Modules, container, providers, configuration, events |
marmeon | The command: dev, build, start, the generators and tinker. | Console, deployment |
@marmeon/router | Routes, invokable controllers, requests with schemas, route model binding and middleware. | Routing, controllers, requests, middleware |
@marmeon/http | Controllers, pages and their props, redirects, signed URLs, cookies, and the browser's side of every visit. | Responses, pages, URL generation |
@marmeon/server | The HTTP server, server rendering, health checks and the graceful stop. | Request lifecycle, health checks |
@marmeon/session | Sessions with their drivers, flash data and CSRF protection. | Session, CSRF protection |
@marmeon/validation | The validation rules, with messages in the request's language. | Validation |
@marmeon/i18n | Translations, the request's language and formatting. | Localization |
@marmeon/database | Connections, migrations, table types, repositories, factories, transactions and pagination. | Database, repositories, migrations |
@marmeon/cache | The cache, atomic locks and rate limits. | Cache, rate limiting |
@marmeon/auth | Sign-in, password hashing and reset, the confirmation of an address, API tokens, policies and make:auth. | Authentication, authorization, starter kit |
@marmeon/mail | Mails as classes, queued sending and previews. | |
@marmeon/queue | Jobs, workers, retries and failed jobs. | Queues |
@marmeon/scheduler | Scheduled tasks. | Task scheduling |
@marmeon/log | The logger: readable in development, JSON in production. | Logging |
@marmeon/react | The React side: pages, layouts, <Link>, forms, islands and dialogs. | Pages, navigation, forms |
As dev dependencies, a new app has three more:
| Package | What it brings | Read more |
|---|---|---|
@marmeon/vite | The Vite plugin: the entries, the injection lists and the check that keeps server code out of the browser. | Asset bundling |
@marmeon/testing | createTestApp(), requests and assertions, the database refresh and the fakes. | Testing, fakes |
@marmeon/devtools | What the app did while you develop: requests, queries, jobs and mails. Development only. | Devtools |
@marmeon/encryption comes along as a dependency of @marmeon/http and @marmeon/session: it encrypts with APP_KEY and
rotates keys. See encryption.
Packages you add
| Package | What it brings | Read more |
|---|---|---|
@marmeon/redis | Redis connections for the cache, sessions, the queue and live updates. | Redis |
@marmeon/storage | Disks on the local file system or S3, signed URLs and uploads. | File storage |
@marmeon/live | Live updates: pages reload their data when the server hints a change. | Real-time updates |
@marmeon/notifications | Notifications over mail, the database and live updates. | Notifications |
@marmeon/table | Data tables driven by the server: columns, sorting, filters, actions and CSV export. | Data tables |
@marmeon/otel | OpenTelemetry traces of requests, queries, jobs and mails. | Observability |
A package that needs a library of its own names the exact install command when the library is missing. The deployment page lists them.
The creator
create-marmeon is the package behind pnpm create marmeon. It writes a new app and is not a dependency of it. The
installation page covers its questions and options.