{"_id":"@angelojrp/floorplan","name":"@angelojrp/floorplan","dist-tags":{"latest":"1.0.0"},"versions":{"1.0.0":{"name":"@angelojrp/floorplan","version":"1.0.0","description":"Text-to-floorplan renderer — descreva plantas baixas em YAML e renderize como SVG","main":"dist/index.js","types":"dist/index.d.ts","bin":{"floorplan":"dist/cli.js"},"scripts":{"build":"tsc","dev":"tsc --watch","start":"node dist/cli.js","typecheck":"tsc --noEmit"},"keywords":["floorplan","plant-baixa","svg","construction","mermaid","dxf","yaml","architecture"],"repository":{"type":"git","url":"git+https://github.com/angelojrp/floorplan.git"},"engines":{"node":">=18"},"license":"MIT","dependencies":{"yaml":"^2.6.1","zod":"^3.23.8","commander":"^12.1.0"},"devDependencies":{"@types/node":"^22.10.0","typescript":"^5.7.2"},"_id":"@angelojrp/floorplan@1.0.0","bugs":{"url":"https://github.com/angelojrp/floorplan/issues"},"homepage":"https://github.com/angelojrp/floorplan#readme","_nodeVersion":"24.13.1","_npmVersion":"11.8.0","dist":{"integrity":"sha512-e+dc8H2G9aINIQbAL5YNq5d4/0frafVA27tK1OxL7cr3tBgx2qtT/6cE6osjlTCNhS5oKNygcTTZ+EL83H5d+Q==","shasum":"62fdf66ec9e2a7f0be14f6f6694ea6d7e3af821f","tarball":"https://registry.npmjs.org/@angelojrp/floorplan/-/floorplan-1.0.0.tgz","fileCount":35,"unpackedSize":116832,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEQCIGc0VtOagDogxsCKtT8D68zR7dq7JI3x2UHULf1A+VYgAiA1YuowjKeRjSnTbP9r207B7z6e8kpAZxehNZr3yURnGg=="}]},"_npmUser":{"name":"angelojrp","email":"angelojrp@gmail.com"},"directories":{},"maintainers":[{"name":"angelojrp","email":"angelojrp@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/floorplan_1.0.0_1781651443883_0.10165525535917075"},"_hasShrinkwrap":false}},"time":{"created":"2026-06-16T23:10:43.634Z","1.0.0":"2026-06-16T23:10:44.017Z","modified":"2026-06-16T23:10:44.218Z"},"maintainers":[{"name":"angelojrp","email":"angelojrp@gmail.com"}],"description":"Text-to-floorplan renderer — descreva plantas baixas em YAML e renderize como SVG","homepage":"https://github.com/angelojrp/floorplan#readme","keywords":["floorplan","plant-baixa","svg","construction","mermaid","dxf","yaml","architecture"],"repository":{"type":"git","url":"git+https://github.com/angelojrp/floorplan.git"},"bugs":{"url":"https://github.com/angelojrp/floorplan/issues"},"license":"MIT","readme":"# 🏠 Floorplan\r\n\r\n[![npm version](https://img.shields.io/npm/v/@angelojrp/floorplan)](https://www.npmjs.com/package/@angelojrp/floorplan)\r\n[![License: MIT](https://img.shields.io/badge/License-MIT-blue.svg)](LICENSE)\r\n\r\n> **AI-ready**: use via `npx @angelojrp/floorplan input.yaml -o output.svg` — zero install.\r\n\r\n**Renderizador de plantas baixas YAML → SVG**. Descreva cômodos, portas e janelas em YAML e obtenha um desenho arquitetônico profissional em SVG.\r\n\r\n---\r\n\r\n## ✨ Funcionalidades\r\n\r\n- 🧱 **Paredes preenchidas** com espessura real (estilo AutoCAD)\r\n- 🚪 **Portas**: pivot, sliding, double — com arco de abertura e batentes\r\n- 🪟 **Janelas** com moldura e gap na parede\r\n- 📐 **Cotas** externas com ticks arquitetônicos\r\n- 🏡 **Terreno** (lot) — contorno tracejado do lote\r\n- 🧩 **Biblioteca** de 10 cômodos prontos (clique para inserir)\r\n- 🖱️ **Drag-and-drop** — reposicione cômodos direto no preview SVG\r\n- 📊 **Resumo executivo** — áreas, quantidade de cômodos/portas/janelas\r\n- 🔲 Grid configurável (pontos)\r\n- 🎨 Paleta arquitetônica (paredes cinza, cotas vermelhas)\r\n\r\n---\r\n\r\n## 🚀 Uso rápido\r\n\r\n```bash\r\n# Via npx (zero instalação)\r\nnpx @angelojrp/floorplan examples/apartamento.yaml -o saida.svg\r\n\r\n# Via npm global\r\nnpm install -g @angelojrp/floorplan\r\nfloorplan input.yaml -o output.svg\r\n```\r\n\r\n### Web App\r\n\r\nAbra [`web/index.html`](web/index.html) no navegador — **sem instalação, sem build**.\r\n\r\nEditor YAML à esquerda, preview SVG em tempo real à direita.\r\n\r\n### Deploy no Cloudflare Pages\r\n\r\n```bash\r\nnpx wrangler pages deploy web/\r\n```\r\n\r\nOu configure pelo dashboard apontando para o diretório `web/`.\r\n\r\n---\r\n\r\n## 📋 Schema YAML\r\n\r\n```yaml\r\nversion: 1\r\ntitle: \"Minha Planta\"\r\nscale: 2              # px por cm (2 = escala 1:50)\r\nwallThickness: 15     # cm\r\ngrid: 100             # cm (ou false para desligar)\r\n\r\nlot:                  # terreno (opcional)\r\n  width: 2000         # cm\r\n  height: 2500        # cm\r\n\r\nrooms:\r\n  - id: sala\r\n    name: Sala de Estar\r\n    x: 0              # posição X (cm)\r\n    y: 0              # posição Y (cm)\r\n    width: 500        # largura (cm)\r\n    height: 400       # altura (cm)\r\n    doors:\r\n      - wall: south   # north | south | east | west\r\n        offset: 200   # distância da extremidade (cm)\r\n        width: 80     # largura (cm)\r\n        type: pivot   # pivot | sliding | double\r\n        swing: left   # left | right | none\r\n    windows:\r\n      - wall: north\r\n        offset: 100\r\n        width: 200\r\n        height: 120   # altura da janela (cm)\r\n        sill: 110     # altura do peitoril (cm)\r\n\r\nwalls:                # paredes avulsas (opcional)\r\n  - from: [0, 800]\r\n    to: [600, 800]\r\n    thickness: 15\r\n```\r\n\r\n### Tipos de porta\r\n\r\n| Tipo | Descrição |\r\n|------|-----------|\r\n| `pivot` | Porta comum com dobradiça (arco de 90°) |\r\n| `sliding` | Porta de correr (sem arco) |\r\n| `double` | Porta dupla (duas folhas, arcos opostos) |\r\n\r\n### Direção do swing\r\n\r\n`left` = dobradiça no lado esquerdo da abertura  \r\n`right` = dobradiça no lado direito da abertura  \r\n`none` = sem swing (usado com `sliding`)\r\n\r\n---\r\n\r\n## 📂 Estrutura\r\n\r\n```\r\nfloorplan/\r\n├── src/            # Engine TypeScript\r\n│   ├── types.ts    # Tipos e interfaces\r\n│   ├── parser.ts   # Parser YAML + validação Zod\r\n│   ├── layout.ts   # Engine de geometria\r\n│   ├── renderer.ts # Renderizador SVG\r\n│   ├── cli.ts      # CLI\r\n│   └── index.ts    # API pública\r\n├── web/\r\n│   ├── index.html  # App web (autossuficiente)\r\n│   ├── _headers    # Cloudflare config\r\n│   └── _redirects\r\n├── examples/       # 5 exemplos YAML + SVGs\r\n├── playground.html # Playground standalone\r\n├── wrangler.toml   # Deploy config\r\n└── LICENSE         # MIT\r\n```\r\n\r\n---\r\n\r\n## 📐 Exemplos inclusos\r\n\r\n| Exemplo | Área | Cômodos |\r\n|---------|------|---------|\r\n| Apartamento 2 Quartos | ~85m² | Sala, Cozinha, Banheiro, 2 Quartos |\r\n| Studio Compacto | ~25m² | Sala/Cozinha, Banheiro |\r\n| Casa Pequena | ~75m² | Sala, Cozinha, Corredor, 2 Quartos, Banheiro |\r\n| Escritório Comercial | ~82m² | Recepção, Reunião, Open Plan, 3 Salas, Banheiro |\r\n| Galpão Industrial | ~162m² | Armazenagem, Doca, Escritório, Banheiro |\r\n\r\n---\r\n\r\n## 🛠️ Desenvolvimento\r\n\r\n```bash\r\nnpm install        # instalar dependências\r\nnpm run build      # compilar TypeScript\r\nnpm run typecheck  # verificar tipos\r\n```\r\n\r\nA engine está em [`src/`](src/) (TypeScript, compila para `dist/`).  \r\nO app web em [`web/index.html`](web/index.html) contém a engine portada para JS inline — sem dependências de build.\r\n\r\n---\r\n\r\n**Licença**: MIT — veja [LICENSE](LICENSE)\r\n","readmeFilename":"README.md","_rev":"1-f9a583c198c6670249320bc787cd0577"}