You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
2.4 KiB
2.4 KiB
02 — Arquitetura
Stack
- Build: Vite + React + TypeScript.
- Estilos: Tailwind CSS (
@tailwindcss/vite). - Componentes: shadcn/ui (Radix + Tailwind).
- Routing/âncoras:
@tanstack/react-router(scroll suave entre secções). - Animações:
framer-motion(motion). - Ícones:
lucide-react. - Alias:
@/*→./src/*(tsconfig + vite resolve). - Solução baseada em docker.
Tipo de sistema
- Docker container para execução independente
- Utilizar nginx.conf para servir os ficheiros estáticos gerados pelo build do Vite.
Estrutura de pastas (proposta)
src/
main.tsx # bootstrap + RouterProvider
router.tsx # rootRoute + indexRoute (single page)
index.css # Tailwind + tokens (CSS vars do design system)
lib/
utils.ts # cn() (shadcn)
scroll.ts # helper de scroll suave para âncoras
data/
project.ts # conteúdo canónico (de 03-content.md), tipado
components/
ui/ # primitivos shadcn (button, card, sheet, badge, dialog...)
layout/
Header.tsx
Footer.tsx
Section.tsx # wrapper de secção (id âncora + animação in-view)
sections/
Hero.tsx
Goal.tsx # Objetivos e contributo
WorkPlan.tsx
Gantt.tsx # cronograma (inspirado em cronograma.png)
WorkPlanCard.tsx
Indicators.tsx
IndicatorCard.tsx
App.tsx # composição das secções na ordem da spec
Routing / navegação
- Single-page: uma rota
/que renderiza todas as secções em sequência. - Navegação por âncoras:
#home,#goal,#work-plan,#indicators. - Scroll suave via helper (
element.scrollIntoView({ behavior: 'smooth' })) acionado pelos itens de menu; TanStack Router para estrutura e (opcional) hash. - IDs estáveis em cada
<Section>para deep-linking.
Dados
- Sem backend. Conteúdo estático tipado em
src/data/project.ts, derivado exclusivamente de 03-content.md. - Logos dos parceiros como assets em
src/assets/partners/(placeholder se em falta).
Decisões abertas (precisam validação)
- Logos oficiais dos parceiros — não fornecidos em
input_files/; usar placeholder textual/cartão até receber ficheiros? (assumir placeholder) - Hex exatos da marca INESCC — usar paleta proposta em 01 e afinar depois.