Pular para o conteúdo principal

Programação Web e Mobile

Sobre esta Disciplina

Uma aplicação moderna raramente é um programa só: é um serviço que expõe dados e regras de negócio, consumido por vários clientes — navegador, celular e, às vezes, outros serviços. Esta disciplina trata exatamente dessa divisão de trabalho: como projetar o serviço, como acessar a base de dados por trás dele e como construir clientes web e mobile que compartilham o mesmo backend.

O percurso é organizado em três frentes, integradas por um estudo de caso único desenvolvido ao longo do semestre:

  • Arquitetura de serviços — API REST com NestJS (TypeScript) e acesso a base de dados relacional.
  • Frontend web — interface com React e Next.js.
  • Mobile multiplataforma — aplicativo em Flutter (Dart), consumindo o mesmo backend.

O fio condutor é a ideia de multiplataforma: um único conjunto de serviços, contratos de API bem definidos e clientes distintos construídos sobre eles.

Este material é apoio ao estudo

O conteúdo publicado aqui complementa as aulas presenciais e não substitui o plano de ensino oficial da disciplina. A bibliografia oficial, o enunciado do estudo de caso, prazos e critérios de avaliação estão no Moodle, que é o canal oficial da disciplina.


Ementa

Introdução ao desenvolvimento de aplicativos web e mobile. Características, arquiteturas, linguagens e frameworks para desenvolvimento de aplicativos multiplataforma. Arquitetura de serviços e acesso a conteúdos em bases de dados. Implementação de aplicativos baseados em estudo de caso.


Conteúdo Programático

  • Características das aplicações web e mobile: modelo cliente-servidor, HTTP, ciclo de vida e restrições de cada plataforma
  • Estratégias de desenvolvimento mobile: nativo, híbrido, cross-platform compilado e web app
  • Arquiteturas de aplicações multiplataforma: separação backend/frontend, contratos de API e compartilhamento de código
  • Linguagens e ecossistemas: TypeScript no backend e no frontend web, Dart no mobile
  • Arquitetura de serviços: API REST, modularização, injeção de dependência, validação e tratamento de erros
  • Acesso a conteúdos em bases de dados: modelagem, ORM, migrações e consultas
  • Autenticação, autorização e proteção de rotas em clientes web e mobile
  • Interface web com React e Next.js: componentes, estado, roteamento e estratégias de renderização
  • Aplicativos mobile com Flutter: widgets, navegação, gerência de estado, consumo de serviços e recursos do dispositivo
  • Qualidade e entrega: testes automatizados, containers e publicação
  • Implementação de um estudo de caso integrando backend, web e mobile

Aulas

A grade abaixo é o mapa do semestre. As páginas são publicadas incrementalmente — as aulas marcadas como em construção ainda não têm material próprio no site e são conduzidas em aula.

Módulo 1 — Introdução

#AulaEmentaStatus
01Introdução ao desenvolvimento web e mobileCaracterísticas das aplicações web e mobile, modelo cliente-servidor, HTTP, front-end × back-end, o que muda no mobile (rede, bateria, ciclo de vida, distribuição por loja)✅ Disponível
02Arquiteturas e frameworks multiplataformaArquitetura acoplada × desacoplada; nativo × híbrido × cross-platform × web app; critérios de escolha; a arquitetura da disciplina (um serviço, dois clientes); ambiente de desenvolvimento e ferramentas✅ Disponível
03TypeScript para backend e frontendJavaScript moderno essencial, sistema de tipos, narrowing, generics, utility types, classes, parameter properties, decorators e tsconfig.json✅ Disponível

Módulo 2 — APIs REST com NestJS

#AulaEmentaStatus
04Introdução a APIs RESTO que é uma API, estilos arquiteturais, HTTP, restrições REST, recursos e URIs, verbos, códigos de status, representações JSON, erros, paginação, versionamento e OpenAPI✅ Disponível
05Introdução ao NestJSTypeScript aplicado ao backend, módulos como fronteira de visibilidade, controllers, providers, injeção de dependência e o pipeline de requisição✅ Disponível
06API REST com NestJSDTOs e class-validator, ValidationPipe global, CRUD completo, filtro de exceções, paginação e filtros, serialização de saída e OpenAPI✅ Disponível
07Acesso a bases de dadosModelagem relacional com Prisma, migrações, PrismaService, consultas com include/select, problema N+1, transações e seed✅ Disponível
08Autenticação e autorização no serviçoAutenticação com JWT, guards, perfis de acesso e proteção dos recursos da API🚧 Em construção

