> ## Documentation Index
> Fetch the complete documentation index at: https://docs.biscuit.so/llms.txt
> Use this file to discover all available pages before exploring further.

# How to build and publish your first project

> Full walkthrough from sign-in to a live app on a custom domain. Covers prompts, the canvas view, sample data, testing, publishing, and DNS setup.

export const faqSchema = {
  "@context": "https://schema.org",
  "@type": "FAQPage",
  "mainEntity": [
    { "@type": "Question", "name": "What if Biscuit builds something different from what I described?", "acceptedAnswer": { "@type": "Answer", "text": "Don't restart. Use chat to correct it (\"the homepage should show a list, not a grid\", \"remove the search bar\"). Each correction goes into the project history." } },
    { "@type": "Question", "name": "What if I can't find a feature I want?", "acceptedAnswer": { "@type": "Answer", "text": "Open chat and prompt for it. If the feature exists in Biscuit (payments, emails, workflows, custom domains, file uploads), Biscuit configures it. If it doesn't, Biscuit tells you." } },
    { "@type": "Question", "name": "Why isn't my custom domain connecting?", "acceptedAnswer": { "@type": "Answer", "text": "DNS usually propagates within minutes, but can take up to 48 hours. Check that the records at your domain provider match what Biscuit shows on the publish screen. If they do, give it time." } }
  ]
};

<script type="application/ld+json" dangerouslySetInnerHTML={{__html: JSON.stringify(faqSchema)}} />

<iframe width="100%" height="400" src="https://www.youtube.com/embed/uZNMDHT7aQA" title="Build and publish your first project in Biscuit" allow="accelerometer; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" allowFullScreen />

This walkthrough takes you from sign-in to a working app on your own domain. It covers signing in, describing what you want, watching the canvas build, picking layouts, adding data, testing, publishing, and connecting a custom domain.

