Portafolio · App móvil · Miel cruda

Un Millón de Flores · App

App Android en Flutter, sin servidor propio: comparte todo con el sitio.

Cliente
Un Millón de Flores
Tipo
App móvil
Año
2026
Estado
Publicada
Un Millón de Flores · App — App móvil · Miel cruda

El encargo

Qué se resolvió.

App oficial de Un Millón de Flores en Flutter, solo Android: el mismo armador de pedidos del sitio, los mismos artículos de la Academia de la Miel y cuatro minijuegos de la colmena dibujados a mano. No tiene backend propio — lee productos, precios y contenido directo de la misma infraestructura que ya usa el sitio web.

Cómo funciona por dentro

La marca ya tenía un sitio completo — armador de pedidos, Academia de la Miel, panel de administración — así que la app Android no podía significar construir todo eso de nuevo. Tenía que sentirse nativa, dar algo que el sitio no da (un minijuego, lectura sin abrir el navegador), y no sumar ni un servidor, ni una base de datos, ni un panel más que mantener.

El resultado es una app Flutter sin backend propio: lee productos y precios directo de la misma API de Firestore que ya usa el sitio, y los artículos de la Academia de un endpoint estático agregado al sitio solo para esto. Un pedido armado en la app cae en la misma colección que ve el dueño en `/admin` — no hay un panel de la app aparte.

App AndroidFlutter, sin backend propio
Arma su pedidoel mismo flujo del sitio
Firestore + academia.jsonmismo proyecto que el sitio
Panel /adminel mismo del sitio web
WhatsAppahí se cierra la venta

En simple: la app no tiene servidor propio: consulta la misma API REST de Firestore que el sitio, con la misma clave pública sin privilegios especiales. Los artículos de la Academia llegan por un endpoint estático (academia.json) agregado al sitio solo para esto. Un pedido armado en la app se guarda en la misma colección que usa el panel web, marcado con origenApp — el dueño ve todo en un solo lugar, venga de donde venga.

Pantalla de inicio de la app de Un Millón de Flores, con accesos a Academia, Juegos y Miel
01

Sin backend propio: comparte todo con el sitio

Ni SDK nativo de Firebase, ni google-services.json, ni un panel aparte — la app consulta directo lo que el sitio ya expone.

  1. 1

    Productos y precios por API REST de Firestore

    Mismo proyecto y misma clave pública sin privilegios que el sitio ya expone en su bundle JS, protegida por las reglas de seguridad de Firestore, no por secreto — no hace falta un SDK nativo de Firebase.

  2. 2

    Un pedido de la app aparece en el mismo panel

    Se guarda en la misma colección que usa el sitio, marcado con origenApp: true, de forma best-effort — si el guardado falla, nunca bloquea el camino a WhatsApp.

  3. 3

    El mismo sistema de diseño, reproducido a mano

    La paleta y tipografía del theme.css del sitio (crema, tinta chocolate, oro, Newsreader + Inter) están reproducidas en Flutter, para que la app y la web se sientan como un mismo producto.

Selector de los cuatro minijuegos de la colmena
Elegir juego
Partida en curso de El vuelo de la obrera, con la abeja esquivando una flor
En juego
02

Cuatro minijuegos que no necesitan señal

Lo que el sitio no puede dar: algo para hacer con el teléfono mientras llega el pedido, dibujado a mano y sin depender de internet.

  1. 1

    Cuatro juegos, cero conexión ni compras

    "El vuelo de la obrera" (al estilo del dinosaurio de Chrome, pero con una abeja), "Atrapa el polen", "Memoria del panal" y "El vuelo veloz" — ninguno necesita señal, todos son solo para pasar el rato.

  2. 2

    Dibujado a mano, sin motor de juego

    El vuelo de la obrera corre sobre CustomPainter con una física propia cuadro a cuadro — gravedad, velocidad de salto, rampa de velocidad hasta un tope — sin ninguna librería de juegos externa.

  3. 3

    Tres dificultades, mejor puntaje en el teléfono

    Fácil, normal y difícil; el mejor puntaje queda guardado localmente (shared_preferences) de una partida a la otra.

Índice de la Academia de la Miel en el sitio web — la app muestra el mismo contenido, servido por un endpoint aparte
La misma Academia del sitio, servida por un endpoint aparte
03

La Academia, sin duplicar el contenido

Un artículo nuevo en el sitio aparece solo en la app — sin panel aparte, sin volver a publicar nada.

  1. 1

    Un endpoint estático, agregado al sitio solo para esto

    GET /academia.json expone la misma colección de contenido que usa /academia en la web — el dueño publica un artículo una sola vez y aparece en los dos lugares.

  2. 2

    Lectura completa en markdown, sin salir de la app

    Los artículos se renderizan enteros dentro de la app, con el mismo sistema de diseño, sin abrir el navegador ni perder el contexto.

  3. 3

    Cero pasos extra para publicar

    Agregar un artículo en el sitio (un .md nuevo en la Academia) es agregar un artículo en la app — no hay un segundo lugar donde escribir el mismo contenido dos veces.

Integraciones

Con qué habla el sistema.

Firebase · API REST, sin SDK nativo

Mismo proyecto multi-tenant que usa el sitio web, mismo prefijo umdf_ para no cruzarse con otras tiendas de la misma infraestructura.

WhatsApp Business

El mismo cierre de venta que la web: enlace directo con el mensaje redactado, al canal correcto según la región del cliente.

Endpoint estático academia.json

El puente entre el Content Collection de Astro del sitio y la app — contenido publicado una vez, servido en dos productos.

CustomPainter (Flutter)

Los cuatro minijuegos y los widgets de marca (Ámbares, Cucharadita) dibujados a mano, sin motor de juego ni dependencias gráficas externas.

0servidores propios — usa la infraestructura del sitio
4minijuegos, ninguno necesita señal
1endpoint conecta el contenido del sitio con la app
100%Flutter y Android, sin backend a medida

¿Tienes un proyecto parecido?

Cuéntanos qué necesitas. Te respondemos con un plan concreto para tu caso, no con una plantilla genérica.