O Podcast Manager é uma aplicação backend desenvolvida em Node.js com TypeScript. Seu objetivo é organizar e gerenciar episódios de podcasts em vídeo por meio de uma API REST simples e escalável.
A API disponibiliza endpoints para:
-
Listar episódios em diferentes categorias
-
Filtrar episódios pelo nome do podcast
O projeto foi desenvolvido durante o bootcamp da DIO em parceria com a Meutudo.
-
Node.js - ambiente de execução de JavaScript no servidor
-
TypeScript - superset do JavaScript com tipagem estática
-
TSX - ferramenta para rodar arquivos TypeScript diretamente
-
Tsup - empacotador (bundler) para construir o projeto
-
@types/node - definições de tipos para Node.js
projeto-gerenciador-de-podcasts/
│
├── docs/
│ └── arch/ # diagramas e documentação (TL Draw + app.md)
│
├── src/
│ ├── controllers/ # lógica das rotas e gerenciamento request/response
│ ├── models/ # definições de tipos e modelos de dados
│ ├── repositories/ # camada de acesso a dados (JSON)
│ ├── routes/ # definições das rotas da API
│ ├── services/ # regras de negócio e funcionalidades principais
│ ├── utils/ # funções utilitárias e enums (HTTP methods, status code, content types)
│ ├── app.ts # arquivo principal com lógica de roteamento da API
│ └── server.ts # inicia o servidor HTTP
│
├── .env # variáveis de ambiente
├── tsconfig.json # configuração do TypeScript
├── package.json # dependências e scripts do projeto
└── README.md # documentação do projeto
-
Listar episódios de podcasts por categoria
-
Filtrar episódios pelo nome do podcast
-
Método: GET
-
URL: /api/list
-
Descrição: Retorna todos os episódios de podcasts
-
Exemplo de resposta:
[
{
"podcastName": "NÃO IMPORTA | Porta dos Fundos",
"episode": "ANIVERSÁRIO, TEXTÃO E OUTRAS COISAS | NÃO IMPORTA #07",
"videoId": "Pe433N6crFc",
"categories": ["humor", "mentalidade"]
},
{
"podcastName": "Que História É Essa, Porchat? | GNT",
"episode": "FRACASSO! 3 DATES PÉSSIMOS que marcaram o programa do Porchat",
"videoId": "28lspUA5u0I",
"categories": ["humor", "date"]
}
]
-
Método: GET
-
URL: /api/podcasts?p=nome-do-podcast
-
Descrição: Retorna apenas os episódios cujo nome do podcast corresponda ao parâmetro enviado
-
Exemplo de uso: /api/podcasts?p=flow
-
Exemplo de resposta:
[
{
"podcastName": "flow",
"episode": "Flow Podcast #123 - Felipão",
"videoId": "28lspUA5u0I",
"categories": ["humor", "mentalidade"]
}
]
-
Node.js instalado na sua máquina
-
NPM ou Yarn para instalar dependências
-
Variáveis de ambiente configuradas no arquivo .env (como a porta do servidor)
1️⃣ Clonar o repositório
git clone https://github.com/EmillyAndradeDev/nodejs-typescript-webapi-without-frameworks
cd projeto-gerenciador-de-podcasts
2️⃣ Instalar dependências
npm install
# ou
yarn install
3️⃣ Rodar em modo de desenvolvimento
npm run start:dev
- Executa o projeto com TSX, usando o TypeScript diretamente
4️⃣ Rodar com watch mode (reinício automático ao salvar)
npm run star:watch
5️⃣ Gerar build com Tsup
npm run dist
6️⃣ Rodar build gerado
npm run star:dist
-
O servidor irá iniciar na porta configurada no .env
-
A API estará disponível nos endpoints /api/list e /api/podcasts?p=nome-do-podcast