Volver a Proyectos

🍺 BirraFinder

Diario de bares con comunidad: geolocaliza locales, puntúa tus visitas y descubre los mejor valorados

Google Maps y Places PWA instalable Rankings comunitarios

Escala del Proyecto

3Vistas principales
2Rankings top 10
16Archivos
2.9kLíneas

Descripción General

Todo el mundo tiene una lista mental de bares recomendados que nunca recuerda cuando hace falta. BirraFinder convierte esa lista en un diario de bares: guardas los sitios que te han recomendado como pendientes, y registras los que ya has visitado con su puntuación.

La exploración se apoya en Google Maps y Places: geolocalización para ver qué hay alrededor ahora mismo, y búsqueda por ciudad o zona para planificar una salida en otro sitio.

La capa que lo diferencia de una nota del móvil es la comunidad: un top 10 de los más visitados por todos los usuarios, otro top 10 por calidad, y un recomendador que sugiere locales aleatorios entre los que han recibido 4 estrellas o más. Y como se usa en la calle, funciona instalada y con soporte offline.

Tecnologías Utilizadas


PHP 8 (MVC ligero)

MySQL / MariaDB

Google Maps API

Places API

JavaScript ES6+

Glassmorphism

PWA

Service Worker

Las Tres Vistas y sus Funciones

🏠 Inicio (dashboard)

Centro de mando: tus estadísticas personales — visitados frente a pendientes — y las tendencias globales de la comunidad.

🗺️ Mapa

Exploración visual con pines. Usa tu ubicación actual o el buscador por ciudad y zona.

📒 Mis bares

Tu colección personal, separada entre lo que quieres visitar y lo que ya conoces.

📅 Lista de pendientes

Los sitios recomendados, guardados para no olvidarlos.

✅ Historial de visitas

Dónde has estado, qué tal fue y qué puntuación le diste.

🔝 Top 10 visitados

Ranking dinámico de los locales más populares entre todos los usuarios.

⭐ Top 10 calidad

Ranking de los mejor valorados por la comunidad.

🎲 Recomendaciones

Sugerencias aleatorias entre los locales con valoración de 4 estrellas o más.

🛠️ Panel de administración

admin/ y dashboard.php para la gestión de la plataforma.

Arquitectura

Backend PHP 8 con un MVC ligero propio en app/ y una API en api/ que consume el frontend. La configuración vive en config/ y el esquema en sql/. Como PWA, tiene su manifest.json y su service-worker.js.

BirraFinder/
├── index.php              # punto de entrada
├── dashboard.php
├── layout_bar_card.php    # componente de tarjeta de bar
├── manifest.json · service-worker.js
├── app/                    # MVC ligero
├── api/                    # endpoints consumidos por el front
├── admin/                  # panel de administración
├── config/
├── sql/
└── css/ · js/ · img/

Integraciones Externas

Google Maps JavaScript API

Renderizado del mapa con los pines de los locales, sobre el que se apoya toda la vista de exploración.

Google Places API

Búsqueda de establecimientos reales por ubicación o por texto, para no tener que mantener un catálogo propio de bares.

Geolocalización del navegador

Detección de la posición del usuario para mostrar qué hay a su alrededor al instante.

Ciclo de Uso

  1. Descubrir: el usuario abre el mapa y ve los locales cercanos a su ubicación, o busca una zona concreta.
  2. Guardar como pendiente: un sitio recomendado se añade a la lista de pendientes para no perderlo.
  3. Visitar y puntuar: tras la visita, el local pasa al historial con su valoración.
  4. Alimentar la comunidad: esa valoración entra en los rankings globales de popularidad y calidad.
  5. Recibir recomendaciones: el sistema sugiere locales con 4 estrellas o más valorados por otros usuarios.

Retos Técnicos y Decisiones de Diseño

No mantener un catálogo propio de bares

Construir y mantener una base de datos de establecimientos es un trabajo sin fin: abren, cierran y cambian de nombre. Apoyarse en Google Places resuelve el problema de raíz: la aplicación solo guarda la relación entre el usuario y el local, y los datos del establecimiento los aporta una fuente que ya se mantiene sola.

De diario personal a producto con comunidad

Un diario privado de bares se abandona en dos semanas porque no devuelve nada. Los rankings globales y el recomendador convierten cada valoración individual en valor para el resto: puntuar deja de ser archivar y pasa a ser contribuir.

Filtrar las recomendaciones por calidad, no por volumen

El recomendador no sugiere al azar entre todo el catálogo: solo entra en el sorteo lo que ha recibido 4 estrellas o más de otros usuarios. Un recomendador que propone sitios mediocres se ignora a la segunda sugerencia.

PWA porque es una app de calle

Se usa decidiendo dónde entrar, en la acera, con mala cobertura. Instalable en la pantalla de inicio y con service worker para consultar los bares guardados sin datos: sin eso, la aplicación falla justo en el momento en que se necesita.

Mi Rol

Desarrollador full stack — autor único.

MVC ligero en PHP, modelo de datos, integración de Maps y Places, lógica de rankings y recomendaciones, frontend con glassmorphism y configuración de la PWA.

Estado del Proyecto

Aplicación funcional con panel de administración, API propia y soporte PWA completo con iconos e instalación.

Código y Enlaces

Requiere una clave de la API de Google Maps y Places, que se configura en config/ y no se incluye en el repositorio.