Bem vindo ao Cinelist!
- Front: React com Typescript
- Back: Node com Typescript
- Banco de dados: PostGresSql (hospedado no supabase)
-
Pegue sua API key do TMDB
-
Crie uma organização no supabase e crie um projeto dentro dessa organização.
-
Espere o projeto ser iniciado, após isso na tela inicial clicke em connect, vá em APP Frameworks e selecione React, nessa tela pegue os dados do REACT_APP_SUPABASE_URL E REACT_APP_SUPABASE_ANON_KEY.
-
vá no SQL editor no supabase do seu projeto e rode os seguintes comandos:
create table public.users ( id uuid not null default extensions.uuid_generate_v4 (), email text not null, created_at timestamp with time zone not null default timezone ('utc'::text, now()), password text not null, username text not null, constraint users_pkey primary key (id), constraint users_email_key unique (email), constraint users_username_key unique (username) ) tablespace pg_default; create table public.favorites ( id serial not null, user_id uuid null, movie_id integer not null, title text not null, poster_path text null, constraint favorites_pkey primary key (id), constraint favorites_user_id_fkey foreign key (user_id) references users (id) on delete cascade ) tablespace pg_default; create table public.shared_favorites ( id uuid not null default extensions.uuid_generate_v4 (), user_id uuid not null, email text null, movie_ids text[] null, created_at timestamp without time zone null default now(), updated_at timestamp with time zone null default now(), username text not null, constraint shared_favorites_pkey primary key (id), constraint shared_favorites_user_id_fkey foreign key (user_id) references users (id) ) tablespace pg_default; CREATE OR REPLACE FUNCTION update_timestamp() RETURNS TRIGGER AS $$ BEGIN NEW.updated_at = now(); RETURN NEW; END; $$ LANGUAGE plpgsql; CREATE TRIGGER update_shared_favorites_timestamp BEFORE UPDATE ON shared_favorites FOR EACH ROW EXECUTE FUNCTION update_timestamp();
-
crie uma JWT_SECRET, seguindo o passo a passo:
-
Abra o terminal.
-
Execute o seguinte comando para gerar uma string aleatória de 32 caracteres:
openssl rand -base64 32
-
Copie a string gerada.
-
Abra o arquivo
.env
e defina a variávelJWT_SECRET
com a string gerada. Por exemplo:JWT_SECRET=qwertyuiopasdfghjklzxcvbnm123456
Substitua
qwertyuiopasdfghjklzxcvbnm123456
pela string gerada no passo 6. -
crie o .env do backend no caminho
/server
, como exatamente como o abaixo:TMDB_API_KEY=SUA TMDB_API_KEY SUPABASE_URL=SUA REACT_APP_SUPABASE_URL SUPABASE_KEY=SUA REACT_APP_SUPABASE_ANON_KEY JWT_SECRET=SUA JWT_SECRET PORT=5000 // não mexa nessa linha
-
crie o .env do frontend no caminho
/client
, como o abaixo:REACT_APP_API_BASE_URL='http://localhost:5000'
-
Tenha o node 22 instalado ou o LTS
-
Rode nas pastas
/client
e/server
o comando:npm install
-
Rode na pasta
/client
Espere até concluir e navegue até o locahost:port apresentado pelo terminal (normalmente port:4000):npm run start
-
Rode na pasta
/server
:npm run dev