EventosBR é uma plataforma moderna para gerenciamento e descoberta de eventos. Este projeto foi desenvolvido como parte de um estudo prático sobre desenvolvimento de software utilizando ferramentas modernas de IA, como Lovable e as funcionalidades do Cursor, demonstrando a integração eficiente entre desenvolvimento tradicional e assistência por IA.
Link do Projeto no Lovable: https://lovable.dev/projects/6f7a3e45-e08f-4ea5-a0a2-3447e3ee93da
Para trabalhar com o código localmente, você precisará ter Node.js & npm instalados - instale usando nvm
Siga estes passos:
# Passo 1: Clone o repositório usando a URL do Git do projeto
git clone <https://github.com/rickreisdev/vivid-event-scape>
# Passo 2: Navegue até o diretório do projeto
cd <NOME_DO_PROJETO>
# Passo 3: Instale as dependências necessárias
npm i
# Passo 4: Inicie o servidor de desenvolvimento com auto-reload e preview instantâneo
npm run devEste projeto foi construído com as seguintes tecnologias e ferramentas:
- Vite
- TypeScript
- React
- shadcn-ui
- Tailwind CSS
- Supabase (Autenticação e Banco de Dados)
- Lovable (Desenvolvimento Assistido por IA)
- Cursor (IDE)
- ChatGPT
- Claude (Engenharia de Prompts)
- Crie um arquivo
.envna raiz do projeto com as seguintes variáveis:
VITE_SUPABASE_URL=sua_url_do_projeto
VITE_SUPABASE_ANON_KEY=sua_chave_anonPara obter estes valores:
- Acesse o painel do Supabase
- Navegue até Project Settings -> API
- Copie os valores de "Project URL" e "anon public" para as respectivas variáveis
No Supabase, você precisará criar duas tabelas: eventos e profiles. Execute os seguintes comandos SQL no Editor SQL do Supabase:
create table public.eventos (
id uuid not null default gen_random_uuid (),
nome text not null,
data date not null,
descricao text not null,
cidade text not null,
estado text not null,
link text null,
created_at timestamp without time zone not null default now(),
updated_at timestamp without time zone null,
user_id uuid not null default gen_random_uuid (),
constraint eventos_pkey primary key (id)
) TABLESPACE pg_default;
create trigger update_eventos_updated_at BEFORE
update on eventos for EACH row
execute FUNCTION update_updated_at_column ();create table public.profiles (
id uuid not null,
name text not null,
created_at timestamp with time zone not null default now(),
updated_at timestamp with time zone not null default now(),
constraint profiles_pkey primary key (id),
constraint profiles_id_fkey foreign KEY (id) references auth.users (id) on delete CASCADE
) TABLESPACE pg_default;
create trigger update_profiles_updated_at BEFORE
update on profiles for EACH row
execute FUNCTION update_updated_at_column ();Além da configuração do banco de dados, você também precisará configurar a autenticação no Supabase:
- No painel do Supabase, vá para Authentication → Settings
- Em Site URL, adicione:
http://localhost:5173 - Em Redirect URLs, adicione:
http://localhost:5173http://localhost:5173/auth/callback
- Clique em Save
Após criar as tabelas, configure as políticas de segurança para controlar o acesso:
Para a tabela eventos:
-- Habilitar RLS
ALTER TABLE public.eventos ENABLE ROW LEVEL SECURITY;
-- Política para permitir leitura pública
CREATE POLICY "Permitir leitura pública de eventos" ON public.eventos
FOR SELECT USING (true);
-- Política para permitir inserção apenas para usuários autenticados
CREATE POLICY "Permitir inserção para usuários autenticados" ON public.eventos
FOR INSERT WITH CHECK (auth.uid() = user_id);
-- Política para permitir atualização apenas para o criador do evento
CREATE POLICY "Permitir atualização para criador do evento" ON public.eventos
FOR UPDATE USING (auth.uid() = user_id);
-- Política para permitir exclusão apenas para o criador do evento
CREATE POLICY "Permitir exclusão para criador do evento" ON public.eventos
FOR DELETE USING (auth.uid() = user_id);Para a tabela profiles:
-- Habilitar RLS
ALTER TABLE public.profiles ENABLE ROW LEVEL SECURITY;
-- Política para permitir leitura pública
CREATE POLICY "Permitir leitura pública de perfis" ON public.profiles
FOR SELECT USING (true);
-- Política para permitir inserção apenas para o próprio usuário
CREATE POLICY "Permitir inserção para próprio usuário" ON public.profiles
FOR INSERT WITH CHECK (auth.uid() = id);
-- Política para permitir atualização apenas para o próprio usuário
CREATE POLICY "Permitir atualização para próprio usuário" ON public.profiles
FOR UPDATE USING (auth.uid() = id);Execute este SQL para criar a função que atualiza automaticamente o campo updated_at:
CREATE OR REPLACE FUNCTION update_updated_at_column()
RETURNS TRIGGER AS $$
BEGIN
NEW.updated_at = NOW();
RETURN NEW;
END;
$$ language 'plpgsql';Importante: Certifique-se de que o arquivo
.envestá listado no.gitignorepara não expor suas credenciais.