fuast is in alpha. Read the capsule contract →
fuast
← Use cases

IT & ops

Internal request forms

Build an intake form for access, hardware, or PTO requests that logs each one, emails the right owner, and tracks status. Your AI writes it; fuast runs it.


Every team runs on requests. Someone needs access to a tool, a new laptop, a day off, a vendor approved. And almost every team handles those requests with the same three broken options: a shared spreadsheet nobody trusts, a Slack message that scrolls away, or an email thread that loses the reply that mattered.

The status quo is a spreadsheet pretending to be a workflow

The spreadsheet has no owner routing, so requests sit unassigned. Slack has no status, so "did anyone do this?" is a daily question. Email has no record, so at the end of the quarter you cannot say who asked for what or how long it took. None of these were built to be an intake system. They just got drafted into the job because standing up a real one meant auth, a database, and hosting for what is, honestly, a form.

The fuast version is one small app

On fuast an internal request form is a single capsule: a form your coworkers open with a link, a table that logs every submission, and a rule that emails the right owner and tracks status from pending to done. It is an internal tool that took an afternoon instead of a ticket-and-a-quarter.

Steal this prompt

Paste this to your AI. It reads the fuast contract at /llms.txt and writes the whole thing.

Build a fuast capsule for internal requests. A signed-in coworker submits a request with a type (access, hardware, or PTO) and a short description. Store the submitter from the verified identity, never from a form field. Email it-team@ourco.com when a request comes in. Show me a list of all requests with their status, and let an owner move a request from pending to approved or denied. Then deploy it and share it with the workspace.

What makes it real on fuast

The reason this is a real tool and not a form dump is what fuast includes:

  • Built-in auth means it sees who submitted. The request is stamped with the verified ctx.auth.userId, not a name typed into a box someone can fake. IT knows exactly who asked.
  • A real database logs every request with a createdAt, so status tracking and "how long did this take" reporting are just queries.
  • Transactional email routes each new request to the right owner the moment it lands, with no separate mail service to wire up.

A slice of the server half:

import { capsule, table, string, text, mutation, query } from "fuast/server";

export default capsule({
  schema: {
    requests: table({
      kind: string(),        // "access" | "hardware" | "pto"
      detail: text(),
      requestedBy: string(),
      status: string(),      // "pending" | "approved" | "denied"
    }).index("by_status", ["status"]),
  },
  queries: {
    all: query(async (ctx) => ctx.db.requests.order("desc").collect()),
  },
  mutations: {
    submit: mutation(async (ctx, kind: string, detail: string) => {
      if (ctx.auth.isGuest) throw new Error("sign in first");
      const row = await ctx.db.requests.insert({
        kind, detail, requestedBy: ctx.auth.userId, status: "pending",
      });
      await ctx.email.send({
        to: "it-team@ourco.com",
        subject: `New ${kind} request`,
        text: detail,
      });
      return row;
    }),
  },
});

That is a working backend: verified submitter, routed email, tracked status. No server to provision, no auth to bolt on.

Ship it to your team

An intake form your coworkers open from a link, that logs who asked and pings the right owner, is the exact shape fuast was built for. Read more on internal tools without a platform team, then build one for real.

Ship this one.

Paste the prompt to your AI, run `fuast deploy`, share the link.

Start free