Skip to content

jfilipedias/book-wise

Repository files navigation

BookWise

Autor Licença

O BookWise é uma plataforma desenvolvida com Next.js para avaliações de livros onde os leitores podem avaliar os mais diversos livros. Uma vez que a aplicação realiza autenticação por meio do padrão OAuth, é possível realizar login por meio de sua conta do Google ou GitHub.

Por se tratar de uma aplicação full-stack, foi desenvolvido um back-end por meio das API routes do Next.js com uso do ORM Prisma para auxiliar na comunicação com o banco de dados SQLite.

Durante o desenvolvimento da aplicação foram adicionadas algumas funcionalidades para auxiliar na experiência de uso, como debounce para otimização das buscas. Também foi implementada a persistência dos filtros de buscas na rota da aplicação, de modo que o usuário consiga compartilhar sua pesquisa com outros. Sendo assim, até mesmo Dialogs permanecem abertas ao realizar o refresh da aplicação ou ao compartilhar sua URL.

Interface da aplicação BookWise

Getting started

Inicie instalando as dependências do projeto:

pnpm i

Para executar o projeto, é necessário configurar corretamente as variáveis de ambiente como exemplificado no arquivo .env.example. Abaixo são descritos o uso de cada variável.

O projeto utiliza o ORM Prisma e para isso é necessário estabelecer a conexão com o banco e executar as migrations:

DATABASE_URL="file:./prisma/dev.db"
npx prisma migrate dev

Para implementar a funcionalidade de agendamento, foram utilizados os serviços da Google Cloud. Para isso é necessário a configurar a permissão OAuth para obter as credenciais de ID do cliente para Aplicativo da Web. As credenciais criadas serão um ID do cliente e uma Chave secreta do cliente que devem ser utilizadas nas seguintes variáveis de ambiente:

GOOGLE_CLIENT_ID="1234-exampleclientid.apps.googleusercontent.com"
GOOGLE_CLIENT_SECRET="EXAMPLE-Secret_Key1234"

Também será necessário configurar um OAuth App nas configurações de desenvolvedor do GitHub. Após criar a aplicação OAuth, será possível obter a ID do cliente e gerar uma Chave secreta do cliente que devem ser utilizadas nas seguintes variáveis de ambiente:

GITHUB_CLIENT_ID="yourGithubClientId"
GITHUB_CLIENT_SECRET="yourGithubClientSecret"

Para realizar a autenticação com o NextAuth.js, é necessário definir um secret. Esse valor poder ser gerado por meio do comando abaixo como sugerido pela documentação:

openssl rand -base64 32

Por fim, execute o projeto em ambiente de desenvolvimento:

pnpm i

Tecnologias

Licença

Este projeto está licenciado sob o MIT. Consulte a licença para mais informações.