Skip to content

Thiago-Tertuliano/Estudos-JavaScript

Repository files navigation

JavaScript & TypeScript — Estudos

Repositório de projetos e exercícios evoluindo de conceitos básicos até arquiteturas distribuídas.

JavaScript TypeScript Node.js Express


Índice


Estrutura do repositório

Pasta Tipo Arquitetura / Padrão Descrição
JavaScript_Basico Exercícios HTML/JS básico 8 aulas: variáveis, funções, DOM, eventos, condicionais, loops
JavaScript_Intermediario Exercícios HTML/JS intermediário 8 aulas: objetos, arrays avançados, localStorage, módulos ES6
JavaScript_Avancado Exercícios JS avançado + módulos 15 aulas: promises, classes, prototypes, CRUD, async
Curso_TypeScript Estudo TypeScript 5 aulas + projeto: tipos, generics, classes, decorators
Curso_API_REST_Express API Express monolítico Primeiro CRUD com Express + SQLite + Swagger
Curso_API_REST_RepositoryPattern API Express + Repository + Service Layer CRUD com separação de camadas
Projetos/E-Commerce API Monolith + Service Layer + JWT E-commerce com produtos, categorias, pedidos
Projetos/School-Management API multi-pacote Clean Architecture + CQRS Domain / Application / Infrastructure / API
Projetos/TaskFlow API DDD + CQRS + WebSocket Task management com Socket.io e eventos
Projetos/ReservEasy API Vertical Slices Reservas com features isoladas
Projetos/Notifica Sistema distribuído Multi-host + Mensageria API + Worker + WS Consumer + Redis
Projetos/FinControl API Monolith + JWT + Docker Controle financeiro com PostgreSQL
Projetos/Restaurant-System API Monolith + Service Layer Gestão de restaurante (JS + TS)

Arquitetura por pasta

JavaScript_Basico / JavaScript_Intermediario — scripts educacionais
Aulas/
├── README.md          → índice
├── Aula_N.md          → teoria
Exercicios/
├── README.md
└── Exercicio_N/       → arquivos .html / .js
  • Padrão: scripts educacionais em HTML/JS.
  • Conceitos: sintaxe JS, DOM, eventos, funções, arrays, objetos, localStorage.
JavaScript_Avancado — módulos e projetos
Modulo_N/
├── Aula_N.md          → teoria
Exercicios/
├── README.md
└── Modulo_N/
    └── Aula_N/        → exercicios.js
  • Padrão: módulos por área de conhecimento.
  • Conceitos: promises, async/await, classes, prototypes, CRUD, padrões de design.
Curso_TypeScript — tipagem e produtividade
Aula_N/
├── README.md          → teoria + exemplos
└── Exercicios/
    └── exercicio.ts
  • Padrão: aulas progressivas com TypeScript puro.
  • Conceitos: tipos primitivos, generics, interfaces, classes, decorators, utility types.
Curso_API_REST_Express — Express monolítico
Routes → Controllers → SQLite via better-sqlite3
  • Padrão: Express monolítico sem camadas.
  • Entidades: Produto (CRUD básico).
Curso_API_REST_RepositoryPattern — Repository Pattern + Service Layer
Routes → Service (regras) → Repository → SQLite
  • Padrão: Express + Repository Pattern + Service Layer.
  • Entidades: Author, Book.
Projetos/E-Commerce — API completa com Controllers
Controllers → Service → Repository → SQLite
  • Padrão: API tradicional com Controllers.
  • Entidades: Product, Category, Order, OrderItem.
Projetos/School-Management — Clean Architecture + CQRS
API (Controllers)
    ↓
Application (Commands / Queries / Handlers)
    ↓ interfaces
Domain (Entities)
    ↓ implementação
Infrastructure (DbContext, Migrations)
  • Padrão: Clean Architecture + CQRS.
  • Pacotes: domain, application, infrastructure, api.
  • Entidades: Student, Course, Enrollment.
Projetos/TaskFlow — DDD + CQRS + WebSocket
API → Application (CQRS) → Domain → Infrastructure
                              ↕
                         Socket.io (tempo real)
  • Padrão: Domain-Driven Design + CQRS + WebSocket (Socket.io).
  • Entidades: Board, Task, User, Workspace, Comment, Tag.
Projetos/ReservEasy — Vertical Slices
Features/                    ← Vertical Slices
├── Properties/
├── Guests/
├── Bookings/
└── Payments/
    ├── *Controller.js
    ├── *Service.js
    └── *Validator.js

Domain/   → Entities, Enums
Data/     → DbContext
Common/   → Middleware, Errors
  • Padrão: Vertical Slice Architecture.
  • Entidades: Property, Guest, Booking, Payment.
Projetos/Notifica — Multi-host distribuído
packages/
├── domain           → Entities, Interfaces
├── application      → Services, DTOs
├── infrastructure   → Redis, RabbitMQ, Repositories
apps/
├── api              → REST + WebSocket
├── worker           → Consumer de filas
└── ws-consumer      → WebSocket consumer dedicado
  • Padrão: Multi-host distribuído (monorepo).
  • Infra: Redis, RabbitMQ via docker-compose.yml.