<Steps>
  <Step title="Sign in and start a new project">
    After your Biscuit account is created (and approved, in case you were added to the waitlist), you'll land on the Biscuit dashboard. If this is your first time, the dashboard will be empty.

    Click *New Project*. The next screen is where you describe your app. If you have an idea, type it in. If you're exploring, pick one of the example apps under the prompt box.

    If you have screenshots, PDFs, or a [blog post](https://www.biscuit.so/blog/one-shot-menugen) that describes the app you want, click the attach icon and upload them; Biscuit uses them as reference.

    <Frame>
      <img src="https://mintcdn.com/flits-886e81a8/qHJFWHw2dceIPPRt/images/first-project/01.webp?fit=max&auto=format&n=qHJFWHw2dceIPPRt&q=85&s=6bb60085f8c6229d4bf40f5c17e7b529" alt="Biscuit's new project screen, with the prompt box and example apps below it" width="1600" height="903" data-path="images/first-project/01.webp" />
    </Frame>

    <Tip>
      **Try this prompt**

      ```
      I want to build a simple notes app where I can save text notes, find them by keyword, and browse by date.
      ```
    </Tip>
  </Step>

  <Step title="Pick the features">
    After you submit the prompt, Biscuit suggests a list of features. Check the ones you want, uncheck the ones you don't, click *Suggest more* if you want it to think of additional ideas, and write your own if you have some features in mind. Click *Next* when you're happy with the list.

    <Frame>
      <img src="https://mintcdn.com/flits-886e81a8/qHJFWHw2dceIPPRt/images/first-project/02.webp?fit=max&auto=format&n=qHJFWHw2dceIPPRt&q=85&s=2573b7ba64a235aadd7f8f1bebd09619" alt="Feature suggestions screen with checkboxes for each feature" width="1600" height="902" data-path="images/first-project/02.webp" />
    </Frame>
  </Step>

  <Step title="Watch the canvas build">
    The canvas is your sketch view. Biscuit lays out each screen of your app as a frame on the canvas. Use this phase to explore the design before you commit.

    To make a change, click *Edit*, select a UI component, and prompt the change ("remove this", "make the buttons bigger", "use a darker color for the header").

    Optionally, select any screen, click *Explore*, and pick from *Different layouts*, *Different styles*, *New color schemes*, or *Surprise me*. Biscuit builds a few variations side by side. Pick the one you like, deselect the rest.

    <Frame>
      <img src="https://mintcdn.com/flits-886e81a8/qHJFWHw2dceIPPRt/images/first-project/03.webp?fit=max&auto=format&n=qHJFWHw2dceIPPRt&q=85&s=6b0275bc477ba2df8a243cdd05efaea2" alt="Canvas view with multiple app screens laid out as frames" width="1600" height="1284" data-path="images/first-project/03.webp" />
    </Frame>

    <Frame>
      <img src="https://mintcdn.com/flits-886e81a8/qHJFWHw2dceIPPRt/images/first-project/04.webp?fit=max&auto=format&n=qHJFWHw2dceIPPRt&q=85&s=6bed9e94b377ccdbc973a32269ef910c" alt="Explore variations side by side" width="1600" height="1280" data-path="images/first-project/04.webp" />
    </Frame>
  </Step>

  <Step title="Build the app">
    Once the canvas looks right, click *Build*. Biscuit sets up the database, the workflows, and the live version of your app. The canvas turns into a working preview.

    <Frame>
      <img src="https://mintcdn.com/flits-886e81a8/qHJFWHw2dceIPPRt/images/first-project/05.webp?fit=max&auto=format&n=qHJFWHw2dceIPPRt&q=85&s=3e8e0c00fd2138127e314a5e2064e723" alt="Build progress as Biscuit sets up the app" width="800" height="374" data-path="images/first-project/05.webp" />
    </Frame>

    <Frame>
      <img src="https://mintcdn.com/flits-886e81a8/qHJFWHw2dceIPPRt/images/first-project/06.webp?fit=max&auto=format&n=qHJFWHw2dceIPPRt&q=85&s=02f319704413f0a5b1330126c4239295" alt="Working preview of the built app" width="1600" height="903" data-path="images/first-project/06.webp" />
    </Frame>
  </Step>

  <Step title="Add sample data">
    Biscuit asks how to seed the database. Three options:

    * *Generate sample data* lets Biscuit populate it for you.
    * *Upload your files* takes a PDF, CSV, or Excel file you already have.
    * *Import from website* pulls data from an existing site.

    <Frame>
      <img src="https://mintcdn.com/flits-886e81a8/qHJFWHw2dceIPPRt/images/first-project/07.webp?fit=max&auto=format&n=qHJFWHw2dceIPPRt&q=85&s=03ad2c04d53e38c2ffdd90bcd2711dc6" alt="Sample data options: generate, upload, or import" width="1600" height="897" data-path="images/first-project/07.webp" />
    </Frame>
  </Step>

  <Step title="Test the app">
    Use the preview to add records, click around, and check that everything works. The view selector at the top lets you switch between desktop, tablet, and mobile, and between yourself, an anonymous user, and another logged-in user.

    <Frame>
      <img src="https://mintcdn.com/flits-886e81a8/qHJFWHw2dceIPPRt/images/first-project/08.webp?fit=max&auto=format&n=qHJFWHw2dceIPPRt&q=85&s=b16346717db630842f6085d25ad2865b" alt="Preview with view-selector for device and user role" width="1600" height="1291" data-path="images/first-project/08.webp" />
    </Frame>
  </Step>

  <Step title="Publish">
    Click *Publish* in the top-right. Biscuit gives you a default URL on the `.bsct.so` domain. Edit the slug if you want a different one, then click *Continue*. Add an app icon, check the website info, and let Biscuit run its safety check. When it passes, click *Publish*, and that's it: your app is live!

    <Frame>
      <img src="https://mintcdn.com/flits-886e81a8/qHJFWHw2dceIPPRt/images/first-project/09.webp?fit=max&auto=format&n=qHJFWHw2dceIPPRt&q=85&s=3f61dd5f38c98b04249194ff21d37c0a" alt="Publish flow with default .bsct.so URL" width="1600" height="900" data-path="images/first-project/09.webp" />
    </Frame>

    <Frame>
      <img src="https://mintcdn.com/flits-886e81a8/qHJFWHw2dceIPPRt/images/first-project/10.webp?fit=max&auto=format&n=qHJFWHw2dceIPPRt&q=85&s=7c5e043428b4b37bd536420177e5d1da" alt="App icon and website info" width="1600" height="901" data-path="images/first-project/10.webp" />
    </Frame>

    <Frame>
      <img src="https://mintcdn.com/flits-886e81a8/qHJFWHw2dceIPPRt/images/first-project/11.webp?fit=max&auto=format&n=qHJFWHw2dceIPPRt&q=85&s=65512c15159be219737b38f3f73ccb53" alt="Safety check passing before publish" width="1600" height="904" data-path="images/first-project/11.webp" />
    </Frame>
  </Step>

  <Step title="Connect a custom domain (optional)">
    Click *Add domain* on the publish screen and enter your domain (e.g. `cardkeep.com`). Biscuit shows the DNS records you need to add at your domain provider ([GoDaddy](https://www.godaddy.com/help/manage-dns-records-680), [Namecheap](https://www.namecheap.com/support/knowledgebase/article.aspx/767/10/how-to-change-dns-for-a-domain/), [Porkbun](https://kb.porkbun.com/article/68-how-to-edit-dns-records), [Cloudflare](https://developers.cloudflare.com/dns/manage-dns-records/how-to/create-dns-records/), etc.). Add them, save, and Biscuit handles the rest.

    <Note>
      This connects your domain to your app's URL only. Email continues to use `<your-app-slug>@apps.bsct.so` for both sending and receiving.
    </Note>

    DNS usually propagates within minutes, but can take up to 48 hours. If your custom domain still isn't connecting after that, check the records at your provider match what Biscuit shows.
  </Step>
</Steps>

## FAQ

<AccordionGroup>
  <Accordion title="What if Biscuit builds something different from what I described?">
    Don't restart. Use chat to correct it ("the homepage should show a list, not a grid", "remove the search bar"). Each correction goes into the project history.
  </Accordion>

  <Accordion title="What if I can't find a feature I want?">
    Open chat and prompt for it. If the feature exists in Biscuit (payments, emails, workflows, custom domains, file uploads), Biscuit configures it. If it doesn't, Biscuit tells you.
  </Accordion>

  <Accordion title="Why isn't my custom domain connecting?">
    DNS usually propagates within minutes, but can take up to 48 hours. Check that the records at your domain provider match what Biscuit shows on the publish screen. If they do, give it time.
  </Accordion>
</AccordionGroup>

## Up next

<Columns cols={3}>
  <Card title="Working with Data" href="/data" icon="database">
    Every Biscuit app has a built-in database.
  </Card>

  <Card title="Setting up payments" href="/payments" icon="credit-card">
    Take real payments from real customers.
  </Card>

  <Card title="Connecting external APIs" href="/apis" icon="plug">
    Pull live data from any service.
  </Card>
</Columns>
