Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
20 commits
Select commit Hold shift + click to select a range
bbb149c
Migrate website build config to Nextra 4 (Next 15, Tailwind v4)
mnapoli Jul 4, 2026
b10fd5b
Add App Router layout, catch-all route, and ported client logic
mnapoli Jul 4, 2026
548c20f
Add sample Nextra 4 content and stage old Pages Router app
mnapoli Jul 4, 2026
08b8786
Sweep docs/ content for Nextra v4 (Tab/Card rename, NextSeo removal, …
mnapoli Jul 4, 2026
5756345
Convert docs/ _meta.json to _meta.js (Nextra v4 sidebar config format)
mnapoli Jul 4, 2026
6a13a68
Remove converted docs/ _meta.json files
mnapoli Jul 4, 2026
339a080
Activate full docs sync and document Phase C nav entries
mnapoli Jul 4, 2026
12c6476
Port home and credits pages to Nextra v4 (data-in-MDX server components)
mnapoli Jul 4, 2026
46de178
Port Bref Cloud page and subpages to Nextra v4
mnapoli Jul 4, 2026
daedb04
Port Sentry and X-Ray pages to Nextra v4
mnapoli Jul 4, 2026
576cf5d
Port news, support, 404; finalize v4 marketing routes
mnapoli Jul 4, 2026
5ffd78c
Scope Pagefind index to docs pages only, strip JSX comments in .md route
mnapoli Jul 4, 2026
e4acf3f
Apply review fixes: docs.md alternate link, path traversal guard, .md…
mnapoli Jul 4, 2026
5dfa175
Fix visual defects from Nextra v4 migration audit
mnapoli Jul 4, 2026
67c6372
Restore search placeholder and code block tint per maintainer drift d…
mnapoli Jul 4, 2026
bc2d3b1
Fix real D1 root cause: MDX paragraph injection collapsing hero h1 li…
mnapoli Jul 4, 2026
834ae93
Make marketing pages full-bleed (Nextra v4 way)
mnapoli Jul 5, 2026
37c1076
Fix React console errors on /cloud
mnapoli Jul 5, 2026
aae06d5
White page background + Bref-blue primary on docs (Nextra Head props)
mnapoli Jul 5, 2026
3ad5ecc
Fix docs sidebar page+folder duplicate nesting (asIndexPage)
mnapoli Jul 5, 2026
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
4 changes: 2 additions & 2 deletions docs/_meta.json → docs/_meta.js
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
{
export default {
"index": "What is Bref and serverless?",
"-- Getting started": {
"type": "separator",
Expand Down Expand Up @@ -56,4 +56,4 @@
"cloud-security": {
"title": "Security"
}
}
}
10 changes: 5 additions & 5 deletions docs/case-studies/craft-cloud.mdx
Original file line number Diff line number Diff line change
@@ -1,11 +1,11 @@
import { NextSeo } from 'next-seo';
---
title: "Bref case study: How Craft CMS built Craft Cloud"
description: Craft Cloud is built on AWS and Cloudflare and uses Bref to run Craft CMS (and PHP) at scale on AWS Lambda
---

import Image from 'next/image';
import illustration from './craft-cloud/illustration.png';

<NextSeo
title="Bref case study: How Craft CMS built Craft Cloud"
description="Craft Cloud is built on AWS and Cloudflare and uses Bref to run Craft CMS (and PHP) at scale on AWS Lambda" />

# How Craft CMS built Craft Cloud

<div className="mt-6 text-gray-500 text-lg">
Expand Down
7 changes: 4 additions & 3 deletions docs/case-studies.mdx → docs/case-studies/index.mdx
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
import { NextSeo } from 'next-seo';

<NextSeo description="A collection of case studies of serverless PHP applications built using Bref. Learn about performance, costs and migrations from existing projects." />
---
asIndexPage: true
description: A collection of case studies of serverless PHP applications built using Bref. Learn about performance, costs and migrations from existing projects.
---

# Case studies

Expand Down
10 changes: 5 additions & 5 deletions docs/case-studies/treezor.mdx
Original file line number Diff line number Diff line change
@@ -1,11 +1,11 @@
import { NextSeo } from 'next-seo';
---
title: "Bref case study: How Treezor runs a serverless banking platform with Bref"
description: Treezor migrated a legacy PHP application from servers to serverless on AWS Lambda. They gained increased scalability, faster response times and fewer production incidents.
---

import Image from 'next/image';
import illustration from './treezor/treezor-illustration.jpeg';

<NextSeo
title="Bref case study: How Treezor runs a serverless banking platform with Bref"
description="Treezor migrated a legacy PHP application from servers to serverless on AWS Lambda. They gained increased scalability, faster response times and fewer production incidents." />

# Treezor: a serverless banking platform

<div className="mt-6 text-gray-500 text-lg">
Expand Down
19 changes: 10 additions & 9 deletions docs/cloud-deploy.mdx
Original file line number Diff line number Diff line change
@@ -1,10 +1,11 @@
import { Callout, Steps, Cards, Card } from 'nextra/components';
// Path relative to the copy in the `website/` folder
import { LaravelIcon } from '../../components/icons/LaravelIcon';
import { SymfonyIcon } from '../../components/icons/SymfonyIcon';
import { NextSeo } from 'next-seo';
---
description: How to deploy Bref application using Bref Cloud.
---

<NextSeo description="How to deploy Bref application using Bref Cloud." />
import { Callout, Steps, Cards } from 'nextra/components';
// Path relative to the copy in the `website/` folder
import { LaravelIcon } from '../../src/components/icons/LaravelIcon';
import { SymfonyIcon } from '../../src/components/icons/SymfonyIcon';

# Deployment

Expand All @@ -13,9 +14,9 @@ Bref Cloud deploys application using Bref's `serverless.yml` file.
If you haven't gotten started with Bref, follow the guide corresponding to your framework:

<Cards num={2}>
<Card icon={<LaravelIcon />} title="Get started with Laravel" arrow="true" href="/docs/laravel/getting-started" />
<Card icon={<SymfonyIcon />} title="Get started with Symfony" arrow="true" href="/docs/symfony/getting-started" />
<Card title="Get started with any PHP framework" arrow="true" href="/docs/default/getting-started" />
<Cards.Card icon={<LaravelIcon />} title="Get started with Laravel" arrow="true" href="/docs/laravel/getting-started" />
<Cards.Card icon={<SymfonyIcon />} title="Get started with Symfony" arrow="true" href="/docs/symfony/getting-started" />
<Cards.Card title="Get started with any PHP framework" arrow="true" href="/docs/default/getting-started" />
</Cards>

The main difference with Bref Cloud is that you don't deploy by running `serverless deploy`. Instead, you deploy by running:
Expand Down
7 changes: 4 additions & 3 deletions docs/cloud-getting-started.mdx
Original file line number Diff line number Diff line change
@@ -1,7 +1,8 @@
import { NextSeo } from 'next-seo';
import { Callout } from 'nextra/components';
---
description: Installing the Bref CLI.
---

<NextSeo description="Installing the Bref CLI." />
import { Callout } from 'nextra/components';

# Getting started with Bref Cloud

Expand Down
7 changes: 4 additions & 3 deletions docs/cloud-security.mdx
Original file line number Diff line number Diff line change
@@ -1,7 +1,8 @@
import { NextSeo } from 'next-seo';
import { Callout } from 'nextra/components';
---
description: How Bref Cloud securely accesses your AWS accounts.
---

<NextSeo description="How Bref Cloud securely accesses your AWS accounts." />
import { Callout } from 'nextra/components';

# Secure access to your AWS accounts

Expand Down
15 changes: 8 additions & 7 deletions docs/cloud.mdx
Original file line number Diff line number Diff line change
@@ -1,9 +1,10 @@
import { NextSeo } from 'next-seo';
import { Cards, Card } from 'nextra/components';
import brefIcon from '../../components/icon.svg';
import Image from 'next/image';
---
description: Bref Cloud documentation.
---

<NextSeo description="Bref Cloud documentation." />
import { Cards } from 'nextra/components';
import brefIcon from '../../src/components/icon.svg';
import Image from 'next/image';

# Bref Cloud documentation

Expand All @@ -14,6 +15,6 @@ To get started, [create a free Bref Cloud account](https://bref.cloud/register).
Bref Cloud is a service that complements the open-source Bref project. It connects to all your AWS accounts to simplify permissions and access management, and provides a dashboard to manage your serverless applications.

<Cards num={2}>
<Card icon={<Image src={brefIcon} className="size-6" />} title="Learn more about Bref Cloud" href="/cloud" />
<Card icon={<Image src={brefIcon} className="size-6" />} arrow={true} title="Get started with Bref Cloud" href="https://bref.cloud/register" />
<Cards.Card icon={<Image src={brefIcon} className="size-6" />} title="Learn more about Bref Cloud" href="/cloud" />
<Cards.Card icon={<Image src={brefIcon} className="size-6" />} arrow={true} title="Get started with Bref Cloud" href="https://bref.cloud/register" />
</Cards>
6 changes: 3 additions & 3 deletions docs/community.mdx
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import { NextSeo } from 'next-seo';

<NextSeo description="A collection of links to places where to discuss and learn about Bref." />
---
description: A collection of links to places where to discuss and learn about Bref.
---

# Community

Expand Down
4 changes: 2 additions & 2 deletions docs/default/_meta.json → docs/default/_meta.js
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
{
export default {
"getting-started": "",
"cli-commands": "CLI commands"
}
}
18 changes: 9 additions & 9 deletions docs/default/cli-commands.mdx
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import { Tab, Tabs } from 'nextra/components';
import { Tabs } from 'nextra/components';

# CLI commands

Expand All @@ -16,31 +16,31 @@ The function uses the [Console runtime](../runtimes/console.mdx).
To execute the script on Lambda, run the command below:

<Tabs items={['Serverless CLI', 'Bref Cloud']}>
<Tab>
<Tabs.Tab>
```bash
serverless bref:cli
```
</Tab>
<Tab>
</Tabs.Tab>
<Tabs.Tab>
```bash
bref command
```
</Tab>
</Tabs.Tab>
</Tabs>

We can also pass arguments to the script:

<Tabs items={['Serverless CLI', 'Bref Cloud']}>
<Tab>
<Tabs.Tab>
```bash
serverless bref:cli --args="extra command line arguments and options"
```
</Tab>
<Tab>
</Tabs.Tab>
<Tabs.Tab>
```bash
bref command "extra command line arguments and options"
```
</Tab>
</Tabs.Tab>
</Tabs>

Our script will be invoked inside AWS Lambda and the result will be printed to the console.
Expand Down
25 changes: 13 additions & 12 deletions docs/default/getting-started.mdx
Original file line number Diff line number Diff line change
@@ -1,10 +1,11 @@
import { Cards, Card, Tabs, Tab } from 'nextra/components';
// Path relative to the copy in the `website/` folder
import { LaravelIcon } from '../../../components/icons/LaravelIcon';
import { SymfonyIcon } from '../../../components/icons/SymfonyIcon';
import { NextSeo } from 'next-seo';
---
description: Run PHP serverless on AWS Lambda using Bref.
---

<NextSeo description="Run PHP serverless on AWS Lambda using Bref." />
import { Cards, Tabs } from 'nextra/components';
// Path relative to the copy in the `website/` folder
import { LaravelIcon } from '../../../src/components/icons/LaravelIcon';
import { SymfonyIcon } from '../../../src/components/icons/SymfonyIcon';

# Getting started - Bref with any framework

Expand All @@ -13,8 +14,8 @@ This guide will help you deploy your first PHP application on AWS Lambda. The in
If you are using Laravel or Symfony, check out the dedicated guides instead:

<Cards num={2}>
<Card icon={<LaravelIcon />} title="Get started with Laravel" arrow="true" href="/docs/laravel/getting-started" />
<Card icon={<SymfonyIcon />} title="Get started with Symfony" arrow="true" href="/docs/symfony/getting-started" />
<Cards.Card icon={<LaravelIcon />} title="Get started with Laravel" arrow="true" href="/docs/laravel/getting-started" />
<Cards.Card icon={<SymfonyIcon />} title="Get started with Symfony" arrow="true" href="/docs/symfony/getting-started" />
</Cards>

## Setup
Expand Down Expand Up @@ -82,16 +83,16 @@ You will also want to add `.serverless` to your `.gitignore`.
To deploy, run:

<Tabs items={['Serverless CLI', 'Bref Cloud']}>
<Tab>
<Tabs.Tab>
```bash
serverless deploy
```
</Tab>
<Tab>
</Tabs.Tab>
<Tabs.Tab>
```bash
bref deploy
```
</Tab>
</Tabs.Tab>
</Tabs>

Once the command finishes, it should print a URL like this one:
Expand Down
4 changes: 2 additions & 2 deletions docs/deploy/_meta.json → docs/deploy/_meta.js
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
{
export default {
"docker": "Deploying Docker images",
"aws-cdk": "Deploying with AWS CDK"
}
}
38 changes: 21 additions & 17 deletions docs/deploy.mdx → docs/deploy/index.mdx
Original file line number Diff line number Diff line change
@@ -1,4 +1,8 @@
import { Callout, Tab, Tabs } from 'nextra/components';
---
asIndexPage: true
---

import { Callout, Tabs } from 'nextra/components';

# Deployment

Expand All @@ -11,16 +15,16 @@ Bref can also work with any other deployment tool: Terraform, CloudFormation, SA
To deploy to AWS an application configured with `serverless.yml`, run:

<Tabs items={['Serverless CLI', 'Bref Cloud']}>
<Tab>
<Tabs.Tab>
```bash
serverless deploy
```
</Tab>
<Tab>
</Tabs.Tab>
<Tabs.Tab>
```bash
bref deploy
```
</Tab>
</Tabs.Tab>
</Tabs>

A `.serverless/` directory will be created. You can add it to `.gitignore`.
Expand All @@ -46,16 +50,16 @@ Now is also the best time to configure your project for production, as well as b
Once your project is ready, you can deploy via the following command:

<Tabs items={['Serverless CLI', 'Bref Cloud']}>
<Tab>
<Tabs.Tab>
```bash
serverless deploy
```
</Tab>
<Tab>
</Tabs.Tab>
<Tabs.Tab>
```bash
bref deploy
```
</Tab>
</Tabs.Tab>
</Tabs>

### Reducing package size
Expand Down Expand Up @@ -103,19 +107,19 @@ If your application still exceeds the 250MB limit, you can [deploy via Docker im
We can deploy the same application multiple times in completely separated environments (also called "stages" by the Serverless CLI).

<Tabs items={['Serverless CLI', 'Bref Cloud']}>
<Tab>
<Tabs.Tab>
```bash
serverless deploy --stage=prod
```
</Tab>
<Tab>
</Tabs.Tab>
<Tabs.Tab>
```bash
bref deploy --env=prod

# or
bref deploy -e prod
```
</Tab>
</Tabs.Tab>
</Tabs>

The default environment is `dev`. The example above deploys a `prod` environment.
Expand Down Expand Up @@ -173,7 +177,7 @@ provider:
You can delete a deployed environment using the `remove` command.

<Tabs items={['Serverless CLI', 'Bref Cloud']}>
<Tab>
<Tabs.Tab>
```bash
serverless remove

Expand All @@ -182,8 +186,8 @@ You can delete a deployed environment using the `remove` command.
```

Note that because of the way Serverless Framework works, you will need to delete the contents of AWS S3 buckets manually before running this command.
</Tab>
<Tab>
</Tabs.Tab>
<Tabs.Tab>
```bash
bref remove

Expand All @@ -192,7 +196,7 @@ You can delete a deployed environment using the `remove` command.
```

Bref Cloud will automatically delete the contents of AWS S3 buckets.
</Tab>
</Tabs.Tab>
</Tabs>

**Deleting an environment destroys the AWS resources that were created for that environment.**
Expand Down
4 changes: 2 additions & 2 deletions docs/environment/_meta.json → docs/environment/_meta.js
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
{
export default {
"serverless-yml": "serverless.yml",
"variables": "Environment variables",
"php": "",
Expand All @@ -12,4 +12,4 @@
"aws-credentials": "AWS credentials",
"cold-starts": "Cold starts",
"performances": "Performance"
}
}
7 changes: 4 additions & 3 deletions docs/environment/aws-credentials.mdx
Original file line number Diff line number Diff line change
@@ -1,7 +1,8 @@
import { NextSeo } from 'next-seo';
import { Callout, Tabs } from 'nextra/components';
---
description: Access other AWS services from AWS Lambda by using the built-in AWS credentials.
---

<NextSeo description="Access other AWS services from AWS Lambda by using the built-in AWS credentials." />
import { Callout, Tabs } from 'nextra/components';

# AWS credentials on AWS Lambda

Expand Down
Loading
Loading