--- title: "Guides" description: "Find practical guides for protecting resources, connecting a UI, uploading files, sending mail, running background work, and deploying a Beignet app." url: "https://www.beignetjs.com/guides" markdown_url: "https://www.beignetjs.com/markdown/guides.md" framework_version: "0.0.65" documentation_scope: "current-checkout" source_revision: "f27ffc691ada2988ce24a71558d3c529d53a9c1d" source_modified: true --- # Guides Choose the task you want to complete. These guides connect setup, application code, and checks so you can make a change in an existing Beignet app. New to Beignet? Start with the [quickstart](https://www.beignetjs.com/markdown/getting-started.md), then build the [Projects tutorial](https://www.beignetjs.com/markdown/learn.md). Use [Mental model](https://www.beignetjs.com/markdown/concepts.md) for the framework's vocabulary and [API reference](https://www.beignetjs.com/markdown/api-reference.md) for exported types and functions. ## Build a feature - **[Protect a resource](https://www.beignetjs.com/markdown/build-first-resource/ownership.md)** — derive ownership from the signed-in account, enforce access in use cases, and test two users. Continues the Projects API chapter. - **[Connect forms and lists](https://www.beignetjs.com/markdown/build-first-resource/ui.md)** — create, edit, and paginate Projects through a typed client, with shared validation and cache refreshes. Continues the ownership chapter. - **[Upload a file](https://www.beignetjs.com/markdown/uploads.md#generate-an-upload-workflow)** — generate an upload workflow, configure storage and its route, and connect the browser client. ## Add background work and communication - **[Run a background job](https://www.beignetjs.com/markdown/guides/background-jobs.md)** — save a job with a new project, deliver it through an outbox drain, and test retries and rollback. Uses the completed Projects app and SQLite. - **[Send an email](https://www.beignetjs.com/markdown/mail.md#setup)** — configure a mail provider, send through the app's mail port, and test delivery with an in-memory mailer. - **[Run work on a schedule](https://www.beignetjs.com/markdown/schedules.md)** — define a scheduled operation and connect the runtime that will invoke it. ## Ship and operate - **[Prepare an app for production](https://www.beignetjs.com/markdown/deployment.md)** — check migrations, environment variables, readiness, and the services your app depends on. - **[Deploy workers and drains](https://www.beignetjs.com/markdown/runtime-recipes.md#workers)** — choose explicit entrypoints for queue workers and outbox delivery alongside your web app. - **[Recover a failed job](https://www.beignetjs.com/markdown/jobs.md#inspect-and-retry-jobs)** — inspect a dispatch receipt and retry eligible work through its configured provider. ## Use a guide with your agent Open the guide you need and use **Copy page** near its title, or choose **Open Markdown** from its menu, to share the instructions and code. Give your agent the behavior you want and the app's local instructions, then review the guide's expected result together. The [agent instructions](https://www.beignetjs.com/markdown/agent-instructions.md) explain how to select guidance for the installed version, inspect the app, and verify a change. The [background job guide](https://www.beignetjs.com/markdown/guides/background-jobs.md#work-with-your-agent) includes a prompt with concrete completion checks.