Skip to content

Commit 958c5de

Browse files
committed
Setup Supabase locally and Github Actions
1 parent 6dca56d commit 958c5de

File tree

5 files changed

+232
-0
lines changed

5 files changed

+232
-0
lines changed

.github/workflows/ci.yaml

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
name: CI
2+
3+
on:
4+
pull_request:
5+
workflow_dispatch:
6+
7+
jobs:
8+
test:
9+
runs-on: ubuntu-latest
10+
11+
steps:
12+
- uses: actions/checkout@v3
13+
14+
- uses: supabase/setup-cli@v1
15+
with:
16+
version: latest
17+
18+
- name: Start Supabase local development setup
19+
run: supabase start
20+
21+
- name: Verify generated types are checked in
22+
run: |
23+
supabase gen types typescript --local > types.gen.ts
24+
if ! git diff --ignore-space-at-eol --exit-code --quiet types.gen.ts; then
25+
echo "Detected uncommitted changes after build. See status below:"
26+
git diff
27+
exit 1
28+
fi

.github/workflows/production.yaml

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
name: Deploy Migrations to Production
2+
3+
on:
4+
push:
5+
branches:
6+
- main
7+
workflow_dispatch:
8+
9+
jobs:
10+
deploy:
11+
runs-on: ubuntu-latest
12+
13+
env:
14+
SUPABASE_ACCESS_TOKEN: ${{ secrets.SUPABASE_ACCESS_TOKEN }}
15+
SUPABASE_DB_PASSWORD: ${{ secrets.PRODUCTION_DB_PASSWORD }}
16+
SUPABASE_PROJECT_ID: ${{ secrets.PRODUCTION_PROJECT_ID }}
17+
18+
steps:
19+
- uses: actions/checkout@v3
20+
21+
- uses: supabase/setup-cli@v1
22+
with:
23+
version: latest
24+
25+
- run: supabase link --project-ref $SUPABASE_PROJECT_ID
26+
- run: supabase db push

supabase/.gitignore

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
# Supabase
2+
.branches
3+
.temp
4+
.env

supabase/config.toml

