Skip to content

ammtsz/fiap-challenge-backend

Repository files navigation

FIAP - Backend Challenge

API para uma plataforma voltada a professores e alunos, onde professores podem publicar postagens visíveis para alunos e demais professores. O projeto foi desenvolvido utilizando as seguintes tecnologias em destaque:

  • NestJS: Framework para construir aplicações Node.js escaláveis e eficientes;
  • Express: Framework para construir aplicações web e APIs em Node.js;
  • TypeScript: Superconjunto de JavaScript que adiciona tipagem estática opcional;
  • JWT (JSON Web Token): Padrão para criar tokens de acesso usados na autenticação;
  • bcryptjs: Biblioteca para hashing seguro de senhas;
  • TypeORM: ORM para interagir com bancos de dados de forma orientada a objetos;
  • pg: Cliente PostgreSQL para Node.js;
  • Swagger: Ferramenta para documentar APIs RESTful;
  • Zod: Biblioteca de validação de esquemas para TypeScript;
  • Jest: Framework de testes em JavaScript;
  • Supertest: Biblioteca para testar APIs HTTP;

Inicializando o projeto

Opção 1: Docker

Esta aplicação foi transformada em um container contendo a aplicação em si e o PostgreSQL. Antes de iniciar a aplicação, é preciso criar um arquivo .env conforme sugestão em .env.example, ou conforme sugestão abaixo, que inclui a parametrização utilizada no docker compose:

POSTGRES_HOST=localhost
POSTGRES_PORT=5432
POSTGRES_USER=docker
POSTGRES_PASSWORD=docker
POSTGRES_DB=challenge
JWT_SECRET=mysecret

Instalar os pacotes necessários

$ npm install

Para iniciar a aplicação, basta executar:

$ docker compose up

Após inicialização, a aplicação estará recebendo requisições na porta 3000.

Opção 2: NestJS

Caso queira executar a aplicação apenas, os seguintes passos devem ser seguidos:

  • Criar arquivo .env seguindo o exemplo de .env.example

Subir uma instância ou ter o banco de dados PostgreSQL rodando localmente

Se desejar, pode utilizar o docker compose também. Sugerimos o uso do container docker db pois na inicialização ele já implementa o script init.sql que cria as tabelas necessárias para a aplicação e adiciona alguns registros de exemplo.

$ docker compose up db

Instalar os pacotes necessários

$ npm install

Inicializar a aplicação

# development
$ npm run start

# watch mode
$ npm run start:dev

Testes

Para rodar os testes unitários, testes end to end e cobertura de testes, basta rodar os respectivos comandos:

# unit tests
$ npm run test

# e2e tests
$ npm run test:e2e

# test coverage
$ npm run test:cov

Documentação

Documentação completa no Notion

Swagger

http://localhost:3000/swagger-ui#/

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 4

  •  
  •  
  •  
  •