Swapmeadow: buy, sell and give away things with neighbors

Swapmeadow: buy, sell and give away things with neighbors

00 Markdown

Photo listings, priced or free, neighborhood search, buyer-seller threads, live pending and sold, and saved search email alerts.

Agent specs

Agent
Claude Code, Opus 5.5 Medium
Time
25 min
Cost
$7.39*

Agents work faster and more accurately on Elements.

* Cost at API rates, September 2026.

Run it yourself

Paste this prompt into your AI agent. You get the finished app on your own machine, ready to change however you like.

Agent Chat
Install elements:
curl -fsSL 'https://install.elements.dev?os=darwin' | sh && export PATH=~/elements/bin:$PATH

Create an Elements app from the elementscode/demo-swapmeadow scaffold:
cd ~/elements/projects
elements create swapmeadow -scaffold=elementscode/demo-swapmeadow
cd swapmeadow

Start the app.

Need an AI agent?

In AI desktop apps, paste into the Code tab, not the general chat.

How it's built

Swapmeadow needed photo uploads, listings kept to each neighborhood, buyer and seller threads, pending and sold that change on every open page, and email when a new listing matches a saved search. Each of those is a part of Elements, so the agent spent its 25 minutes on the marketplace itself.

What Elements gave the app

  • Live listings. Listings are a LiveTable opened per neighborhood and per seller. When a seller marks an item pending or sold, every neighbor's browse page updates with it.
  • Live threads and an inbox. Messages and conversations are LiveTables. A database trigger copies each new message onto its conversation, so the header badge and the inbox fill in as a reply arrives.
  • Photo uploads as function calls. The sell page sends up to six photos to an @rpc as File values, which stores the listing and its photos in one transaction, and a route serves each photo under its content hash.
  • Saved searches by email. Posting a listing schedules a background job that finds the neighbors whose saved searches match and sends each one a single email, however many of their searches it matches.
  • Data from SQL files. Four migrations define the schema, add four neighborhoods, and seed eight neighbors with 30 listings, buyer and seller threads, saved items and saved searches, plus 34 credited listing photos.
  • Sessions. Every write checks the signed-in user: the seller sets a listing's status, the two people in a thread post to it, and saves stay in your own neighborhood.

What the project server gave the agent

The project server runs alongside the agent and answers as soon as a file is saved: it type-checks the templates, TypeScript and SQL, applies migrations and reruns the tests, so every question came back right away and the agent kept building.

What shipped

The app type-checks with zero errors and all 36 tests pass. Every page works on desktop and phone, and live updates arrive across tabs, such as new messages and a listing marked pending or sold.

The code

Build it from scratch

To watch your agent build this app from an empty project, use the prompt we used instead. It takes longer than starting from the finished app above.

Agent Chat
Install elements:
curl -fsSL 'https://install.elements.dev?os=darwin' | sh && export PATH=~/elements/bin:$PATH

Create an Elements app:
cd ~/elements/projects
elements create swapmeadow
cd swapmeadow

Start the app, then build this:

Build a neighborhood marketplace named swapmeadow, for buying, selling and giving
away things locally.

- Sign up with a neighborhood.
- Post a listing: title, price or free, category, condition, description,
  photos.
- Browse listings in your neighborhood, filter by category and price, search.
- Message a seller about a listing; each conversation is between one buyer
  and the seller.
- Sellers mark a listing pending or sold.
- Save listings, and get an email when a saved search has new matches.

Seed eight neighbors, thirty listings with photos across categories, and a few
conversations. Show the seeded logins on the sign-in page.

Messages and listing status update in real time.

The weekly digest

New lessons, demos and posts from elements.dev, in one email a week.

Comments· 0