Files
spark/README.md
T
2026-06-09 23:48:27 -04:00

1.8 KiB

Spark Slop

A small, fast web app for capturing project ideas and growing them with timestamped notes — like a comment thread for each idea.

Built with Bun, TypeScript, and SQLite (bun:sqlite). No external runtime dependencies — the whole backend is the Bun standard library.

Stack

  • Bun.serve — HTTP server + static file serving
  • bun:sqlite — embedded database (single spark_slop.db file, WAL mode)
  • Vanilla TS/JS frontend — no build step, no framework
  • A landing page (/) and the app (/app)

Run it

bun run dev     # auto-reload on file changes
# or
bun run start   # plain run

Then open http://localhost:3000. Set PORT to change the port:

PORT=8080 bun run start

The SQLite database file (spark_slop.db) is created automatically on first run.

Project layout

src/
  db.ts        # SQLite schema + typed query functions
  server.ts    # Bun.serve: JSON API + static files
public/
  index.html   # landing page
  app.html      # the app (idea list + notes)
  app.js        # frontend logic (API client, rendering)
  styles.css    # modern dark UI

API

Method Path Description
GET /api/ideas List ideas (with note counts)
POST /api/ideas Create an idea {title, description}
GET /api/ideas/:id Get one idea
PUT /api/ideas/:id Update an idea
DELETE /api/ideas/:id Delete an idea (cascades notes)
GET /api/ideas/:id/notes List notes for an idea
POST /api/ideas/:id/notes Add a note {body}
DELETE /api/notes/:id Delete a note