Projetos/FinControl — Monolith + JWT + Docker
Controllers → AuthService / ExpenseService → AppDbContext → PostgreSQL
  • Padrão: monolito com Service Layer + JWT + Health Checks.
  • Testes: FinControl.Tests (Jest).
  • Deploy: Dockerfile + docker-compose.
Projetos/Restaurant-System — Monolith com 9 entidades
Controllers → AuthService / TableService / MenuService / OrderService / PaymentService / ReservationService → AppDbContext → SQLite
  • Padrão: monolito com Service Layer + JWT.
  • Linguagens: versão JS + versão TS para comparação.
  • Entidades: 9 (User, Table, Category, MenuItem, Order, OrderItem, Payment, PaymentMethod, Reservation).

Projetos

# Projeto Arquitetura Entidades Destaque
1 Curso_API_REST_Express Express monolítico Produto Primeiro contato com Express + SQLite
2 Curso_API_REST_RepositoryPattern Express + Repository + Service Author, Book Repository Pattern, Service Layer
3 E-Commerce Monolith + Service Layer Product, Category, Order, OrderItem Controllers, enums, estoque
4 School-Management Clean Architecture + CQRS Student, Course, Enrollment Multi-pacote, CQRS
5 TaskFlow DDD + CQRS + WebSocket Board, Task, User, Workspace Socket.io em tempo real
6 ReservEasy Vertical Slices Property, Guest, Booking, Payment Features isoladas
7 Notifica Multi-host + Mensageria User, Notification, Message Redis, RabbitMQ, Worker
8 FinControl Monolith + JWT + Docker User, Expense PostgreSQL, Docker, testes
9 Restaurant-System Monolith + Service Layer User, Table, MenuItem, Order, Payment, Reservation 9 entidades, JS + TS

Roadmap de conceitos

HTML/JS Básico
  → JS Intermediário (objetos, arrays, localStorage)
    → JS Avançado (promises, classes, padrões)
      → TypeScript (tipos, generics, decorators)
        → Express API básica
          → Repository Pattern + Service Layer
            → Monolith + Controllers
              → Clean Architecture + CQRS
                → DDD + WebSocket
                  → Vertical Slices
                    → Sistema distribuído (API + Worker + Mensageria)

Cada projeto adiciona uma camada nova em relação ao anterior, evoluindo de exercícios simples até arquiteturas modulares e orientadas a eventos.


Comandos

Ambiente

node --version
npm --version
npx ts-node --version   # TypeScript

Ciclo de vida (qualquer projeto)

npm install
npm run dev             # nodemon / ts-node-dev
npm start
npm test

TypeScript

npx tsc --init
npx tsc --noEmit        # type checking sem gerar JS
npx ts-node src/index.ts

Criar projetos

npm init -y
npm install express better-sqlite3
npm install -D typescript @types/node @types/express

Testes

npm test
npm run test:watch
npx jest --coverage

Docker

docker compose up -d
docker compose down

Como rodar cada projeto

Exercícios — JavaScript_Basico / JavaScript_Intermediario

Os exercícios são arquivos .html ou .js isolados. Para executar:

# HTML: abrir no navegador
start Exercicios/Exercicio_1_Primeiros_Testes/index.html

# JS: executar com Node
node Exercicios/Aula_1_Objetos/exercicio.js
JavaScript_Avancado
cd JavaScript_Avancado
node Exercicios/Modulo_1/Aula_1_Promises_Async_Await/exercicio.js
Curso_TypeScript
cd Curso_TypeScript
npx ts-node Aula_1_Fundamentos/Exercicios/exercicio.ts
Curso_API_REST_Express
cd Curso_API_REST_Express
npm install
npm run dev
# Swagger: http://localhost:3000/api-docs
Curso_API_REST_RepositoryPattern
cd Curso_API_REST_RepositoryPattern
npm install
npm run dev
E-Commerce
cd Projetos/E-Commerce
npm install
npm run dev
School-Management
cd Projetos/School-Management
npm install
npm run dev --workspace=api
TaskFlow
cd Projetos/TaskFlow
npm install
npm run dev
ReservEasy
cd Projetos/ReservEasy
npm install
npm run dev
Notifica — requer Docker
cd Projetos/Notifica
docker compose up -d          # Redis, RabbitMQ

npm run dev --workspace=apps/api
npm run dev --workspace=apps/worker
npm run dev --workspace=apps/ws-consumer
FinControl
cd Projetos/FinControl
npm install

# Com Docker (PostgreSQL incluso)
docker compose up --build

# Ou sem Docker (SQLite)
npm run dev
Restaurant-System
cd Projetos/Restaurant-System

# Versão JavaScript
cd rest-system-js
npm install
npm run dev

# Versão TypeScript
cd rest-system-ts
npm install
npm run dev

Referências

Documentação Link
JavaScript (MDN) developer.mozilla.org/pt-BR/docs/Web/JavaScript
TypeScript www.typescriptlang.org/docs/
Node.js nodejs.org/docs/latest/api/
Express expressjs.com/
better-sqlite3 github.com/WiseLibs/better-sqlite3

Evoluindo de console.log até sistemas distribuídos com filas, WebSockets e containers.

About

Um repositório dedicado ao aprendizado e prática de JavaScript, com exercícios e projetos para explorar programação front-end e interatividade web. Focado em conceitos fundamentais e desenvolvimento de aplicações dinâmicas.

Topics

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

No releases published

Packages

 
 
 

Contributors