Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion getting-started/billing.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,7 @@ Team plans increase limits to **15 builders**, **50 viewers**, and unlimited app

Plans are billed monthly or annually.

Annual plans include a **20% credit bonus** on top of the monthly balance. When you select an annual plan, the pricing display breaks down the cost as the base monthly price plus the bonus credit value, making the total benefit more transparent. Unused credits roll over for 30 days on monthly plans and 365 days on annual plans.
Annual plans include a **20% credit bonus** on top of the monthly balance. When you select an annual plan, the pricing display prominently shows the base monthly price alongside the bonus credit value in green (displayed as "$X monthly" + "+$Y extra"), making the bonus value immediately obvious. Unused credits roll over for 30 days on monthly plans and 365 days on annual plans.

Team plans also enable **domain auto-enrollment** — new users who sign up with your organization's email domain are automatically added.

Expand Down
4 changes: 4 additions & 0 deletions getting-started/core-concepts.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -104,6 +104,10 @@ Persistent memory stores organization-wide knowledge that your AI assistants and

Memory is organized into files that can be viewed, created, edited, and deleted — either through the Memory panel in the editor or through API endpoints. The system tracks which source (user, AI coder, or memory agent) made each change.

### Memory Agent Resilience

The memory agent automatically retries transient failures to ensure reliable operation. When a fetch request fails with a temporary error (HTTP 408, 429, 502, 503, 504 or a network timeout), the agent retries with exponential backoff. All fetch requests enforce a per-request timeout of 15 seconds, protecting against hanging connections.

## How they work together

1. **Admins** configure connectors and grant permissions to users and groups
Expand Down
12 changes: 11 additions & 1 deletion getting-started/quickstart-web.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,17 @@ This guide walks you through creating an app using the Major web dashboard. No l

## Step 1 — Sign in

