Montara Pass
Getting started

Installation

Run the API, the database and the web app on your machine.

Requirements

  • Node.js 22 or newer and pnpm 11
  • Go 1.27
  • PostgreSQL 18. The migrations call uuidv7(), which older versions do not have.
  • A Resend API key, because sign-up sends a verification email

Install

pnpm install
cp apps/server/.env.example apps/server/.env

Fill in apps/server/.env before the first start:

  • APP_SECRET: at least 32 characters, for example openssl rand -base64 32
  • DB_DSN: the connection string of your PostgreSQL 18 database
  • RESEND_API_KEY and FROM_ADDRESS: the sender of the sign-in emails

Configuration lists every setting.

Create the tables

pnpm migrate:up

With MIGRATE_ON_BOOT=true the API applies pending migrations when it starts, so this step is optional in development. Authula keeps its own tables in the authula schema and creates them on boot.

Start

pnpm dev:server     # the API on http://localhost:8080
pnpm dev:app        # the vault web app on http://localhost:5173
pnpm dev:web        # the marketing site on http://localhost:5174
pnpm dev            # everything in parallel

http://localhost:8080/api/health answers {"data":{"status":"ok","version":"dev"}} when the API and its database are up.

One origin, no CORS

The Vite dev server proxies /api to the API, so the browser only ever talks to http://localhost:5173. Start the API first; if it is not on port 8080, set VITE_API_PROXY_TARGET when starting the app.

First account

Open http://localhost:5173/sign-up, create an account and confirm the email. The first visit to the vault asks for a master password of at least 12 characters. It is separate from the sign-in password and cannot be recovered: nobody, the server included, can reset it.

To get an administrator instead, set SUPER_USER=email:password and SEED_ON_BOOT=true. The API then creates that account with the super_user role on boot, which is the only role allowed to write categories.

On this page