Qual é melhor maneira de fazer um sistema de login e autenticação usando Typescript, React e Next?

Estou fazendo um projeto web (Sou iniciante, é mais pra treinar mesmo) e gostaria de incluir um sistema de logins para que o usuário tenha a sua própria conta e tal. O site tá rodando em Next, com isso em mente qual tecnologia vocês diriam que é melhor usar? Existe uma forma de deixar o banco de dados ligado em algum servidor gratuitamente?

Sem querer ser chato mas já sendo...

Melhor em que? Mais rápido? Mais seguro? Consome menos memória? Mais fácil de fazer? Mais simples de entender e manter? Algum outro critério?

Na verdade, mesmo que tivesse esses critérios bem definidos, ainda sim seria difícil responder de forma certeira, pois tem muita coisa que é subjetiva, depende de vários fatores (como requisitos do sistema, entre outros), além dos vieses de quem vai opinar (a tendência é a pessoa puxar sardinha pro seu lado, sugerir o que gosta mais ou só o que conhece, mas que não necessariamente será o "melhor" pra vc).


Dito isso, está cheio de hosts com planos grátis por aí, basta procurar, testar e ver qual te serve melhor. Como é para aprendizado, provavelmente o plano gratuito já deve te atender (estou chutando, já que vc não deu mais detalhes). Na verdade, primeiro tente rodar localmente, pra só depois jogar para um servidor se for o caso. Saber instalar e configurar as ferramentas também faz parte do aprendizado.

E mais importante do que tecnologia/linguagem/framework específico, é saber os conceitos. Por exemplo, como fazer hashes de senha de forma segura, entre outros.

Hoje existem vários serviços que oferecem todo o fluxo de autenticação pra vc. Ory, Auth0, NextAuth são alguns exemplos, e eles tem um free tier bom pra vc usar, já que vc disse que é pra treino.

Agora se vc quiser fazer na mão, é um processo um pouco mais complexo que envolve mais passos do que só bater no banco e verificar se o email e senha batem.

Pelo o que vc tá fazendo seu foco é frontend, então te recomendo utilizar algum desses serviços prontos, já que num projeto real muito dificilmente vai ser vc quem faz esse processo.

Existe uma forma de deixar o banco de dados ligado em algum servidor gratuitamente

Também te recomendo usar algum DBaaS pra isso... MongoDB Atlas, PlanetScale, Neon, Supabase... qualquer um desses te entrega o que tu precisa