Executando verificação de segurança...
1

Deploy de aplicação em NextJS e API: Dúvida sobre como fazer!

Desenvolvi uma pequena aplicação com NextJs e uma API que troca informações com o banco de dados e com a API do mailChimp. O problema foi na hora do Deploy. Sou iniciante e nunca fiz deploy de nenhum projeto pessoal. Apenas rodava na máquina local. Esse projeto que fiz, tenho a ambição de subir para produção, fazendo o deploy, e semanalmente enviar a newsletter para os usuários registrados.
Queria saber se alguém tem dicas do que posso estudar para fazer o deploy.

PS: Fiz o deploy da aplicação em NextJs na Vercel, mas não soube subir a API a parte e fazer a comunicação da aplicação com a API que fiz.

Se alguém poder me dar um norte, seria de grande valia.

Repositório front-end: https://github.com/dopplerpng/protocolo-news-1.0
Repositório back-end: https://github.com/dopplerpng/protocolo-newsletter-server

Carregando publicação patrocinada...
2

Olhando pelo código por cima, aparentemente não há nenhum estado persistente na api em si, mas no banco de dados, no entando, percebi que você está usando o SQLite, que é um banco de dados que fica em um arquivo.

Como a vercel utiliza a arquitetura serverless, isso faz com que a sua aplicação seja recomeçada para o estado inicial toda vez que nenhuma request é enviada durante um tempo, a fim de preservar recursos computacionais.

isso faz com que qualquer estado salvo no código, ou em um arquivo (como no caso do SQLite) seja perdido quando em 30/40 minutos nenhuma request é feita à API (recomendo pesquisar sobre a arquitetura serverless).

para resolver isso, recomendo alterar o banco de dados para um MySQL ou Postgres e usar serviços de hospedagem de banco de dados como o PlanetScale (que possuí um free-tier que dá um banco MySQL gratuitamente), é possível fazer isso simplesmente mudando as configurações do prisma.

// antes
datasource db {
  provider = "sqlite"
  url      = env("DATABASE_URL")
}
// depois
datasource db {
  provider = "mysql"
  url      = env("DATABASE_URL") // mudar a URL do banco de dados para o endereço do MySQL
}

uma vez isso feito, é possível fazer deploy da sua aplicação na Vercel sem problemas, o próprio fastify tem um tópico na documentação falando sobre isso.

Caso queria continuar utilizando o SQLite, recomendo outras plataformas de deploy que não utilizam a arquitetura serverless, como o fly.io ou o render

1
1
1

Cara, é uma boa ideia. Fiquei com esse questionamento pensando em aplicações que necessitem ter essa API por fora, saca? mas, vlw! vou fazer isso msm.

2

To ligado, o Next evoluiu muito, então realmente fica confuso sobre quando juntar ou dividir, mas no teu caso, como o backend não tem muita regra de negócio, vale a pena integrar