Cookest LogoCookest
Arquitetura

Guia de Repositórios

O que cada repositório no ecossistema Cookest contém, a sua pilha tecnológica e como trabalhar com ele

Guia de Repositórios

O Cookest é um projeto multi-repositório. Cada repositório é um componente independente com o seu próprio histórico Git, CI/CD e deployment. Esta página documenta o que cada repositório faz e como se interligam.

Mapa do Ecossistema

Detalhes dos Repositórios

api/ — Workspace Backend

AtributoValor
LinguagensRust 1.78+ + Python 3.10+
FrameworksActix-Web 4, SeaORM 1.1, microsserviço Python estilo FastAPI
WorkspaceWorkspace Cargo multi-crate
Serviçosapp-api, food-api, image-gen
Crate partilhadocrates/shared para erros e tipos comuns
Base de dadosPostgreSQL 15+
IAOllama + geração assíncrona de imagens

Propósito: O repositório api/ contém agora o workspace backend completo: a App API deployed, a Food API standalone, crates Rust partilhados, o monólito legado retido para referência, e o microsserviço Python de geração de imagens.

Diretórios principais:

api/
├── src/ monólito legado (não é o binário deployed)
├── crates/app-api/ App API deployed com auth, meal plans, despensa, chat IA e proxies
├── crates/food-api/ serviço standalone de catálogo de alimentos
├── crates/shared/ erros partilhados, DTOs e tipos comuns
└── image-gen/ microsserviço Python de geração de imagens

Funções dos crates/serviços:

  • crates/app-api — a API principal deployed usada por clientes mobile e web
  • crates/food-api — serviço de catálogo e navegação para receitas e ingredientes
  • crates/shared — erros reutilizáveis e tipos Rust partilhados
  • image-gen/ — serviço assíncrono de geração de imagens hero/passo para receitas
  • src/ — código do monólito legado, mantido apenas para fins de migração/referência

Início rápido:

cd api
cp .env.example .env
docker compose up --build

UI/ — Aplicação Mobile Flutter

AtributoValor
LinguagemDart 3.x
FrameworkFlutter 3.x
EstadoRiverpod 2.5
NavegaçãoGoRouter 17
HTTPDio 5.9 + gestor de cookies
DesignMaterial 3, verde-sálvia (#7A9A65)

Propósito: Cliente nativo iOS/Android para planeamento de refeições, compras, gestão de despensa e chat com IA.

Diretórios principais:

UI/lib/src/
├── core/ cliente API, autenticação, armazenamento
├── features/ Módulos de funcionalidade (auth, recipes, meal_plan, etc.)
└── shared/ Widgets reutilizáveis, tema, componentes

Início rápido:

cd UI
flutter pub get
flutter run                     # Executar em dispositivo/emulador ligado

web/ — Landing Page Next.js

AtributoValor
LinguagemTypeScript 5
FrameworkNext.js 16 (App Router)
EstilizaçãoTailwindCSS 4
AnimaçõesFramer Motion 12
i18nTranslationProvider personalizado (5 idiomas)

Propósito: Site de marketing público que apresenta as funcionalidades do Cookest, links para download da app e missão de sustentabilidade.

Componentes principais:

web/app/components/
├── Nav.tsx, Hero.tsx, Features.tsx
├── Showcase.tsx, HowItWorks.tsx
├── Sustainability.tsx, Download.tsx
├── TranslationProvider.tsx contexto i18n
└── ShaderCanvas.tsx efeitos WebGL

Início rápido:

cd web
npm install
npm run dev                     # Iniciar em localhost:3000

cookest-ad/ — Anúncios de vídeo Remotion

AtributoValor
LinguagemTypeScript 5
FrameworkRemotion
ComposiçãoComposição de anúncio de 5 cenas orientada por cursor
AutomaçãoAutomação de capturas com Puppeteer

Propósito: Gera recursos de anúncios de vídeo polidos para campanhas de marketing e promoções do Cookest.


etl/ — Pipeline de Dados Python

AtributoValor
LinguagemPython 3.10+
Base de dadospsycopg2 → PostgreSQL
APIsUSDA FoodData Central, TheMealDB
DadosMM-Food-100K (~100K receitas)

Propósito: Extrair, transformar e carregar dados de receitas e nutrição para a base de dados PostgreSQL.

Fases do pipeline:

  1. Extrair → Ler CSV + respostas de API com limitação de taxa
  2. Transformar → Normalizar ingredientes, desduplicar, converter unidades, enriquecer nutrição
  3. Carregar → Upsert em massa para PostgreSQL (idempotente)

Início rápido:

cd etl
python -m venv .venv && source .venv/bin/activate
pip install -r requirements.txt
cp .env.example .env            # Definir DATABASE_URL, USDA_API_KEY
python main.py

dataset/ — Dados de Receitas

Contém MM-Food-100K.csv — aproximadamente 100.000 registos de receitas com:

  • Nome de receita, cozinha, método de confeção
  • Listas de ingredientes (JSON)
  • Perfis nutricionais (calorias, gordura, proteína, hidratos de carbono)
  • Porções com equivalentes em gramas
  • URLs de imagens

Este CSV é consumido pelo pipeline ETL.


docs/ — Site de Documentação

AtributoValor
FrameworkNext.js 16 + Fumadocs 16.8
ConteúdoFicheiros MDX (Markdown + JSX)
IdiomasEN, PT (Tier 1) + FR, DE, ES (Tier 2)
RuntimeBun

Propósito: Documentação centralizada para todo o ecossistema. Está a lê-la agora.

Ver Arquitetura da Documentação para detalhes técnicos.


.github/ — Perfil da Organização

Contém o README do perfil da organização GitHub e os recursos apresentados na página da organização Cookest no GitHub. Repositório Git separado.

Como os Componentes se Ligam

Fluxo de Autenticação

Fluxo de Dados

Níveis de Subscrição

FuncionalidadeFreePro (€9,99/mês)Family (€14,99/mês)
Inventário + plano de refeições
Geração de plano de refeições com IA
Chat com IA10/dia
Comparação de preços
Receitas criadas pelo utilizador
Otimizador de lista de compras
Múltiplos perfis familiares

On this page