Skip to content

anvorja/property_tax_prototype

Repository files navigation

Portal de Impuesto Predial - Property tax prototype 🏛️

TypeScript Next.js Tailwind CSS shadcn/ui pnpm Lucide Icons jsPDF

Portal web moderno para la consulta y pago de impuestos prediales de la Gobernación, ofreciendo una experiencia fluida y segura para los ciudadanos.

✨ Características Principales

Consulta Pagos Abonos Comprobantes

  • 📋 Consulta de Facturas

    • Búsqueda por número de factura o ID predial
    • Visualización detallada de la información
    • Validación del estado actual
  • 💳 Sistema de Pagos

    • Integración completa con PSE
    • Aplicación automática de descuentos
    • Sistema de abonos parciales
    • Comprobantes digitales
  • 📄 Generación de Comprobantes

    • PDFs estandarizados
    • Diferenciación entre pagos y abonos
    • Descarga automática

🛠️ Tecnologías Utilizadas

Core

  • TypeScript 5.0+ - Lenguaje base con tipado estático
  • Next.js 15.1 - Framework de React con SSR y routing
  • pnpm - Gestor de paquetes rápido y eficiente

Estilos y UI

  • Tailwind CSS - Framework CSS utility-first
  • shadcn/ui - Componentes reutilizables y accesibles
  • Lucide Icons - Set de iconos modernos y personalizables

Utilidades

  • jsPDF - Generación de documentos PDF
  • React Hook Form - Manejo de formularios
  • Zod - Validación de esquemas

📦 Instalación

# Clonar el repositorio
git clone [url-del-repositorio]

# Navegar al directorio
cd predial_tax_prototype

# Instalar dependencias
pnpm install

# Iniciar servidor de desarrollo
pnpm dev

🧪 Pruebas

Facturas de Prueba

Vencida Con Descuento Pagada

Casos de Uso Recomendados

Caso de Prueba Descripción Resultado Esperado
Factura Vencida 000069704647 Sin descuento aplicable
Con Descuento 000011123448 Descuento por pronto pago
Ya Pagada 000011123450 Muestra estado pagado
Abono Parcial Cualquier factura pendiente Mínimo $30,000
Factura Inválida Números aleatorios Mensaje de error

🏗️ Estructura del Proyecto

.
├── components.json
├── eslint.config.mjs
├── next.config.ts
├── next-env.d.ts
├── package.json
├── pnpm-lock.yaml
├── postcss.config.mjs
├── README.md
├── src
│   ├── app
│   │   ├── config
│   │   │   └── routes.ts
│   │   ├── globals.css
│   │   ├── invoice                      # Módulo de factura/invoice
│   │   │   ├── [id]                     # Ruta dinámica factura específica
│   │   │   │   └── page.tsx
│   │   │   └── page.tsx                 # Página consulta factura
│   │   ├── layout.tsx
│   │   ├── page.tsx                     # Página principal/Home
│   │   └── payment                      # Módulo de pago
│   │       ├── [id]
│   │       │   ├── confirmation
│   │       │   │   └── page.tsx
│   │       │   └── page.tsx
│   │       └── page.tsx
│   ├── components
│   │   ├── home
│   │   │   ├── HeroSection.tsx
│   │   │   └── InfoSection.tsx
│   │   ├── invoice                      # Componentes específicos factura
│   │   │   ├── InvoiceDetails.tsx
│   │   │   ├── InvoiceForm.tsx          # Formulario consulta factura
│   │   │   ├── InvoiceOptions.tsx       # Opciones (descargar/pagar/abonar)
│   │   │   └── InvoicePreview.tsx       # Vista previa factura PDF
│   │   ├── payment                      # Componentes de pago
│   │   │   ├── AbonoForm.tsx            # Formulario de abono
│   │   │   ├── InvoiceSummary.tsx
│   │   │   └── PSEForm.tsx              # Formulario pago PSE
│   │   ├── shared
│   │   │   ├── Footer.tsx
│   │   │   └── Header.tsx
│   │   └── ui                          # Componentes que sean necesarios
│   │       ├── alert.tsx
│   │       ├── button.tsx
│   │       ├── card.tsx
│   │       ├── dropdown-menu.tsx
│   │       ├── input.tsx
│   │       ├── progress.tsx
│   │       ├── select.tsx
│   │       ├── stepper.tsx
│   │       ├── toaster.tsx
│   │       ├── toast.tsx
│   │       └── tooltip.tsx
│   ├── data
│   │   ├── BanksMockData.ts             # Lista bancos PSE
│   │   ├── InvoiceMockData.ts           # Datos factura predial
│   │   ├── NavMockData.ts
│   │   └── PropertyMockData.ts          # Datos predio
│   ├── hooks
│   │   ├── useAbono.ts                  # Hook proceso abono
│   │   ├── useInvoice.ts                # Hook consulta factura
│   │   ├── usePayment.ts                # Hook proceso pago
│   │   └── use-toast.ts               
│   ├── lib
│   │   ├── constants.ts                 # Constantes
│   │   ├── formatUtils.ts
│   │   ├── pdf-generator.ts             # Utilidades generación PDF
│   │   └── utils.ts                     # Utilidades generales
│   ├── services                         # Servicios para lógica de negocio
│   │   ├── api                          # Servicios API base
│   │   │   ├── client.ts                # Cliente API base
│   │   │   └── config.ts                # Configuración API (endpoints, headers)
│   │   ├── invoice                      # Servicios relacionados a facturas
│   │   │   ├── invoice.service.ts       # Métodos CRUD factura
│   │   │   └── types.ts                 # Tipos específicos del servicio
│   │   ├── payment                      # Servicios relacionados a pagos
│   │   │   ├── payment.service.ts       # Lógica de pagos y PSE
│   │   │   └── types.ts                 # Tipos específicos del servicio
│   │   └── property                     # Servicios relacionados a predios 
│   │       ├── property.service.ts      # Consultas de predios
│   │       └── types.ts                 # Tipos específicos del servicio
│   ├── store                            # Estado global si necesario
│   │   └── invoiceStore.ts              # Estado factura actual
│   └── types
│       ├── commonTypes.ts               # Interfaces comunes
│       ├── invoiceDetailsTypes.ts
│       ├── invoiceTypes.ts              # Interfaces factura
│       ├── navigation.ts 
│       ├── paymentPSETypes.ts           # Interfaces PSE
│       ├── paymentTypes.ts              # Interfaces pago
│       ├── propertyTypes.ts             # Interfaces predio
│       └── stepperTypes.ts              # Interfaces stepper
├── tailwind.config.ts
└── tsconfig.json

🤝 Contribución

Contribuciones

  1. Fork el proyecto
  2. Crea tu rama de feature (git checkout -b feature/NuevaCaracteristica)
  3. Commit tus cambios (git commit -m 'Agrega nueva característica')
  4. Push a la rama (git push origin feature/NuevaCaracteristica)
  5. Abre un Pull Request

📝 Licencia

MIT License

Este proyecto está bajo la Licencia MIT - ver el archivo LICENSE.md para más detalles.

https://github.com/pnpm/pnpm

🌟

Autor

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages