0.1.0GitHub
ProloguePackages

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/redis

Every 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:

PackageWhat it bringsRead more
@marmeon/coreThe application, modules, service providers, the container, configuration, events and the clock.Modules, container, providers, configuration, events
marmeonThe command: dev, build, start, the generators and tinker.Console, deployment
@marmeon/routerRoutes, invokable controllers, requests with schemas, route model binding and middleware.Routing, controllers, requests, middleware
@marmeon/httpControllers, pages and their props, redirects, signed URLs, cookies, and the browser's side of every visit.Responses, pages, URL generation
@marmeon/serverThe HTTP server, server rendering, health checks and the graceful stop.Request lifecycle, health checks
@marmeon/sessionSessions with their drivers, flash data and CSRF protection.Session, CSRF protection
@marmeon/validationThe validation rules, with messages in the request's language.Validation
@marmeon/i18nTranslations, the request's language and formatting.Localization
@marmeon/databaseConnections, migrations, table types, repositories, factories, transactions and pagination.Database, repositories, migrations
@marmeon/cacheThe cache, atomic locks and rate limits.Cache, rate limiting
@marmeon/authSign-in, password hashing and reset, the confirmation of an address, API tokens, policies and make:auth.Authentication, authorization, starter kit
@marmeon/mailMails as classes, queued sending and previews.Mail
@marmeon/queueJobs, workers, retries and failed jobs.Queues
@marmeon/schedulerScheduled tasks.Task scheduling
@marmeon/logThe logger: readable in development, JSON in production.Logging
@marmeon/reactThe React side: pages, layouts, <Link>, forms, islands and dialogs.Pages, navigation, forms

As dev dependencies, a new app has three more:

PackageWhat it bringsRead more
@marmeon/viteThe Vite plugin: the entries, the injection lists and the check that keeps server code out of the browser.Asset bundling
@marmeon/testingcreateTestApp(), requests and assertions, the database refresh and the fakes.Testing, fakes
@marmeon/devtoolsWhat 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

PackageWhat it bringsRead more
@marmeon/redisRedis connections for the cache, sessions, the queue and live updates.Redis
@marmeon/storageDisks on the local file system or S3, signed URLs and uploads.File storage
@marmeon/liveLive updates: pages reload their data when the server hints a change.Real-time updates
@marmeon/notificationsNotifications over mail, the database and live updates.Notifications
@marmeon/tableData tables driven by the server: columns, sorting, filters, actions and CSV export.Data tables
@marmeon/otelOpenTelemetry 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.