Skip to content

Repository files navigation

Horely

License: MIT Live Demo Next.js TypeScript Tailwind CSS Prisma Dokploy

Plataforma de reserva de turnos online (Demo en vivo). El demo incluye un negocio de ejemplo (Barbería Norte) con dos caras:

  • Vista pública (/): el cliente elige servicio, profesional, día y horario en un calendario semanal, deja sus datos y recibe un ticket de confirmación. Diseñada mobile-first, porque la mayoría reserva desde el celular.
  • Panel de administración (/admin): agenda del día y de la semana, con acciones para marcar turnos como completados o cancelados, y métricas simples (turnos de la semana, servicio más pedido, horarios pico).

⚠️ Demo / Portfolio Showcase por Lykos - Performance-Driven Web Solutions
Este repositorio es un showcase técnico y demostración comercial. No contiene autenticación, pasarela de pagos ni multi-tenant. El acceso a /admin es público y los turnos se abonan en el local.
No utilizar en producción sin implementar autenticación, backups, control de acceso y SSL.


🌐 English Summary

Horely is an online appointment booking platform built with Next.js 16 (App Router), TypeScript, Tailwind CSS v4, Prisma, and SQLite.

Features include:

  • Public Booking View (/): Mobile-first design where clients select services, staff members, dates, and time slots to receive a confirmation ticket.
  • Admin Panel (//admin): Real-time daily and weekly agenda management with appointment status controls (completed/canceled) and key analytics (weekly bookings, top services, peak hours).

Created as a technical portfolio showcase by Lykos - Performance-Driven Web Solutions.

Capturas

Vista pública de reserva (mobile)

Elegir servicio Día y horario Ticket de confirmación
Paso 1: elegir servicio Paso 3: elegir día y horario Turno confirmado

Panel de administración

Agenda del día, con acciones para completar o cancelar turnos:

Agenda del día

Vista semanal:

Agenda de la semana

Métricas de la semana — turnos, ingresos estimados, servicio más pedido y horarios pico:

Métricas

Stack

Cómo correrlo localmente

Requisitos: Node.js 20 o superior.

# 1. Instalar dependencias
npm install

# 2. Configurar variables de entorno
cp .env.example .env

# 3. Crear la base SQLite y cargar datos de ejemplo
#    (3 profesionales, 3 servicios y ~40 turnos entre la semana pasada y la próxima)
npm run db:setup

# 4. Levantar el servidor de desarrollo
npm run dev

Abrí http://localhost:3000 para la vista pública y http://localhost:3000/admin para el panel.

Para volver a generar los datos de ejemplo en cualquier momento:

npm run db:seed

El seed genera los turnos en fechas relativas a hoy, así la agenda siempre se ve poblada.

Deploy en producción (Dokploy)

El proyecto está preparado para correr en Dokploy con SQLite sobre un volumen persistente:

  • Variable de entorno: DATABASE_URL=file:/app/data/horely.db
  • Volumen: montar un volumen en /app/data (ahí vive la base SQLite)
  • Build: npm run build — corre prisma generate y después next build
  • Start: npm run start — aplica las migraciones pendientes con prisma migrate deploy, ejecuta el seed solo si la base está vacía (primer deploy), y levanta next start

En cada redeploy las migraciones se aplican automáticamente y los datos del volumen se conservan: el seed nunca pisa una base con datos. Para regenerar los datos de ejemplo en producción, borrá el archivo de la base del volumen y redeployá.

Estructura

app/
  page.tsx              # Vista pública de reserva
  actions.ts            # Server actions: crear reserva, cambiar estado
  api/slots/            # Disponibilidad de horarios
  admin/                # Agenda del día, semana y métricas
components/
  booking/              # Flujo de reserva y ticket de confirmación
  admin/                # Navegación y badges del panel
lib/
  availability.ts       # Lógica de horarios libres
  format.ts             # Fechas y moneda en es-AR
prisma/
  schema.prisma         # Professional, Service, Appointment
  seed.mjs              # Datos de ejemplo (--if-empty en producción)

Licencia

MIT © 2026 Lykos - Performance-Driven Web Solutions

About

Online appointment booking platform & real-time admin dashboard built with Next.js 16, TypeScript, Prisma, and Tailwind CSS v4.

Topics

Resources

Contributing

Security policy

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages