Skip to content

Instantly share code, notes, and snippets.

@cmilfont
Last active August 17, 2022 19:39
Show Gist options
  • Star 5 You must be signed in to star a gist
  • Fork 2 You must be signed in to fork a gist
  • Save cmilfont/2a194a6759944a36a4a5b401f403ff42 to your computer and use it in GitHub Desktop.
Save cmilfont/2a194a6759944a36a4a5b401f403ff42 to your computer and use it in GitHub Desktop.
Serviço Web para geração de certificados de conclusão de curso

Serviço Web para geração de certificados de conclusão de curso

Desafio

A idéia é construir um serviço WEB que receba um modelo em HTML do certificado e os dados do aluno e gerar um arquivo PDF desse certificado.

Passo a passo

  1. Criar repositório no github para o projeto.
  2. Criar um arquivo HTML como template do certificado usando o padrão do Handlebars. As informações dinâmicas como nome do curso, data e nome do aluno serão substituídas no momento da geração do PDF. O Handlebars usa {{input}} como padrão para essa marcação.
  3. Criar um serviço em node usando Expressjs ou Fastify. Pode usar algum outro Framework se preferir.
    3.1. Criar uma rota (endpoint) que responda no endereço /certificado com o método POST do http(s).
    3.2. Criar um serviço que receba os parâmetros para a impressão do Certificado, o template HTML e devolva o arquivo gerado. Pode utilizar libs como o Handlebars que "compila" o template gerando o HTML final e o puppeteer que cria uma pagina PDF a partir do HTML.
  4. Criar uma conta no Firebase ou Heroku e fazer a publicação (deploy) do serviço.
  5. Usar uma ferramenta como o Postman para validar o serviço.

Extra

Não precisa construir código de upload do template HTML, pode publicar o arquivo em algum lugar acessível (como no Storage do Firebase) e buscar com uma lib como o axios.

@cmilfont
Copy link
Author

Exemplo de chamada com o Postman
postman

@cmilfont
Copy link
Author

Material necessário para realizar esse desafio:

  1. Protocolo HTTP
  2. Git e Github
  3. HTML e CSS
  4. Nodejs

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment