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.
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
- Axios
- date-fns
- ESLint
- Next.js
- NextAuth.js
- Nookies
- Prisma
- React Hook Form
- ReactJS
- SQLite
- Stitches
- TanStack Query
- Typescript
- Zod
Este projeto está licenciado sob o MIT. Consulte a licença para mais informações.