Este projeto será desenvolvido inteiramente em TypeScript, um superconjunto de JavaScript que incorpora tipos estáticos e inferência de tipos para um desenvolvimento mais robusto e organizado. JavaScript, sendo a linguagem dominante para desenvolvimento web, executa tanto em navegadores quanto em servidores, permitindo a unificação da base de código em todo o projeto.
O TypeScript enriquece o ecossistema JavaScript adicionando tipos estáticos, o que facilita o desenvolvimento de aplicações complexas e a manutenção de grandes bases de código, mantendo a flexibilidade e versatilidade do JavaScript.
O projeto adotará uma estrutura de mono-repositório, onde as interfaces visuais e as APIs de backend são desenvolvidas e mantidas juntas, mas operam de forma totalmente isolada, tanto em termos de arquivos de código quanto de runtime e infraestrutura. Serão utilizados frameworks específicos em cada parte do projeto para otimizar o desenvolvimento e garantir eficiência.
Linguagem de programação: TypeScript
- TypeScript é um superconjunto de JavaScript que adiciona tipagem estática. Isso permite um desenvolvimento mais seguro e previsível, facilitando a detecção de erros em tempo de desenvolvimento.
- Documentação oficial: TypeScript
- Materiais de estudo: TypeScript Deep Dive
Runtime: Bun.js
- Bun.js é um novo runtime JavaScript que visa proporcionar uma performance superior, compatibilidade com Node.js e suporte integrado para TypeScript.
- Documentação oficial: Bun.js
- Materiais de estudo: Introducing Bun.js
Bibliotecas: TRPC, mongoose
- TRPC permite a criação de APIs TypeScript fortemente tipadas sem a necessidade de definir manualmente tipos de interface ou validações.
- Documentação oficial: TRPC
- Materiais de estudo: Getting Started with tRPC
- Mongoose é uma biblioteca de modelagem de objetos MongoDB para Node.js, que oferece uma solução baseada em esquemas para modelar os dados da aplicação.
- Documentação oficial: mongoose
- Materiais de estudo: Mongoose Guide
Bancos de Dados: MongoDB, MySQL
- MongoDB é um banco de dados NoSQL orientado a documentos, projetado para facilidade de desenvolvimento e escalabilidade.
- Documentação oficial: MongoDB
- Materiais de estudo: MongoDB University
- MySQL é um sistema de gerenciamento de banco de dados relacional, conhecido por sua confiabilidade e ampla adoção.
- Documentação oficial: MySQL
- Materiais de estudo: MySQL Tutorial
Bibliotecas: Vue.js, Vue Use, Vuetify
- Vue.js é um framework progressivo para construir interfaces de usuário, focado em ser adaptável e integrável.
- Documentação oficial: Vue.js
- Materiais de estudo: Vue Mastery
- Vue Use é uma coleção de Composition API utilities para Vue.js, proporcionando uma série de funções reativas comuns e úteis.
- Documentação oficial: VueUse
- Materiais de estudo: VueUse Guide
- Vuetify é um framework de componentes Vue.js que segue as especificações do Material Design, oferecendo uma ampla gama de componentes UI prontos para uso.
- Documentação oficial: Vuetify
- Materiais de estudo: Vuetify Tutorial
Framework: Nuxt.js
- Nuxt.js é um framework baseado em Vue.js para criar aplicações universais, ou seja, aplicações que podem ser renderizadas tanto no cliente quanto no servidor.
- Documentação oficial: Nuxt.js
- Materiais de estudo: Nuxt.js Tutorial
Linguagem de template: Pug.js
- Pug.js (anteriormente conhecido como Jade) é uma linguagem de template de alto desempenho, que compila para HTML e oferece uma sintaxe concisa e legível. No contexto deste projeto, Pug será utilizado dentro de Single File Components (SFC) do Vue, permitindo uma escrita mais elegante e concisa dos templates.
- Documentação oficial: Pug.js
- Materiais de estudo: Pug.js Tutorial, Building componentes with Pug
Linguagem de estilo: CSS
- CSS é a linguagem usada para estilizar documentos HTML. Ela permite o controle preciso do layout de páginas web, incluindo cores, tipografia e muito mais.
- Documentação oficial: CSS
- Materiais de estudo: CSS Tutorial
À medida que o projeto evolui, mais tecnologias devem ser adotadas para atender a novas necessidades ou otimizar fluxos de trabalho existentes. É essencial manter as versões e padrões de desenvolvimento atualizados para garantir a segurança, eficiência e compatibilidade da aplicação. Continuaremos a explorar e avaliar novas ferramentas e práticas à medida que avançamos, sempre com o objetivo de melhorar a qualidade do projeto.