Skip to main content
A Marina app is one of two kinds:
  • Static: files served to the browser. Anything that produces HTML, CSS, and JavaScript works.
  • Dynamic: a request handler that runs on Marina, with access to platform services (database, storage, jobs, AI, connections).
One project can be both: static assets plus an entrypoint for API routes.

Supported stacks

Not supported: apps that start their own server and listen on a port (Express, Fastify, and similar), and languages other than JavaScript and TypeScript for the handler. Deploy source, not build output: if a project has a build step, Marina runs it, which keeps the app editable in Studio. Builds run offline, so everything a build needs must be in the project or its npm dependencies.

Project layout

The request handler

A dynamic app exports a handler. Marina passes each request plus the services the manifest declares:
src/app.ts
The environment is Web-standard: Request, Response, fetch, URL, crypto, and friends. TypeScript needs no build configuration; Marina bundles the entrypoint for you. There is no port to listen on and no server to manage: export the handler and Marina routes requests to it. marina carries only the services the version declares in its manifest. Calling an undeclared service fails with a clear error naming the declaration to add.

Who is making the request

Marina authenticates viewers before requests reach your app and identifies them with headers such as x-platform-user-id. Your code can trust these for per-user data without building sign-in. Callers without a browser can use app keys or temporary links.

From code to running app

marina deploy uploads the project, builds it, and publishes an immutable version. Changes that expand what an app can touch (a new service, a new connection, new migrations) go through an approval before the version goes live. During development, marina dev runs the same code locally.

App configuration

The full marina.json reference.

Deployments and versions

Builds, approvals, versions, and rollback.