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

# Creating Postgres tables using Bracket

> How to generate a Postgres table from scratch using BRacket

## Step-by-step guide

1. Set up a Postgres database with any hosting provider. Supabase is our favorite, but you can choose anybody you like.
2. Sign into [Bracket](https://app.usebracket.com/syncs/overview)
3. Set up your primary source, and select Postgres as your secondary source.
4. Select "I want Bracket to generate the table for me," name your table (or use the suggested name), and click "Continue"

<Example>
  <img class="rounded-md w-full" src="https://mintcdn.com/bracket/1whZePpi8DloDf7s/img/postgres_bab_onboarding.gif?s=2704ca6d2f3a477364a473de884440cf" width="1108" height="720" data-path="img/postgres_bab_onboarding.gif" />
</Example>

## Some things to keep in mind

* Bracket standardizes the field names from your primary source into snake case to make your field names Postgres-friendly.
* Bracket automatically creates a primary key field called `bracket_pkey`, which takes on a UUIDv4 value.
* Bracket also automatically creates a datetime field called `bracket_updated_at`, which takes
  on the datetime at which a record is created or updated, whichever is more recent. Bracket uses
  this field to make syncing real-time when using the polling sync method.
* Finally, Bracket creates a Postgres function called `bracket_update_timestamp()`, which gets applied to `bracket_updated_at`.
