# Abogadas Litoral

Aplicacion web para gestion de turnos de un estudio juridico, desarrollada con Laravel y Vite.

## Tabla de contenido

- [Tecnologias y versiones](#tecnologias-y-versiones)
- [Requisitos previos](#requisitos-previos)
- [Instalacion](#instalacion)
- [Comandos utiles](#comandos-utiles)
- [Testing](#testing)
- [Flujo de trabajo con Git](#flujo-de-trabajo-con-git)
- [Estructura principal](#estructura-principal)
- [Notas](#notas)

## Tecnologias y versiones

Versiones tomadas del proyecto actual:

- PHP: `^8.2`
- Laravel Framework: `^12.0`
- PHPUnit: `^11.5.3`
- Node.js: recomendado `>=20`
- npm: recomendado `>=10`
- Vite: `^7.0.7`
- Bootstrap: `^5.3.8`
- FullCalendar: `^6.1.20`
- Spatie Laravel Backup: `^9.3`
- DomPDF (barryvdh/laravel-dompdf): `^3.1`

Archivos fuente de versionado:

- `composer.json`
- `package.json`

## Requisitos previos

- PHP 8.2 o superior
- Composer 2.x
- Node.js y npm
- Base de datos (segun entorno):
	- En `.env.example` la conexion por defecto es `sqlite`
	- En `config/database.php` el fallback de Laravel esta en `mysql`

## Instalacion

### Opcion rapida (script del proyecto)

```bash
composer run setup
```

Este script ejecuta:

1. `composer install`
2. Creacion de `.env` desde `.env.example` (si no existe)
3. `php artisan key:generate`
4. `php artisan migrate --force`
5. `npm install`
6. `npm run build`

### Opcion manual

```bash
composer install
copy .env.example .env
php artisan key:generate
php artisan migrate
npm install
npm run build
```

Si usas Linux/Mac, reemplaza `copy` por:

```bash
cp .env.example .env
```

## Comandos utiles

Levantar entorno de desarrollo completo (servidor, cola, logs y Vite):

```bash
composer run dev
```

Levantar solo backend:

```bash
php artisan serve
```

Levantar solo frontend:

```bash
npm run dev
```

Compilar assets para produccion:

```bash
npm run build
```

## Testing

Ejecutar tests:

```bash
composer run test
```

o

```bash
php artisan test
```

## Flujo de trabajo con Git

### 1) Crear rama de trabajo

```bash
git checkout main
git pull origin main
git checkout -b feature/nombre-cambio
```

### 2) Commits pequenos y descriptivos

Formato recomendado:

- `feat: agrega agenda semanal`
- `fix: corrige validacion de telefono`
- `docs: actualiza readme de instalacion`

### 3) Subir rama y abrir Pull Request

```bash
git add .
git commit -m "feat: descripcion breve"
git push -u origin feature/nombre-cambio
```

### 4) Actualizar tu rama con cambios de main

```bash
git checkout main
git pull origin main
git checkout feature/nombre-cambio
git merge main
```

## Estructura principal

- `app/`: modelos, controladores, middleware y logica principal
- `resources/views/`: vistas Blade
- `resources/js/` y `resources/css/`: frontend
- `routes/`: rutas web, api y consola
- `database/migrations/`: migraciones
- `tests/`: pruebas unitarias y feature
- `scripts/`: utilidades de scheduler en Windows

## Datos de acceso (Entorno de desarrollo)

Las credenciales de administrador se generan automáticamente al ejecutar las migraciones con seeders:

```bash
php artisan migrate:fresh --seed
```

O si prefieres solo los seeders sin resetear migraciones:

```bash
php artisan db:seed
```

Consulta `database/seeders/` para ver los datos que se cargan.

## Notas

- No subir archivos sensibles al repositorio (`.env`, claves, tokens).
- Mantener este README actualizado ante cambios de version o arquitectura.
