PYMEX

Pymex - Software de Gestion para PYMES

Pymex es una aplicacion SaaS multi-tenant para la gestion de pequenas y medianas empresas. Permite administrar inventario, ventas, gastos, clientes y mas, todo en una sola plataforma.

Caracteristicas

Modulos disponibles

Stack Tecnologico

Categoria Tecnologia
Frontend React 18 + Vite + TypeScript
UI Tailwind CSS + shadcn/ui
Routing React Router v6 (HashRouter)
Estado TanStack Query
Auth Firebase Auth
Database Firestore
Forms React Hook Form + Zod
Hosting GitHub Pages

Estructura del Proyecto

/PYMEX
├── apps/
│   └── web/                    # Frontend React
│       ├── src/
│       │   ├── components/     # Componentes UI
│       │   ├── contexts/       # AuthContext, TenantContext
│       │   ├── guards/         # AuthGuard, TenantGuard
│       │   ├── hooks/          # Custom hooks
│       │   ├── lib/            # Firebase config, utils
│       │   ├── modules/        # Modulos (inventory, sales, etc.)
│       │   ├── pages/          # Paginas principales
│       │   ├── router/         # Configuracion de rutas
│       │   ├── services/       # Servicios Firestore
│       │   └── types/          # TypeScript types
│       └── public/
├── firebase/
│   ├── firestore.rules         # Reglas de seguridad
│   └── firestore.indexes.json  # Indices
├── scripts/
│   └── set-super-admin.js      # Script para crear admin
└── .github/
    └── workflows/
        └── deploy.yml          # GitHub Actions

Setup Local

Prerrequisitos

1. Clonar el repositorio

git clone https://github.com/tu-usuario/pymex.git
cd pymex

2. Instalar dependencias

cd apps/web
npm install

3. Configurar Firebase

  1. Ve a Firebase Console
  2. Crea un nuevo proyecto o usa uno existente
  3. Habilita Authentication con Google como proveedor
  4. Habilita Firestore Database
  5. Ve a Configuracion del proyecto > General > Tu app > Agregar app (Web)
  6. Copia las credenciales

4. Variables de entorno

Crea un archivo .env.local en apps/web/:

VITE_FIREBASE_API_KEY=tu-api-key
VITE_FIREBASE_AUTH_DOMAIN=tu-proyecto.firebaseapp.com
VITE_FIREBASE_PROJECT_ID=tu-proyecto
VITE_FIREBASE_STORAGE_BUCKET=tu-proyecto.appspot.com
VITE_FIREBASE_MESSAGING_SENDER_ID=tu-sender-id
VITE_FIREBASE_APP_ID=tu-app-id

5. Configurar reglas de Firestore

Copia el contenido de firebase/firestore.rules a tu proyecto de Firebase:

  1. Ve a Firestore Database > Reglas
  2. Pega el contenido del archivo
  3. Publica las reglas

6. Ejecutar en desarrollo

npm run dev

La app estara disponible en http://localhost:5173

7. Crear Super Admin

  1. Inicia sesion en la app con tu cuenta de Google
  2. Copia tu UID de usuario (lo puedes ver en Firebase Console > Authentication > Users)
  3. Ve a Firestore > users > [tu-uid]
  4. Edita el campo isSuperAdmin a true

Deploy a GitHub Pages

Configuracion inicial

  1. Ve a Settings > Pages en tu repositorio
  2. En “Build and deployment”, selecciona “GitHub Actions”

Secretos de GitHub

Configura los siguientes secretos en Settings > Secrets and variables > Actions:

Dominio personalizado

  1. Agrega un registro CNAME en tu DNS apuntando a tu-usuario.github.io
  2. En Settings > Pages, agrega tu dominio personalizado
  3. El archivo apps/web/public/CNAME ya contiene pymex.app

Deploy

El deploy se ejecuta automaticamente al hacer push a main.

Desarrollo

Comandos disponibles

# Desarrollo
npm run dev

# Build produccion
npm run build

# Preview build
npm run preview

# Linting
npm run lint

Agregar un nuevo modulo

  1. Crea la carpeta en src/modules/nuevo-modulo/
  2. Agrega el servicio, paginas y componentes
  3. Registra las rutas en src/router/index.tsx
  4. Agrega el item de navegacion en src/components/layout/Sidebar.tsx
  5. Agrega el modulo al tipo TenantModules en src/types/index.ts

Seguridad

Licencia

MIT