Digital Wallet

Objetivo#

Criar uma plataforma onde os usuários possam cadastrar suas fotos e informações de relacionamento para que, no dia do aniversário de namoro, a plataforma envie automaticamente uma imagem emoldurada e personalizada com um texto apropriado.

Dica: Não existe uma forma certa ou errada de resolver o desafio! Vamos avaliar coisas como qualidade do seu código, o quão fácil é de compreender o código, organização do projeto, quantidade e qualidade dos testes, preocupação com segurança ;)

Requisitos da aplicação#

  • O usuário deve poder se cadastrar na plataforma utilizando e-mail.
  • O usuário deve poder realizar login e acessar seu perfil.
  • O usuário deve poder cadastrar informações do relacionamento, incluindo:
    • Nome do casal
    • Data do início do namoro
    • Fotos do casal
    • Mensagem personalizada (opcional)
  • O sistema deve armazenar e associar as fotos enviadas ao perfil do casal.
  • No dia do aniversário de namoro, a plataforma deve gerar automaticamente uma imagem emoldurada contendo:
    • Uma ou mais fotos do casal
    • A data do aniversário de namoro
    • Um texto comemorativo (gerado automaticamente ou informado pelo usuário)
  • A plataforma deve enviar essa imagem por e-mail.
  • A plataforma deve salvar as imagens em um banco de dados apropriado para salvar imagens.
  • O envio de e-mails deve ser automatizado.
  • A interface do usuário deve ser intuitiva e responsiva para dispositivos móveis e desktops.
    • Para dispositivos moveis, crie um app utilizando o react native.
    • Para dispositivos desktops, crie um site utilizando o nextjs.

Fluxo da Aplicação#

  1. Login/Cadastro do Usuário
    • O usuário acessa a plataforma com uma conta com e-mail.
    • Caso o usuário não esteja registrado na plataforma, a plataforma deve criar um novo cadastro para o usuário a partir do email informado.
  2. Configuração do Relacionamento
    • Insere as informações do relacionamento (nome do casal, data do início do namoro, fotos e mensagem personalizada).
  3. Armazenamento e Processamento das Informações
    • As informações são salvas no banco de dados.
    • As fotos enviadas são armazenadas de forma segura em um banco de dados apropriado para salvar imagens.
  4. Geração e Envio da Imagem Comemorativa
    • No dia do aniversário de namoro, um processo automático é ativado.
    • O sistema seleciona as fotos cadastradas e gera uma moldura personalizada.
    • Um texto comemorativo é adicionado à imagem (baseado em um template pré-definido ou na mensagem personalizada do usuário).
    • A imagem final é gerada e salva temporariamente.
  5. Envio do E-mail
    • O sistema envia a imagem por e-mail para o usuário.
    • Uma notificação de envio é registrada.

Observações#

  • Stack recomendada para a criação do projeto:
    1. Backend: php com laravel.
      • Recomendável utilizar o docker.
    2. Web: typescript com o Nexjs.
      • Publicar o projeto na cloud da vercel.
    3. Mobile: typescript com React Native.
      • Não é necessário publicar o app para apresentar o projeto.
  • Para construir o layout da aplicação tanto para web quanto para mobile, recomendo se inspirar em projetos apresentados pelo dribble ou paginas no instagram que sao focadas em apresentação de layouts