---
sidebar_position: 1
title: "Monorepo e Build"
---

O projeto usa um repositório único com builds separados por domínio técnico.

## Estrutura do repositório

```mermaid
graph TD
    A[plataforma-edu/] --> B[app/]
    A --> C[docs/]
    A --> D[jupyter/]
    A --> E[docker-compose.yaml]
    B --> BF[Dockerfile]
    C --> CF[Dockerfile]
    D --> DF[Dockerfile]
    E --> P[proxy Nginx]
```

- `app/`: aplicação React com atividades.
- `docs/`: documentação Docusaurus.
- `jupyter/`: instância JupyterLite.
- `docker-compose.yaml`: sobe os serviços juntos para teste local.

## Como o build funciona

O build é definido pelos Dockerfiles de cada pasta:

- `app/Dockerfile`: build da aplicação e entrega via Nginx.
- `docs/Dockerfile`: build do site de documentação e entrega via Nginx.
- `jupyter/Dockerfile`: build do site JupyterLite e entrega via Nginx.

Depois disso, `docker-compose.yaml` orquestra os serviços com um proxy Nginx de entrada única.

Referências externas:

- Dockerfile reference: https://docs.docker.com/reference/dockerfile/
- Compose specification: https://compose-spec.io/
- Nginx docs: https://nginx.org/en/docs/

## Subida local integrada

Na raiz do repositório:

```bash
docker compose up --build
```

Esse comando:

1. Constrói `app`, `docs` e `jupyter` com seus Dockerfiles.
2. Sobe os containers.
3. Conecta tudo via proxy definido em `docker-compose.yaml`.

## Quando usar Docker e quando usar modo local

```mermaid
flowchart LR
    Q{O que você precisa?} --> A[Ambiente completo
integrado]
    Q --> B[Iteração rápida
em uma frente]
    A --> C[docker compose up --build]
    B --> D[app: pnpm run dev]
    B --> E[docs: pnpm run start]
```

Use Docker quando quiser reproduzir o ambiente integrado completo.

Use modo local quando quiser iterar mais rápido em uma frente específica:

- `app`: `pnpm run dev`
- `docs`: `pnpm run start`

## Observações importantes

- A documentação técnica deve refletir sempre o fluxo acima.
- Ajustes de deploy externo não são documentados aqui; este guia cobre desenvolvimento e validação local.
