{"id":50973552,"url":"https://github.com/fjbatresv/pettzi","last_synced_at":"2026-06-19T05:02:19.196Z","repository":{"id":348448936,"uuid":"1111933298","full_name":"fjbatresv/pettzi","owner":"fjbatresv","description":"Serverless pet-care platform monorepo built with Nx, Angular, AWS CDK and Lambda. Published as a public architecture and portfolio reference.","archived":false,"fork":false,"pushed_at":"2026-04-01T06:54:46.000Z","size":1871,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-04-01T09:29:09.054Z","etag":null,"topics":["angular","api-gateway","aws-cdk","aws-lambda","cognito","dynamodb","eventbridge","monorepo","nx","serverless"],"latest_commit_sha":null,"homepage":"","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/fjbatresv.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE.md","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":"SECURITY.md","support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":"AGENTS.md","dco":null,"cla":null}},"created_at":"2025-12-07T22:35:23.000Z","updated_at":"2026-04-01T06:54:50.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/fjbatresv/pettzi","commit_stats":null,"previous_names":["fjbatresv/pettzi"],"tags_count":null,"template":false,"template_full_name":"nrwl/empty-template","purl":"pkg:github/fjbatresv/pettzi","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fjbatresv%2Fpettzi","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fjbatresv%2Fpettzi/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fjbatresv%2Fpettzi/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fjbatresv%2Fpettzi/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/fjbatresv","download_url":"https://codeload.github.com/fjbatresv/pettzi/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fjbatresv%2Fpettzi/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":34517752,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-06-19T02:00:06.005Z","response_time":61,"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":["angular","api-gateway","aws-cdk","aws-lambda","cognito","dynamodb","eventbridge","monorepo","nx","serverless"],"created_at":"2026-06-19T05:02:18.209Z","updated_at":"2026-06-19T05:02:19.184Z","avatar_url":"https://github.com/fjbatresv.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# PETTZI\n\n[![Status](https://img.shields.io/badge/status-public_reference-4c1?style=flat-square)](./README.md)\n[![Portfolio](https://img.shields.io/badge/purpose-portfolio-6f42c1?style=flat-square)](./README.md)\n[![Node.js](https://img.shields.io/badge/node-24-339933?style=flat-square\u0026logo=node.js\u0026logoColor=white)](./README.md)\n[![Angular](https://img.shields.io/badge/angular-21-DD0031?style=flat-square\u0026logo=angular\u0026logoColor=white)](./README.md)\n[![Nx](https://img.shields.io/badge/nx-monorepo-143055?style=flat-square\u0026logo=nx\u0026logoColor=white)](./README.md)\n[![AWS](https://img.shields.io/badge/aws-serverless-FF9900?style=flat-square\u0026logo=amazonaws\u0026logoColor=white)](./README.md)\n[![License](https://img.shields.io/badge/license-all_rights_reserved-lightgrey?style=flat-square)](./LICENSE.md)\n\nPETTZI es un monorepo full-stack para gestión de mascotas construido con `Nx`, `Angular`, `AWS CDK` y `AWS Lambda`.\n\nOriginalmente fue concebido como un producto SaaS para salud, recordatorios, documentos y co-propiedad de mascotas. Hoy se publica como **referencia técnica y proyecto de portafolio**.\n\n## Estado del proyecto\n\n- El producto no continúa como servicio comercial.\n- La decisión se tomó después de concluir que la propuesta no era viable comercialmente.\n- El repositorio se conserva para mostrar decisiones de arquitectura, organización del monorepo y diseño backend/frontend.\n- El workflow automático de despliegue en GitHub Actions fue desactivado intencionalmente.\n- La infraestructura y los docs de despliegue se mantienen como referencia para estudio o self-hosting.\n\n## Qué demuestra este repositorio\n\n- Arquitectura serverless modular sobre AWS.\n- Monorepo `Nx` con separación por bounded contexts.\n- APIs backend desacopladas por dominio (`auth`, `pets`, `owners`, `events`, `reminders`, `uploads`, `catalogs`).\n- Lambdas delgadas con lógica movida a servicios y librerías reutilizables.\n- Uso de `DynamoDB` con single-table design orientado por access patterns.\n- Frontend `Angular` conectado a una arquitectura backend basada en contratos OpenAPI.\n\n## Stack principal\n\n### Backend e infraestructura\n- `AWS CDK v2`\n- `AWS Lambda` sobre `Node.js 24`\n- `API Gateway HTTP API`\n- `DynamoDB`\n- `S3`\n- `SES`\n- `Cognito`\n- `EventBridge`\n\n### Frontend y tooling\n- `Angular 21`\n- `Nx`\n- `TypeScript`\n- `Jest`\n- `ESLint`\n- `Prettier`\n- `GitHub Actions` para CI\n\n## Arquitectura en una mirada\n\n- `apps/web`: aplicación Angular.\n- `apps/cdk`: definición de stacks de infraestructura.\n- `libs/api-*`: bounded contexts y handlers por API.\n- `libs/domain-model`: modelos, claves y mapeos del dominio.\n- `libs/utils-dynamo`, `libs/shared-utils`, `libs/infra-constructs`: utilidades y componentes reutilizables.\n\n### Bounded contexts\n- `Auth`: autenticación y perfil de usuario.\n- `Pets`: CRUD de mascotas.\n- `Owners`: relación de dueños y co-dueños.\n- `Events`: timeline y eventos de salud.\n- `Reminders`: recordatorios programados.\n- `Uploads`: documentos y fotos vía URLs firmadas.\n- `Catalogs`: catálogos de apoyo.\n\n## Estructura del monorepo\n\n```text\npettzi/\n├── apps/\n│   ├── cdk/\n│   └── web/\n├── libs/\n│   ├── api-auth/\n│   ├── api-catalogs/\n│   ├── api-events/\n│   ├── api-owners/\n│   ├── api-pets/\n│   ├── api-reminders/\n│   ├── api-uploads/\n│   ├── domain-model/\n│   ├── infra-constructs/\n│   ├── shared-utils/\n│   └── utils-dynamo/\n├── docs/\n├── ARCHITECTURE.md\n├── DESIGN-SYSTEM.md\n└── TABLE_DESIGN.md\n```\n\n## Cómo explorarlo localmente\n\n### Requisitos\n- `Node.js 24`\n- `npm`\n- AWS solo si quieres levantar o self-hostear la infraestructura\n\n### Comandos útiles\n\n```bash\nnpm install\nnpx nx graph\nnpx nx run-many -t lint test\n```\n\n### Documentación local\n\n- Start with `docs/README.md`\n- Browse reference pages under `docs/reference/content/`\n\n### Variables de entorno\n\n- Usa `.env.example` como referencia.\n- No se incluyen secretos reales ni configuración operativa activa en el árbol actual.\n\n## Infraestructura y despliegue\n\n- La arquitectura de despliegue original sigue documentada en el repositorio.\n- El despliegue automático desde GitHub Actions está desactivado.\n- Si quieres reutilizar esta base para self-hosting, revisa primero variables, dominios, secretos y supuestos de AWS.\n\n## Documentación clave\n\n- `ARCHITECTURE.md` — arquitectura general y decisiones técnicas.\n- `TABLE_DESIGN.md` — diseño de DynamoDB y patrones de acceso.\n- `DESIGN-SYSTEM.md` — lineamientos visuales del frontend.\n- `apps/cdk/README.md` — guía de infraestructura CDK.\n- `docs/reference/content/overview.mdx` — overview navegable.\n- `docs/reference/content/quickstart.mdx` — primeros pasos.\n\n## Calidad y contribución\n\n- `CONTRIBUTING.md` — guía de contribución.\n- `SECURITY.md` — reporte responsable de vulnerabilidades.\n- `CODE_OF_CONDUCT.md` — expectativas de convivencia.\n- `LICENSE.md` — estado actual de licencia.\n\n## Por qué este repo sigue público\n\nAunque PETTZI no avanzó como producto comercial, el código sigue siendo valioso como muestra de:\n\n- diseño de backend por dominios\n- organización de un monorepo `Nx`\n- integración entre frontend, infraestructura y APIs\n- decisiones pragmáticas para un producto serverless real\n\nSi quieres revisar algo en particular, empieza por `ARCHITECTURE.md`, `TABLE_DESIGN.md` y `apps/cdk/src/main.ts`.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffjbatresv%2Fpettzi","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ffjbatresv%2Fpettzi","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffjbatresv%2Fpettzi/lists"}