Lines changed: 174 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,174 @@
1+
# A string used to distinguish different Supabase projects on the same host. Defaults to the
2+
# working directory name when running `supabase init`.
3+
project_id = "Demospace"
4+
5+
[api]
6+
enabled = true
7+
# Port to use for the API URL.
8+
port = 54321
9+
# Schemas to expose in your API. Tables, views and stored procedures in this schema will get API
10+
# endpoints. `public` is always included.
11+
schemas = ["public", "graphql_public"]
12+
# Extra schemas to add to the search_path of every request. `public` is always included.
13+
extra_search_path = ["public", "extensions"]
14+
# The maximum number of rows returns from a view, table, or stored procedure. Limits payload size
15+
# for accidental or malicious requests.
16+
max_rows = 1000
17+
18+
[db]
19+
# Port to use for the local database URL.
20+
port = 54322
21+
# Port used by db diff command to initialize the shadow database.
22+
shadow_port = 54320
23+
# The database major version to use. This has to be the same as your remote database's. Run `SHOW
24+
# server_version;` on the remote database to check.
25+
major_version = 15
26+
27+
[db.pooler]
28+
enabled = false
29+
# Port to use for the local connection pooler.
30+
port = 54329
31+
# Specifies when a server connection can be reused by other clients.
32+
# Configure one of the supported pooler modes: `transaction`, `session`.
33+
pool_mode = "transaction"
34+
# How many server connections to allow per user/database pair.
35+
default_pool_size = 20
36+
# Maximum number of client connections allowed.
37+
max_client_conn = 100
38+
39+
[realtime]
40+
enabled = true
41+
# Bind realtime via either IPv4 or IPv6. (default: IPv4)
42+
# ip_version = "IPv6"
43+
# The maximum length in bytes of HTTP request headers. (default: 4096)
44+
# max_header_length = 4096
45+
46+
[studio]
47+
enabled = true
48+
# Port to use for Supabase Studio.
49+
port = 54323
50+
# External URL of the API server that frontend connects to.
51+
api_url = "http://127.0.0.1"
52+
# OpenAI API Key to use for Supabase AI in the Supabase Studio.
53+
openai_api_key = "env(OPENAI_API_KEY)"
54+
55+
# Email testing server. Emails sent with the local dev setup are not actually sent - rather, they
56+
# are monitored, and you can view the emails that would have been sent from the web interface.
57+
[inbucket]
58+
enabled = true
59+
# Port to use for the email testing server web interface.
60+
port = 54324
61+
# Uncomment to expose additional ports for testing user applications that send emails.
62+
# smtp_port = 54325
63+
# pop3_port = 54326
64+
65+
[storage]
66+
enabled = true
67+
# The maximum file size allowed (e.g. "5MB", "500KB").
68+
file_size_limit = "50MiB"
69+
70+
[storage.image_transformation]
71+
enabled = true
72+
73+
[auth]
74+
enabled = true
75+
# The base URL of your website. Used as an allow-list for redirects and for constructing URLs used
76+
# in emails.
77+
site_url = "http://127.0.0.1:3000"
78+
# A list of *exact* URLs that auth providers are permitted to redirect to post authentication.
79+
additional_redirect_urls = ["https://127.0.0.1:3000"]
80+
# How long tokens are valid for, in seconds. Defaults to 3600 (1 hour), maximum 604,800 (1 week).
81+
jwt_expiry = 3600
82+
# If disabled, the refresh token will never expire.
83+
enable_refresh_token_rotation = true
84+
# Allows refresh tokens to be reused after expiry, up to the specified interval in seconds.
85+
# Requires enable_refresh_token_rotation = true.
86+
refresh_token_reuse_interval = 10
87+
# Allow/disallow new user signups to your project.
88+
enable_signup = true
89+
# Allow/disallow anonymous sign-ins to your project.
90+
enable_anonymous_sign_ins = false
91+
# Allow/disallow testing manual linking of accounts
92+
enable_manual_linking = false
93+
94+
[auth.email]
95+
# Allow/disallow new user signups via email to your project.
96+
enable_signup = true
97+
# If enabled, a user will be required to confirm any email change on both the old, and new email
98+
# addresses. If disabled, only the new email is required to confirm.
99+
double_confirm_changes = true
100+
# If enabled, users need to confirm their email address before signing in.
101+
enable_confirmations = false
102+
# Controls the minimum amount of time that must pass before sending another signup confirmation or password reset email.
103+
max_frequency = "1s"
104+
105+
# Uncomment to customize email template
106+
# [auth.email.template.invite]
107+
# subject = "You have been invited"
108+
# content_path = "./supabase/templates/invite.html"
109+
110+
[auth.sms]
111+
# Allow/disallow new user signups via SMS to your project.
112+
enable_signup = true
113+
# If enabled, users need to confirm their phone number before signing in.
114+
enable_confirmations = false
115+
# Template for sending OTP to users
116+
template = "Your code is {{ .Code }} ."
117+
# Controls the minimum amount of time that must pass before sending another sms otp.
118+
max_frequency = "5s"
119+
120+
# Use pre-defined map of phone number to OTP for testing.
121+
# [auth.sms.test_otp]
122+
# 4152127777 = "123456"
123+
124+
# This hook runs before a token is issued and allows you to add additional claims based on the authentication method used.
125+
# [auth.hook.custom_access_token]
126+
# enabled = true
127+
# uri = "pg-functions://<database>/<schema>/<hook_name>"
128+
129+
# Configure one of the supported SMS providers: `twilio`, `twilio_verify`, `messagebird`, `textlocal`, `vonage`.
130+
[auth.sms.twilio]
131+
enabled = false
132+
account_sid = ""
133+
message_service_sid = ""
134+
# DO NOT commit your Twilio auth token to git. Use environment variable substitution instead:
135+
auth_token = "env(SUPABASE_AUTH_SMS_TWILIO_AUTH_TOKEN)"
136+
137+
# Use an external OAuth provider. The full list of providers are: `apple`, `azure`, `bitbucket`,
138+
# `discord`, `facebook`, `github`, `gitlab`, `google`, `keycloak`, `linkedin_oidc`, `notion`, `twitch`,
139+
# `twitter`, `slack`, `spotify`, `workos`, `zoom`.
140+
[auth.external.apple]
141+
enabled = false
142+
client_id = ""
143+
# DO NOT commit your OAuth provider secret to git. Use environment variable substitution instead:
144+
secret = "env(SUPABASE_AUTH_EXTERNAL_APPLE_SECRET)"
145+
# Overrides the default auth redirectUrl.
146+
redirect_uri = ""
147+
# Overrides the default auth provider URL. Used to support self-hosted gitlab, single-tenant Azure,
148+
# or any other third-party OIDC providers.
149+
url = ""
150+
# If enabled, the nonce check will be skipped. Required for local sign in with Google auth.
151+
skip_nonce_check = false
152+
153+
[edge_runtime]
154+
enabled = true
155+
156+
[analytics]
157+
enabled = false
158+
port = 54327
159+
vector_port = 54328
160+
# Configure one of the supported backends: `postgres`, `bigquery`.
161+
backend = "postgres"
162+
163+
# Experimental features may be deprecated any time
164+
[experimental]
165+
# Configures Postgres storage engine to use OrioleDB (S3)
166+
orioledb_version = ""
167+
# Configures S3 bucket URL, eg. <bucket_name>.s3-<region>.amazonaws.com
168+
s3_host = "env(S3_HOST)"
169+
# Configures S3 bucket region, eg. us-east-1
170+
s3_region = "env(S3_REGION)"
171+
# Configures AWS_ACCESS_KEY_ID for S3 bucket
172+
s3_access_key = "env(S3_ACCESS_KEY)"
173+
# Configures AWS_SECRET_ACCESS_KEY for S3 bucket
174+
s3_secret_key = "env(S3_SECRET_KEY)"

supabase/seed.sql

Whitespace-only changes.

0 commit comments

Comments
 (0)