Módulo 3 — Frontend com Next.js

#AulaEmentaStatus
09Fundamentos de ReactComponentes, props, estado, hooks e composição de interface🚧 Em construção
10Next.js: roteamento e renderizaçãoApp Router, layouts, componentes de servidor e de cliente, estratégias de renderização e quando usar cada uma🚧 Em construção
11Consumo de serviços no frontendChamadas à API, estados de carregamento e erro, formulários, validação e cache de dados🚧 Em construção
12Sessão, rotas protegidas e publicaçãoLogin no cliente web, sessão, rotas protegidas e build/publicação da aplicação🚧 Em construção

Módulo 4 — App com Flutter

#AulaEmentaStatus
13Introdução a Dart e FlutterLinguagem Dart, árvore de widgets, layout e hot reload🚧 Em construção
14Navegação e gerência de estadoTelas e rotas, formulários e padrões de gerência de estado no Flutter🚧 Em construção
15Consumo de serviços no mobileCliente HTTP, serialização JSON, tratamento de falhas de rede e cache local🚧 Em construção
16Recursos do dispositivo e distribuiçãoAcesso a recursos nativos via plugins, permissões, build Android/iOS e distribuição🚧 Em construção

Módulo 5 — Estudo de Caso e Entrega

#AulaEmentaStatus
17Estudo de caso integradorRequisitos, arquitetura da solução, contratos de API e integração backend + web + mobile🚧 Em construção
18Qualidade, testes e entregaTestes automatizados nas três frentes, containers, observabilidade básica e publicação🚧 Em construção

Como Usar Este Material

  1. Não pule o Módulo 1: as três aulas montam a base de tudo o que vem depois — o vocabulário (01), as decisões de arquitetura (02) e a linguagem (03). A aula 03 continua útil como referência durante o semestre inteiro.
  2. Siga a ordem dos módulos: o backend vem primeiro porque os dois clientes consomem os serviços construídos nele.
  3. Construa um projeto só: cada módulo acrescenta uma camada ao mesmo estudo de caso, em vez de exemplos isolados.
  4. Compare as plataformas: ao implementar a mesma funcionalidade na web e no mobile, registre o que muda e o que se repete — é aí que o conceito de multiplataforma fica concreto.
  5. Faça os checkpoints: cada aula publicada traz exercícios curtos para verificar compreensão.
  6. Consulte o Moodle: para o enunciado do estudo de caso, prazos, entregas e avaliações.

Ambiente Sugerido

Os exemplos desta disciplina são executáveis: cada aula indica os passos mínimos para rodar o código apresentado.

FerramentaVersão sugeridaUso
Node.js22 LTS ou superiorRuntime do backend e do frontend web
npm ou pnpmversão que acompanha o NodeGerenciamento de pacotes
NestJS11.xBackend / arquitetura de serviços
Prisma ORM7.xAcesso à base de dados (exige @prisma/adapter-pg)
React19.xBiblioteca de interface web
Next.js15.x (App Router)Framework web
Flutter (com Dart)3.xAplicativo mobile
PostgreSQL16 ou superiorBase de dados do estudo de caso
Dockerversão estável atualBase de dados local e empacotamento
Android Studio / Xcodeconforme a plataforma alvoEmulador/simulador e build mobile
Confirme as versões no início do semestre

Node, NestJS, Next.js e Flutter têm ciclos de release rápidos. As versões acima são o ponto de partida; a combinação efetivamente adotada na turma é confirmada na primeira aula e no Moodle.

Documentação oficial

Referências principais, para consulta durante todo o semestre:

  • NestJS — documentação oficial
  • Prisma ORM — documentação oficial (confirme que a página se refere à versão 7)
  • React — documentação oficial
  • Next.js — documentação oficial
  • Flutter e Dart — documentação oficial
  • MDN Web Docs — referência de HTTP, HTML, CSS e JavaScript

Pré-Requisitos

  • Algoritmos e Programação — lógica, estruturas de dados e programação (obrigatório)
  • Programação orientada a objetos em alguma linguagem (Java, C#, Python ou similar)
  • Noções de banco de dados relacional e SQL
  • Familiaridade com Git e linha de comando
Já cursou Programação Web Java?

Se você cursou Programação Web Java, muito do que aprendeu transfere direto: injeção de dependência, API REST, mapeamento objeto-relacional e validação reaparecem aqui, com outra stack. Vale comparar as duas abordagens — o padrão é o mesmo, a sintaxe e o ecossistema mudam.