ADR - 01

Escolha de TypeScript para Front-end e Back-end

Status

Aceita

Contexto

O projeto Integralizei UnB envolve desenvolvimento de SPA (Single-Page Application) para front-end e lógica de backend integrando APIs externas e banco de dados.

Duas opções principais foram consideradas para a linguagem de desenvolvimento:

  1. Python: excelente para prototipagem, processamento de dados e integrações rápidas.
  2. TypeScript (com Next.js e Node.js): oferece tipagem estática, unificação de front-end e back-end e forte suporte para aplicações web modernas.

Decisão

Optamos por TypeScript para todo o projeto, tanto no front-end quanto no back-end. As mudanças necessárias de linguagem serão aplicadas futuramente.

Motivos:

  • Unificação da stack: front-end e back-end usam a mesma linguagem, facilitando manutenção e aprendizado da equipe.
  • Tipagem estática: reduz bugs comuns relacionados a tipos de dados, aumentando confiabilidade e segurança do código.
  • Integração com Next.js: permite desenvolvimento de SPA com SSR (Server-Side Rendering), simplificando roteamento e otimização de performance.
  • Produtividade e manutenibilidade: maior consistência no código, refatoração segura e melhor suporte a IDEs.

Consequências

  • Prós:

    • Código mais consistente e seguro.
    • Maior produtividade da equipe e facilidade para novos membros.
    • Melhor integração com ferramentas web modernas (Next.js, React, Zustand).
  • Contras:

    • Menor familiaridade da equipe com TypeScript em relação a Python.
    • Algumas bibliotecas de processamento de dados mais avançadas podem estar mais maduras em Python.

Notas

A escolha do TypeScript reflete uma prioridade de unificação da stack, produtividade e manutenção de longo prazo, mesmo que sacrifiquemos algumas facilidades do Python em análise de dados.