Esta aplicação foi desenvolvida com base no projeto "Projeto Next.js 13 Completo com IA Supabase Shadcn-ui". O objetivo deste projeto é criar uma aplicação para a restauração de fotos antigas utilizando IA
O vídeo completo do projeto pode ser encontrado aqui.
Siga as instruções abaixo para instalar todas as dependências necessárias:
- Execute o seguinte comando para instalar as dependências:
pnpm i
- Renomeie o arquivo
env.example
para.env
e substitua as credenciais do Supabase e Replicate pelos seus próprios valores.
- No supabase > store crie um bucket chamado
images
e crie policies de insert, select, update e delete com a seguinte police((bucket_id = 'images'::text) AND ((auth.uid())::text = (storage.foldername(name))[1]))
isso vai permitir que o usuário logado consiga apenas criar imagens dentro da pasta com seu id.
A seguir estão as melhorias que realizei no projeto:
- Separação das imagens por usuário logado, tornando assim a aplicação multi tenancy.
- Criação de uma pasta para cada usuário no Supabase, com políticas de permissão apenas à pasta do usuário logado.
- Polling imagem from replicate alterado para o lado do cliente. Aguardar a imagem restaurada ficar pronta pelo lado do servidor não funcionava na vercel quando a resposta demorava mais de 10 segundos; Agora ocorre do lado do cliente corrigindo esse problema
- Lista imagens originais e restauradas lado a lado
- Nova opção de abrir imagem.
- Nova opção de excluir imagem.
- Adicionado toast do shadcn/ui para as mensagens de alerta.
downloadImage.ts
openImage.ts
getBlobFromImage.ts
- busca o blob de uma imagem sem usar o Supabase.getPathFileStorage.ts
- busca o diretório no storage em uma única função em todo o sistemaconstants.ts
- simplifica o uso das variáveis de ambiente.
deleteFileStoreClient.ts
getFileStorageClient.ts
listAllStorageServer.ts
uploadFileStorageClient.ts
getSessionAuthServer.ts
Criado um provider AuthProvider
para persistir o acesso ao código do usuário em toda a aplicação.
Foi adicionado suporte para os temas Dark, Light e System.
Aplicado responsavidade do menu principal do app com toggle para abrir ou fechar o mene;