{"id":30806600,"url":"https://github.com/jonasjs/mb-platform-core","last_synced_at":"2026-02-13T00:02:24.008Z","repository":{"id":298769915,"uuid":"1000346832","full_name":"JonasJs/mb-platform-core","owner":"JonasJs","description":null,"archived":false,"fork":false,"pushed_at":"2025-06-12T20:08:37.000Z","size":19,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2025-06-12T21:26:54.614Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":null,"has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/JonasJs.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2025-06-11T16:29:19.000Z","updated_at":"2025-06-11T16:29:23.000Z","dependencies_parsed_at":"2025-06-12T21:38:17.242Z","dependency_job_id":null,"html_url":"https://github.com/JonasJs/mb-platform-core","commit_stats":null,"previous_names":["jonasjs/mb-platform-core"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/JonasJs/mb-platform-core","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/JonasJs%2Fmb-platform-core","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/JonasJs%2Fmb-platform-core/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/JonasJs%2Fmb-platform-core/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/JonasJs%2Fmb-platform-core/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/JonasJs","download_url":"https://codeload.github.com/JonasJs/mb-platform-core/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/JonasJs%2Fmb-platform-core/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":273843639,"owners_count":25178082,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-09-05T02:00:09.113Z","response_time":402,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2025-09-06T01:13:12.217Z","updated_at":"2026-02-13T00:02:23.954Z","avatar_url":"https://github.com/JonasJs.png","language":null,"funding_links":[],"categories":[],"sub_categories":[],"readme":"# mb-monorepo\n\nMonorepo com estrutura organizada para desenvolvimento fullstack utilizando Vue.js no frontend e Node.js no backend. Gerenciado com `npm workspaces`.\n\n---\n\n## 🧭 Navegação\n\n- [🚀 Como Executar](#-como-executar)\n- [🛠 Tecnologias e Ferramentas](#-tecnologias-e-ferramentas)\n- [🎯 Decisões Técnicas](#-decisões-técnicas)\n- [📦 Estrutura do Monorepo](#-estrutura-do-monorepo)\n- [📦 Pacotes Desenvolvidos](#-pacotes-desenvolvidos)\n  - [@mb-platform/design-system](#mb-platformdesign-system)\n  - [@mb-platform/form-guard](#mb-platformform-guard)\n\n---\n\n## 🚀 Como Executar\n\n### Pré-requisitos\n\n- **Node.js** (versão 18 ou superior)\n- **npm** (versão 8 ou superior)\n\n### Instalação\n\n1. Clone o repositório:\n\n```bash\ngit clone https://github.com/JonasJs/mb-platform-core\ncd mb-platform-core\n```\n\n2. Instale as dependências:\n\n```bash\nnpm install\n```\n\n3. Executar tudo de uma vez\n\n```bash\nnpm run dev\n```\n\n4. Executar os testes\n\n```bash\nnpm run dev\n```\n\n---\n\n## 🛠 Tecnologias e Ferramentas\n\n### Core\n\n- **Vue.js 3**\n- **Vite**\n- **Node.js**\n- **Express**\n- **npm Workspaces**\n\n### Frontend\n\n- Vue 3 Composition API\n- Vite Plugin Vue\n- Vue DevTools\n- Vitest\n- Vue Test Utils\n- JSDOM\n- Coverage V8\n\n### Backend\n\n- Express 5\n- CORS\n- HTTP Proxy Middleware\n\n### Design System e Componentes\n\n- Storybook\n- Design System próprio\n- Vite Library Mode\n\n### Qualidade de Código\n\n- ESLint\n- Prettier\n- Husky\n- Lint-staged\n- Commitlint\n- Neostandard\n\n### Ferramentas de Desenvolvimento\n\n- npm-run-all\n- Node --watch\n\n---\n\n## 🎯 Decisões Técnicas\n\n### Arquitetura Monorepo\n\n- `npm Workspaces` pela simplicidade e leveza\n- Evita complexidade de ferramentas como Turborepo/Nx em projetos pequenos\n- Estrutura pronta para futura migração, se necessário\n\n### Testes e Qualidade\n\n- **Vitest** com hot reload, cobertura integrada e zero-config\n- **Vue Test Utils** para testes de componentes\n- Cobertura mínima em todos os pacotes\n\n### Frontend\n\n- Vue 3 + Composition API\n- Vite como bundler e dev server\n- Design System próprio\n- Testes com Vitest\n\n### Backend\n\n- Express 5 com middlewares modernos\n- Proxy reverso para serviços externos\n- Estrutura escalável e direta\n\n### Qualidade e Padronização\n\n- ESLint compartilhado entre workspaces\n- Prettier para formatação\n- Husky + lint-staged + Commitlint para garantir boas práticas\n\n---\n\n## 📦 Estrutura do Monorepo\n\n```\nmb-platform-core/\n├── apps/\n│   └── auth-front/        # Frontend (Vue.js)\n│\n├── services/\n│   └── auth-service/      # Backend (Node.js + Express)\n│\n└── packages/\n    ├── design-system/     # Biblioteca de componentes Vue\n    ├── eslint-config/     # ESLint compartilhado\n    └── form-guard/        # Utilitários de validação de formulário\n```\n\n---\n\n## 📦 Pacotes Desenvolvidos\n\n### @mb-platform/design-system\n\n**Biblioteca de componentes Vue.js reutilizáveis**\n\n#### Componentes:\n\n- Button\n- Input\n- RadioButton\n- Step\n- Stepper\n- Steps\n\n#### Destaques:\n\n- Documentação via Storybook\n- Tokens CSS customizáveis\n- Scoped styles\n- Composition API\n- Build via Vite Library Mode\n\n---\n\n### @mb-platform/form-guard\n\n**Validação de formulários baseada em schema**\n\n#### Funcionalidades:\n\n- `validateSchema`: valida dados a partir de schemas\n- `extractErrors`: formatação estruturada dos erros\n- Enum de validações (`VALIDATIONS_ENUM`)\n\n#### Validações disponíveis:\n\n- Email\n- CPF\n- CNPJ\n- NotEmpty\n\n#### Exemplo de uso:\n\n```js\nimport { validateSchema, VALIDATIONS_ENUM } from \"@mb-platform/form-guard\";\n\nconst schema = {\n  fields: {\n    email: {\n      type: \"string\",\n      required: true,\n      validations: [VALIDATIONS_ENUM.EMAIL],\n    },\n    cpf: {\n      type: \"string\",\n      required: true,\n      validations: [VALIDATIONS_ENUM.IS_CPF],\n    },\n  },\n};\n\nconst result = validateSchema({ schema, data: formData });\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjonasjs%2Fmb-platform-core","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fjonasjs%2Fmb-platform-core","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjonasjs%2Fmb-platform-core/lists"}