Skip to content

newsunenergy/desafio-dev-fullstack

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

23 Commits
 
 
 
 

Repository files navigation

NewSun Energy Brazil

Processo de recrutamento

Olá dev, bem vindo ao nosso processo de recrutamento para desenvolvedor Full Stack!

Sobre a vaga

  • 100% Remoto
  • Flexibilidade no horário de trabalho

Requisitos para a vaga

Conhecimentos sólidos em:

  • Typescript (com nodejs)
  • ReactJS/NextJS
  • Estilização com tailwindCSS ou @chakra-ui
  • MySQL (utilizando algum ORM: prisma, typeORM, etc...)
  • Consumir e Servir aplicações RESTful

Desejável:

  • NestJS
  • Docker
  • Noções de Clean Architeture

Resumo

Duas telas no frontend, uma com o formulário, outra com a listagem das simulações registradas (filtros, etc).

No backend, 3 endpoints: registrar uma nova simulação, consumir em lista, consumir por id.

O Desafio:

Utilizando o seu smartphone ou desktop, João deve ser capaz de realizar uma simulação para um plano de compensação energética.
O processo é simples, João submete um formulário contendo o seu nome, email e telefone, junto a uma ou mais contas de energia (que será decodificada por nossa API interna).

Uma vez submetido o formulário, o backend tem que ser capaz de criar um novo lead contendo as informações cadastrais do author, juntamente aos dados decodificados da conta de energia.

Link para contas de energia aqui

Tip

A escolha de tecnologia é livre. O único requisito é que seja feito em Typescript e que o frontend seja feito em ReactJS ou NextJS. Pode adicionar frameworks ou bibliotecas da sua escolha!

Note

Endpoint utilizado para decodificação da conta de energia.
Sem autenticação, apenas realizar um POST com multipart/form-data
o body deve ter o campo "file" contendo a conta de energia
POST https://magic-pdf.solarium.newsun.energy/v1/magic-pdf

Content-Type: multipart/form-data
image

Caution

Não há necessidade de salvar o arquivo da conta de energia. Não será utilizado como critério de avaliação

Link para contas de energia aqui

Frontend

  • Página para submissão do formulário /simular
  • Página de consulta /listagem

Backend

  • Endpoint para registrar uma nova simulação
  • Endpoint para listar todas as simulações (com opção de filtro por nome, email, codigo da unidade consumidora etc)
  • Endpoint para listar uma simulação baseado no id do lead, etc...
  • Modelar domínio com os agregados a seguir:

Diferencial

  • Fazer validação dos dados transitados na API.
  • Configurar ambiente docker para rodar a aplicação.
export interface Lead {
  id: string
  nomeCompleto: string
  email: string 
  telefone: string
  unidades: Unidade[]
}

export interface Unidade {
  id: string
  codigoDaUnidadeConsumidora: string
  modeloFasico: 'monofasico' | 'bifasico' | 'trifasico'
  enquadramento: 'AX' | 'B1' | 'B2' | 'B3'
  historicoDeConsumoEmKWH: Consumo[]
}

export interface Consumo {
  consumoForaPontaEmKWH: number
  mesDoConsumo: Date
}

Note

DICA
image
unit_key representa codigoDaUnidadeConsumidora no nosso domínio
chargingModel representa unit.enquadramento no nosso domínio
phaseModel representa unit.modeloFasico no nosso domínio
consumo_fp representa unit.historicoDeConsumoEmKWH.consumoForaPontaEmKWH
consumo_date representa mesDoConsumo

Regras

  • O email deverá ser único por lead
  • O codigoDaUnidadeConsumidora deve ser único.
  • Um lead deve ter no mínimo 1 unidade.
  • Uma unidade deve ter exatamente o historicoDeConsumoEmKWH do Consumo dos últimos 12 meses. Em outras palavras, ${unit.historicoDeConsumoEmKWH} length tem que ser 12.
export interface SolicitarSimulacaoDeCompensacaoEnergeticaInput {
  nomeCompleto: string
  email: string
  telefone: string
  informacoesDaFatura: InformacaoDaFatura[]
}

export interface InformacaoDaFatura {
    codigoDaUnidadeConsumidora: string
    modeloFasico: string
    enquadramento: string
    mesDeReferencia: Date
    consumoEmReais: number
    historicoDeConsumoEmKWH: {
      consumoForaPontaEmKWH: number
      mesDoConsumo: Date
    }[]
}

Resumo

Duas telas no frontend, uma com o formulário, outra com a listagem das simulações registradas (filtros, etc).

No backend, 3 endpoints: registrar uma nova simulação, consumir em lista, consumir por id.

Comece

O processo do desafio deve ser:

  • Faça o fork do desafio.
  • Crie um PROJECT.md com a explicação de como devemos executar o projeto e com o máximo de detalhes possível do que foi feito.
  • Após concluir faça um pull request

Qualquer dúvida entre em contato por email. paulo.santana@newsun.energy

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published