← Crafts
Relay preview

Relay

Campus pilot Solo full-stack engineer

RETURN — campus lost-and-found for cataloging lost and found reports, staff review, and resolution tracking.

Problem

Campus lost-and-found still lives in bulletin boards, group chats, and front-desk notebooks. RETURN gives reporters a structured path to file lost or found items with taxonomy, photos, and site/location context — and gives staff review queues, audit trails, and resolution states in one system.

Capabilities

  • lost_reports and found_reports tables with category, site, location, and image storage references
  • Report lifecycle: pending review, rejection reason, resolution by staff with timestamps
  • Taxonomy layer (categories, sites, locations) shared across report types
  • Better Auth, Drizzle ORM, and PostgreSQL in a Turborepo (apps/web, apps/server, packages/db)
  • Hono API with Cloudflare Workers deployment path via Alchemy
  • PWA and Electrobun desktop shell options for field and desk use
submit staff review match / claim reject Pending Reviewed Resolved Rejected
Report lifecycle
export const lostReports = pgTable("lost_reports", {
  id: uuid("id").defaultRandom().primaryKey(),
  reporterId: text("reporter_id").notNull().references(() => user.id, { onDelete: "restrict" }),
  categoryId: uuid("category_id").notNull().references(() => categories.id, { onDelete: "restrict" }),
  title: text("title").notNull(),
  description: text("description").notNull(),
  dateOccurred: timestamp("date_occurred", { mode: "date" }).notNull(),
  imageStorageIds: jsonb("image_storage_ids").$type<string[]>().notNull().default([]),
  status: text("status").notNull().default("pending"),
  ...timestamps,
});
RETURN report intake and review queue
Screenshot placeholder — lost report form and staff review dashboard.