Complete rename across all layers: UI branding, package names (@smashpoint/web, @smashpoint/shared), infrastructure (Docker, DB config), seed data, documentation, and logo/favicon. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
277 lines
8.3 KiB
Markdown
277 lines
8.3 KiB
Markdown
# SmashPoint
|
|
|
|
Sistema integral de gestion para clubes de padel. Una solucion moderna y completa para administrar reservas, ventas, torneos, membresias y multiples sedes.
|
|
|
|

|
|

|
|

|
|

|
|

|
|
|
|
---
|
|
|
|
## Caracteristicas Principales
|
|
|
|
### Sistema de Reservas
|
|
- Calendario visual con vista diaria/semanal
|
|
- Gestion de disponibilidad por cancha
|
|
- Precios dinamicos (horario regular vs premium)
|
|
- Integracion automatica con membresias
|
|
- Reservas recurrentes
|
|
|
|
### Punto de Venta (POS)
|
|
- Gestion de productos y categorias
|
|
- Control de inventario con alertas de stock bajo
|
|
- Multiples metodos de pago
|
|
- Caja registradora con apertura/cierre
|
|
- Historial de ventas detallado
|
|
|
|
### Torneos
|
|
- Formatos: Eliminacion simple/doble, Round Robin, Liga
|
|
- Inscripciones online
|
|
- Generacion automatica de brackets
|
|
- Seguimiento de partidos y resultados
|
|
|
|
### Membresias
|
|
- Planes personalizables
|
|
- Horas de cancha incluidas
|
|
- Descuentos en reservas y tienda
|
|
- Renovacion automatica opcional
|
|
- Alertas de vencimiento
|
|
|
|
### Multi-Sede
|
|
- Gestion centralizada de multiples ubicaciones
|
|
- Usuarios con acceso por sede
|
|
- Reportes por sede o consolidados
|
|
- Configuracion independiente por sede
|
|
|
|
---
|
|
|
|
## Capturas de Pantalla
|
|
|
|
<!-- TODO: Agregar capturas de pantalla del sistema -->
|
|
```
|
|
[Dashboard] [Reservas] [POS]
|
|
[Torneos] [Membresias] [Clientes]
|
|
```
|
|
|
|
---
|
|
|
|
## Inicio Rapido
|
|
|
|
### Requisitos Previos
|
|
|
|
- Node.js 20.x o superior
|
|
- PostgreSQL 16.x
|
|
- pnpm 8.15.0 o superior
|
|
|
|
### Instalacion
|
|
|
|
```bash
|
|
# Clonar el repositorio
|
|
git clone https://github.com/tu-organizacion/smashpoint.git
|
|
cd smashpoint
|
|
|
|
# Instalar dependencias
|
|
pnpm install
|
|
|
|
# Configurar variables de entorno
|
|
cp apps/web/.env.example apps/web/.env
|
|
# Editar .env con tus credenciales
|
|
|
|
# Generar cliente Prisma
|
|
pnpm db:generate
|
|
|
|
# Crear tablas en la base de datos
|
|
pnpm db:push
|
|
|
|
# Sembrar datos iniciales (opcional)
|
|
cd apps/web && pnpm db:seed && cd ../..
|
|
|
|
# Iniciar en modo desarrollo
|
|
pnpm dev
|
|
```
|
|
|
|
La aplicacion estara disponible en `http://localhost:3000`
|
|
|
|
---
|
|
|
|
## Estructura del Proyecto
|
|
|
|
```
|
|
smashpoint/
|
|
├── apps/
|
|
│ └── web/ # Aplicacion Next.js principal
|
|
│ ├── app/
|
|
│ │ ├── api/ # API Routes
|
|
│ │ │ ├── auth/ # Autenticacion (NextAuth)
|
|
│ │ │ ├── bookings/ # Reservas
|
|
│ │ │ ├── cash-register/ # Caja registradora
|
|
│ │ │ ├── clients/ # Clientes
|
|
│ │ │ ├── courts/ # Canchas
|
|
│ │ │ ├── dashboard/ # Estadisticas
|
|
│ │ │ ├── membership-plans/ # Planes de membresia
|
|
│ │ │ ├── memberships/# Membresias
|
|
│ │ │ ├── products/ # Productos
|
|
│ │ │ ├── sales/ # Ventas
|
|
│ │ │ ├── sites/ # Sedes
|
|
│ │ │ └── tournaments/# Torneos
|
|
│ │ └── (admin)/ # Paginas del panel de administracion
|
|
│ ├── components/ # Componentes React reutilizables
|
|
│ ├── lib/ # Utilidades y configuraciones
|
|
│ ├── prisma/ # Schema y migraciones
|
|
│ └── types/ # Definiciones de tipos TypeScript
|
|
├── packages/
|
|
│ └── shared/ # Codigo compartido (tipos, validaciones)
|
|
├── docs/ # Documentacion
|
|
├── package.json
|
|
├── pnpm-workspace.yaml
|
|
└── turbo.json
|
|
```
|
|
|
|
---
|
|
|
|
## Variables de Entorno
|
|
|
|
Crear un archivo `.env` en `apps/web/` con las siguientes variables:
|
|
|
|
```env
|
|
# Base de datos
|
|
DATABASE_URL="postgresql://usuario:password@localhost:5432/smashpoint_db?schema=public"
|
|
|
|
# NextAuth
|
|
NEXTAUTH_SECRET="tu-clave-secreta-aqui"
|
|
NEXTAUTH_URL="http://localhost:3000"
|
|
|
|
# Aplicacion
|
|
NEXT_PUBLIC_APP_URL="http://localhost:3000"
|
|
```
|
|
|
|
### Variables Requeridas
|
|
|
|
| Variable | Descripcion | Ejemplo |
|
|
|----------|-------------|---------|
|
|
| `DATABASE_URL` | URL de conexion a PostgreSQL | `postgresql://user:pass@localhost:5432/db` |
|
|
| `NEXTAUTH_SECRET` | Clave secreta para JWT (min 32 caracteres) | Generar con `openssl rand -base64 32` |
|
|
| `NEXTAUTH_URL` | URL base de la aplicacion | `http://localhost:3000` |
|
|
| `NEXT_PUBLIC_APP_URL` | URL publica de la aplicacion | `http://localhost:3000` |
|
|
|
|
---
|
|
|
|
## Scripts Disponibles
|
|
|
|
### Desarrollo
|
|
|
|
```bash
|
|
pnpm dev # Iniciar servidor de desarrollo
|
|
pnpm build # Construir para produccion
|
|
pnpm lint # Ejecutar ESLint
|
|
pnpm type-check # Verificar tipos TypeScript
|
|
```
|
|
|
|
### Base de Datos
|
|
|
|
```bash
|
|
pnpm db:generate # Generar cliente Prisma
|
|
pnpm db:push # Sincronizar schema con DB
|
|
pnpm db:studio # Abrir Prisma Studio (UI para DB)
|
|
pnpm db:seed # Sembrar datos iniciales
|
|
```
|
|
|
|
---
|
|
|
|
## Resumen de API
|
|
|
|
La API REST sigue convenciones estandar. Todas las rutas requieren autenticacion excepto las indicadas.
|
|
|
|
### Endpoints Principales
|
|
|
|
| Recurso | Ruta Base | Descripcion |
|
|
|---------|-----------|-------------|
|
|
| Auth | `/api/auth/*` | Autenticacion NextAuth |
|
|
| Courts | `/api/courts` | Gestion de canchas |
|
|
| Bookings | `/api/bookings` | Reservas |
|
|
| Clients | `/api/clients` | Clientes |
|
|
| Products | `/api/products` | Productos del POS |
|
|
| Sales | `/api/sales` | Ventas |
|
|
| Cash Register | `/api/cash-register` | Caja registradora |
|
|
| Tournaments | `/api/tournaments` | Torneos |
|
|
| Memberships | `/api/memberships` | Membresias |
|
|
| Membership Plans | `/api/membership-plans` | Planes de membresia |
|
|
| Sites | `/api/sites` | Sedes |
|
|
| Dashboard | `/api/dashboard/stats` | Estadisticas |
|
|
|
|
Ver documentacion completa en [docs/API.md](docs/API.md)
|
|
|
|
---
|
|
|
|
## Credenciales por Defecto
|
|
|
|
Despues de ejecutar el seed, puedes acceder con:
|
|
|
|
| Usuario | Password | Rol |
|
|
|---------|----------|-----|
|
|
| `admin@smashpoint.com` | `admin123` | Super Admin |
|
|
| `recepcion@smashpoint.com` | `recepcion123` | Recepcionista |
|
|
|
|
> **IMPORTANTE:** Cambiar estas credenciales inmediatamente en entornos de produccion.
|
|
|
|
---
|
|
|
|
## Contribuir
|
|
|
|
1. Fork el repositorio
|
|
2. Crear una rama para tu feature (`git checkout -b feature/nueva-funcionalidad`)
|
|
3. Commit tus cambios (`git commit -m 'feat: agregar nueva funcionalidad'`)
|
|
4. Push a la rama (`git push origin feature/nueva-funcionalidad`)
|
|
5. Abrir un Pull Request
|
|
|
|
### Convenciones de Commits
|
|
|
|
Usamos [Conventional Commits](https://www.conventionalcommits.org/):
|
|
|
|
- `feat:` Nueva funcionalidad
|
|
- `fix:` Correccion de bug
|
|
- `docs:` Cambios en documentacion
|
|
- `style:` Cambios de formato (no afectan codigo)
|
|
- `refactor:` Refactorizacion de codigo
|
|
- `test:` Agregar o modificar tests
|
|
- `chore:` Tareas de mantenimiento
|
|
|
|
---
|
|
|
|
## Documentacion Adicional
|
|
|
|
- [API Reference](docs/API.md) - Documentacion completa de endpoints
|
|
- [Deployment Guide](docs/DEPLOYMENT.md) - Guia de despliegue
|
|
|
|
---
|
|
|
|
## Licencia
|
|
|
|
Este proyecto esta bajo la Licencia MIT. Ver el archivo [LICENSE](LICENSE) para mas detalles.
|
|
|
|
```
|
|
MIT License
|
|
|
|
Copyright (c) 2024 SmashPoint
|
|
|
|
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
of this software and associated documentation files (the "Software"), to deal
|
|
in the Software without restriction, including without limitation the rights
|
|
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
copies of the Software, and to permit persons to whom the Software is
|
|
furnished to do so, subject to the following conditions:
|
|
|
|
The above copyright notice and this permission notice shall be included in all
|
|
copies or substantial portions of the Software.
|
|
|
|
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
SOFTWARE.
|
|
```
|