---
url: https://saas.dev/docs/blog
md: https://saas.dev/docs/blog.md
---

# Blog

`leaseclock.com/blog` leads with Leaseclock's newest post, with the newest changelog entry under it. The changelog writes itself: when Lease gained a `rent` field, the entry "Leases now track rent" appeared, listing the new column, property and type.

## In short

[Leaseclock's blog: the article "Why renewals slip, and the 60-day notice", then the newest changelog entry](https://leaseclock.com/blog)

- The blog is at `leaseclock.com/blog`, in your theme, with an RSS feed and a Markdown copy of every post.
- The changelog at `leaseclock.com/blog/changelog` gains an entry each time a push changes what your customers see.
- A post is a Markdown file in `Post/`, pushed like any other file.

## Leaseclock's changelog

On October 21, Leaseclock added one line to `Lease.mdx` and pushed it.

```diff title="Noun/Lease.mdx"
   renter: { type: email, required: true }
   endsOn: { type: date, required: true, indexed: true }
+  rent: { type: money }
   status: { type: choice, options: [{ key: active }, { key: ended }] }
```

The Leases list gained a Rent column, the API and SDK gained a `rent` property, and [leaseclock.com/blog/changelog](https://leaseclock.com/blog/changelog) gained this entry, in Leaseclock's teal:

```md title="leaseclock.com/blog/changelog/leases-now-track-rent"
# Leases now track rent

October 21, 2026

Every lease has a monthly rent. Set it when you create a lease, and edit it on the lease's page.

- **New column:** Rent, in the Leases list
- **New property:** `rent` on `Lease` in the API and SDK
- **Type:** money, in dollars
```

Northgate Rentals reads it on the site, in a feed reader, or through an agent that fetches the Markdown.

## What writes an entry

Every change your customers can see writes one entry, worded the way a customer reads it.

| You change | The entry |
| --- | --- |
| Add `rent` to Lease | "Leases now track rent", with the new column, property and type |
| Add the `end` Verb to Lease | "End a lease from its page", with the new button, endpoint, command and agent tool |
| Add a `renewing` option to `status` | "Leases can be marked renewing", with the new tab and the new value |
| Add a Noun, such as Inspection | "Track inspections", with the new list, record page and endpoints |
| Raise `limits: { Unit: 200 }` to 300 | "Leaseclock Pro now covers 300 units" |
| Rename `renter` to `renterEmail` | Marked **Breaking**, with the old and new property and the SDK version that carries the change |
| Change a Verb's function body, the theme or a component of your own | No entry. Write a post when customers should hear about it |

## Edit or hide an entry

A new entry appears first on the Test copy of your site, so your team reads it before any customer does. In the admin's Changelog screen, rewrite its title or summary, or hide it. The list of what changed stays as generated, so it always matches the API and SDK.

## Write a post

A post is a Markdown file in `Post/`, next to your Nouns and Offers. Your agent writes it the same way it writes `Lease.mdx`.

```mdx title="Post/northgate-rentals.mdx"
---
title: How Northgate Rentals renews every lease on time
date: 2026-10-23
summary: Priya Shah sees every lease that ends in the next 60 days, and renews each one in two clicks.
---

Northgate Rentals manages 24 units across Alder Court and Birch House.
Priya Shah, its leasing coordinator, starts each Monday on the Leases list,
sorted by end date ...
```

```bash title="Terminal"
npx saas.dev push
```

[`npx saas.dev push`](https://saas.dev/docs/saas-dev-cli.md) serves the post at `leaseclock.com/blog/northgate-rentals` on Test, in your theme, with its title and summary as the link preview. It goes Live with the rest of your definition (see [How it works](https://saas.dev/docs/how-it-works.md)). Add `draft: true` to keep a post on Test.

## Read it from code

Everything the blog serves is public, and needs no key.

| Address | What it serves |
| --- | --- |
| `leaseclock.com/blog` | Every post, newest first |
| `leaseclock.com/blog/northgate-rentals` | One post |
| `leaseclock.com/blog/changelog` | Every changelog entry, newest first |
| `leaseclock.com/blog/feed.xml` | An RSS feed of posts |
| `leaseclock.com/blog/changelog/feed.xml` | An RSS feed of changelog entries |

Ask for any of them as Markdown, the way your customers' agents do:

```bash
curl -H 'Accept: text/markdown' https://leaseclock.com/blog/changelog
```

Every post and entry is also listed in `leaseclock.com/llms.txt` and the sitemap.

## Questions

**Does SaaS.Dev appear anywhere on my blog?**
No. The blog is on your domain, in your theme, under your product's name.

**Can my team write a post without the CLI?**
Yes. The admin's Posts screen writes the same file, and saving it creates a new version like a push does.

**Can I change how a post looks?**
Set fonts and colours in your theme, or replace the post layout with your own React component. See [Defaults and overrides](https://saas.dev/docs/overrides.md). You maintain only the component you replace.

**Do changes SaaS.Dev makes write entries in my changelog?**
No. Your changelog follows your definition. When SaaS.Dev improves checkout or the admin, the improvement reaches Leaseclock the day it ships, and SaaS.Dev's own [changelog](/changelog) records it.
