2026-07-25 17:42:04 +00:00
|
|
|
# Verse
|
2026-07-25 17:10:38 +00:00
|
|
|
|
2026-07-25 17:42:04 +00:00
|
|
|
A quote app built on poems: browse, search, and favorite quotes drawn from
|
|
|
|
|
classic poems, or submit your own. Built with
|
|
|
|
|
[Agent Native](https://agent-native.com) — every app operation is a single
|
|
|
|
|
`defineAction` callable from the React UI *and* from agent chat.
|
2026-07-25 17:10:38 +00:00
|
|
|
|
|
|
|
|
## Features
|
|
|
|
|
|
2026-07-25 17:42:04 +00:00
|
|
|
- Browse and search quotes by poet, poem, or theme tag.
|
|
|
|
|
- Favorite quotes anonymously (per-browser, no login required).
|
|
|
|
|
- Submit new quotes, which create the poem record if it doesn't exist yet.
|
|
|
|
|
- The same actions are callable from the in-app agent chat at `/chat`.
|
|
|
|
|
- Postgres-backed shared state, seeded with ~20 public-domain poems on first boot.
|
|
|
|
|
- OpenTelemetry traces/metrics/logs for every action call, exported over OTLP.
|
|
|
|
|
|
|
|
|
|
## Action surface
|
|
|
|
|
|
|
|
|
|
See `AGENTS.md` for the full list. In short: `list-quotes`, `get-random-quote`,
|
|
|
|
|
`create-quote`, `toggle-favorite`, `list-favorites`.
|
2026-07-25 17:10:38 +00:00
|
|
|
|
|
|
|
|
## Develop locally
|
|
|
|
|
|
|
|
|
|
```bash
|
|
|
|
|
pnpm install
|
2026-07-25 17:42:04 +00:00
|
|
|
docker compose up -d # starts local Postgres
|
2026-07-25 17:10:38 +00:00
|
|
|
pnpm dev
|
|
|
|
|
```
|
|
|
|
|
|
2026-07-25 17:42:04 +00:00
|
|
|
Set `DATABASE_URL` in `.env` (see `.env.example`) to point at the Postgres
|
|
|
|
|
container, or any Postgres/Neon/Supabase/libSQL connection string — schema and
|
|
|
|
|
seed data are created automatically on first boot via the migration plugin in
|
|
|
|
|
`server/plugins/db.ts`.
|
|
|
|
|
|
|
|
|
|
## Production
|
|
|
|
|
|
|
|
|
|
```bash
|
|
|
|
|
pnpm build
|
|
|
|
|
node .output/server/index.mjs
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
Built on the Agent Native `chat` template:
|
|
|
|
|
[agent-native.com/docs/template-chat](https://agent-native.com/docs/template-chat).
|