Go to [app.major.build](https://app.major.build) and sign up or sign in. From the dashboard you can create a new app by describing what you need, manage your existing apps, or configure resources.
Go to [app.major.build](https://app.major.build) and sign up or sign in.

**Parametrized signup pages:** If you access Major through a parametrized signup link, the signup form displays campaign-specific messaging. The heading reads "Get a free, personalized demo" and a tailored subtitle describes what will be built for your use case. For example, if you sign up through a renewals campaign, you'll see "We'll build an incredible renewals dashboard with you" instead of generic text. Other campaign options include health and leadgen. After entering your email on the initial screen, you can choose to "Create Major account" or "get started for free". Your email and associated campaign/UTM data are stored for demo follow-up.

**Standard signup:** On the main signup page, you can choose between OAuth sign-up or email/password authentication.

**On mobile:** The signup page displays a chat-like interface with animated steps showing your app generation workflow. OAuth sign-up options appear first; toggle to email/password fields if you prefer. Once you complete sign-up, a preview of your generated app appears below.

**On desktop:** The signup form includes OAuth buttons and email/password fields. A full editor mock shows the app generation workflow running in real time.

From the dashboard you can create a new app by describing what you need, manage your existing apps, or configure resources.

## Step 2 — Create an app

Expand Down
2 changes: 2 additions & 0 deletions web/connectors.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,8 @@ When editing a connector, you can configure each environment independently. This
| default | prod.example.com | myapp_prod |
| staging | staging.example.com | myapp_staging |

Environments appear sorted by creation date (oldest first). Your default Production environment always appears at the top of the list.

To configure:
1. Click on a connector to edit it
2. Select the desired environment
Expand Down
10 changes: 10 additions & 0 deletions web/crons.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,16 @@ The Crons panel in the editor shows all defined jobs with their schedules and ex
- **Delete jobs** — remove cron jobs from your app
- **View versions** — see cron definitions from different app versions and deploy specific versions

## Home Page View

Your application cards on the home page display a "scheduled jobs" indicator when you have deployed cron jobs. The indicator shows:

- A calendar icon
- The count of scheduled jobs
- The names and detailed schedules of each job (e.g., "Daily at 9:03 AM", "Weekly on Monday at 2:15 PM", "Monthly on the 15th at 10:45 AM")

Click the indicator to jump directly to your app's cron management tab. Use the "Filter Scheduled Jobs" button to display only applications that have scheduled jobs.

## Execution

When a cron executes, Major sends an HTTP POST request to the specified URL with an `x-major-cron-jwt` header containing a signed token. Use this to verify the request came from Major.
14 changes: 14 additions & 0 deletions web/deploying.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,20 @@ When a user visits a private app while logged out, Major redirects them to sign

When deploying for the first time, you can choose a custom subdomain for your app (e.g., `my-app.apps.prod.major.build`). Existing apps can update their URL slug in application settings.

## Custom Domains

Organizations can register a custom domain and map multiple applications to different subdomains under it.

### Organization Domains

Register a custom domain at the organization level (e.g., `coolapp.com`). Once registered, all applications in your organization can use subdomains under this domain.

### Application Subdomains

Each application can be assigned a subdomain that maps to the organization's custom domain. For example, if your organization domain is `coolapp.com`, you can assign the subdomain `app1` to make your application accessible at `app1.coolapp.com`.

Multiple applications can run under the same organization domain with different subdomains, enabling you to manage multiple apps under a single branded domain.

## Per-User OAuth in Deployed Apps

If your app uses resources configured for **per-user** authentication, Major automatically enforces an OAuth gate. When a user accesses the app without a connected OAuth account, they're redirected to the `/connect` page to authorize access.
Expand Down
12 changes: 10 additions & 2 deletions web/editor.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,15 @@ The Major Editor provides a collaborative environment to modify your application

The editor includes an AI assistant with full context of your application code. You describe what you want to build or change in the chat panel, and the AI reads your codebase, asks clarifying questions if anything is ambiguous, and works through the implementation with you.

## Session State

Your coding session has a state that indicates whether the AI agent is ready to work. The frontend observes this state to determine AI readiness:

- **READY** — The AI agent has finished startup and is actively running. You can send messages and the AI will respond.
- **CLOSED** — The session has ended. The AI is no longer available for this session.

When you open the editor, the session starts and the AI agent initializes. Once initialization completes, the session transitions to READY and the agent stands by to process your requests.

## Images and Attachments

You can attach images and files to your AI chat messages. Drag and drop or paste screenshots, mockups, or reference images directly into the chat. Supported file types include:
Expand All @@ -23,7 +32,7 @@ The AI uses these attachments as context when building or modifying your app —

## @ Mentions

Type `@` in the chat to explicitly reference connectors, attachments, and workspace files in your message. This tells the AI exactly which resource or file you're talking about.
Type `@` in the chat to see a popover of available connectors, attachments, and workspace files. Click an item to reference it in your message, or type to filter the list. This tells the AI exactly which resource or file you're talking about.

## Tool Cards

Expand Down Expand Up @@ -89,4 +98,3 @@ The AI assistant has built-in TypeScript language server support, giving it prec
The AI assistant can query production logs from your deployed applications. Ask the AI to investigate runtime errors, search specific log patterns, or examine application behavior in production. The AI searches logs collected from your app's container stdout and stderr, filtered by organization and app ID.

Use this to debug issues in deployed apps without leaving the editor. The AI can correlate log messages with your code to identify root causes and suggest fixes.

58 changes: 57 additions & 1 deletion web/env-vars.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -19,4 +19,60 @@ After changing environment variables in a deployed app, click **Redeploy** to ap

## CLI

You can also manage environment variables from the CLI. Environment names are case-insensitive, so `--env staging` and `--env Staging` resolve to the same environment. See the [CLI Resource docs](/cli/resource) for details.
Environment names are case-insensitive, so `--env staging` and `--env Staging` resolve to the same environment.

### API Endpoints

You can manage environment variables programmatically via HTTP. All endpoints require authentication with a valid CLI token.

#### List environment variables

```bash
GET /cli/application/:applicationId/env-variables
```

Returns all environment variables for an application with their per-environment values.

**Response:**
```json
{
"variables": [
{
"key": "DATABASE_URL",
"values": {
"development": "postgres://...",
"staging": "postgres://...",
"production": "postgres://..."
}
}
]
}
```

#### Set an environment variable

```bash
POST /cli/application/:applicationId/env-variables/set
```

Sets a single environment variable for a single environment.

**Request body:**
```json
{
"key": "DATABASE_URL",
"environment": "staging",
"value": "postgres://..."
}
```

#### Delete an environment variable

```bash
DELETE /cli/application/:applicationId/env-variables/by-key/:key
```

Deletes an environment variable. To delete for a specific environment only, include `environment` as a query parameter. Omit it to delete the variable across all environments.

**Query parameters:**
- `environment` (optional) – delete only from this environment; if omitted, deletes from all environments
6 changes: 6 additions & 0 deletions web/index.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -4,3 +4,9 @@ description: "Build, configure, and deploy your internal tools."
---

The Major web dashboard is where you build, configure, and ship your internal tools. Use the AI-powered [editor](/web/editor) to develop your app, [deploy](/web/deploying) to production, configure [environments](/web/environments) for staging and production, and manage [permissions](/web/permissions) to control who can access what.

## Pinning Apps

Pin your most-used apps to keep them visible at the top of your app grid. Hover over an app card to reveal the pin icon, then click it to pin or unpin. Pinned apps appear in their own "Pinned" section at the top of the dashboard.

Your pins are saved per user and per organization, so they persist across the "My Apps" and "All Apps" tabs and remain visible when you filter by search.