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:
- Python: excelente para prototipagem, processamento de dados e integrações rápidas.
- 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.