src | ||
.env.example | ||
.gitignore | ||
astro.config.mjs | ||
bun.lockb | ||
channels_rows.csv | ||
package.json | ||
README.md | ||
tsconfig.json |
Todo List
- Add loading feedback with ViewTransition API
- Revamp Design and Layout
- Anomymous Account Creation
- Email Confirmation Code
- Ability to:
- Update Data
- Avatar
- Username
- Pasword
- Delete Account
- Update Data
- Password Recovery
- Custom Error Pages from Supabase Reponse (400)
- 2FA Support
- Passwordless Login (OTP Email)
- Banners (Success and Error Messages)
Setting Up Supabase
Selfhosting
This section is optional on wheather or not you want to either use Supabase Cloud or selfhost.
Run:
# Get the code using git sparse checkout
git clone --filter=blob:none --no-checkout https://github.com/supabase/supabase
cd supabase
git sparse-checkout set --cone docker && git checkout master
# Go to the docker folder
cd docker
# Copy the fake env vars
cp .env.example .env
# Pull the latest images
docker compose pull
# Start the services (in detached mode)
docker compose up -d
Source: https://supabase.com/docs/guides/self-hosting/docker
In the .env
file that've you copied from `.env.example, you'll need to change some things to adapt it to this project.
- Change
SITE_URL
tohttp://localhost:4321
- Setup SMTP (Project was tested with Resend)
For production use, make sure to follow all instructions needed from https://supabase.com/docs/guides/self-hosting/docker.
SMTP is required for email verification, as a code is required. The end-user is not allowed to login yet until their email is verified.
Allowing Account Deletion
When an end-user wants to delete their account, they'll be directed to /api/account/delete
. This API requires that a function already exist in your Supabase project called delete_user()
.
In the SQL Editor, enter the following and click Run:
CREATE or replace function delete_user()
returns void
LANGUAGE SQL SECURITY DEFINER
AS $$
delete from auth.users where id = auth.uid();
$$;
Source: https://github.com/orgs/supabase/discussions/250#discussioncomment-5361165
Table Creation
For this project, two tables need to exist and that is both channels
and subs
.
For the channels
portion, you can import the premade CSV file made for this project.
For the subs
portion, enter the following in the SQL Editor and click Run:
create table
public.subs (
"Id" text not null,
"UserSubscribed" text not null,
"Platform" text null,
constraint subs_pkey primary key ("Id", "UserSubscribed"),
constraint subs_UserSubscribed_key unique ("UserSubscribed")
) tablespace pg_default;
Project was tested with RLS disabled on all tables