{
  "id": "arquitetura",
  "title": "Arquitetura",
  "description": "Visão de alto nível dos limites da aplicação James e de seus serviços de suporte.",
  "type": "architecture",
  "status": "observed",
  "visibility": "public",
  "tags": [
    "arquitetura",
    "laravel",
    "postgres",
    "filas"
  ],
  "related": [
    "visao-geral",
    "tecnologias",
    "autenticacao",
    "automacoes",
    "contribuicao"
  ],
  "sourceRefs": [
    "https://github.com/james-suite/james/blob/master/compose.yaml",
    "https://github.com/james-suite/james/blob/master/routes/web.php",
    "https://github.com/james-suite/james/blob/master/config/queue.php",
    "https://github.com/james-suite/james/blob/master/config/filesystems.php"
  ],
  "authors": [],
  "updated": null,
  "diagram": "james-overview",
  "body": "## Limites principais\n\nO James é uma aplicação Laravel renderizada no servidor. O navegador acessa rotas protegidas, o domínio da aplicação coordena regras de negócio e persistência, o PostgreSQL guarda os dados relacionais e os arquivos sensíveis ficam em discos privados.\n\n{{diagram:james-overview}}\n\nEm desenvolvimento, o Laravel Sail orquestra a aplicação, o PostgreSQL e o Mailpit. A fila padrão usa o banco de dados; rotinas financeiras são registradas no scheduler do Laravel e podem ser executadas continuamente em produção.\n\n## Fontes de decisão\n\nAs escolhas e seus motivos estão registradas em [Decisões arquiteturais](doc:decisoes). Para a visão de tecnologias, consulte [Stack e tecnologias](doc:tecnologias).",
  "sections": [
    {
      "id": "limites-principais",
      "level": 2,
      "title": "Limites principais",
      "text": "O James é uma aplicação Laravel renderizada no servidor. O navegador acessa rotas protegidas, o domínio da aplicação coordena regras de negócio e persistência, o PostgreSQL guarda os dados relacionais e os arquivos sensíveis ficam em discos privados.   Em desenvolvimento, o Laravel Sail orquestra a aplicação, o PostgreSQL e o Mailpit. A fila padrão usa o banco de dados; rotinas financeiras são registradas no scheduler do Laravel e podem ser executadas continuamente em produção.",
      "line": 1
    },
    {
      "id": "fontes-de-decisao",
      "level": 2,
      "title": "Fontes de decisão",
      "text": "As escolhas e seus motivos estão registradas em [Decisões arquiteturais](doc:decisoes). Para a visão de tecnologias, consulte [Stack e tecnologias](doc:tecnologias).",
      "line": 9
    }
  ],
  "sourcePath": "content/arquitetura.md",
  "visuals": [
    {
      "id": "james-overview",
      "kind": "architecture",
      "title": "Visão de arquitetura do James",
      "description": "A aplicação Laravel coordena a interface autenticada, a persistência relacional, os arquivos privados e as rotinas assíncronas do James.",
      "summary": "O navegador acessa a aplicação Laravel protegida por autenticação. A aplicação persiste dados no PostgreSQL, guarda mídia em discos privados e usa fila e scheduler para rotinas financeiras e notificações.",
      "renderMode": "native",
      "api": "api/diagrams/james-overview.json",
      "human": "diagrams/james-overview.html"
    }
  ],
  "apiVersion": 1
}
