2nd Place — Huawei Developer Competition LATAM (Brasil) 2025
Mobile-first PWA that empowers beekeepers with AI-driven hive health detection, alerts, and actionable recommendations.
HoneyRoute helps smallholder beekeepers and cooperative administrators detect hive issues (e.g., Varroa risk), receive AI-based recommendations, and log actions even offline.
It’s designed for low-connectivity rural areas, providing multilingual (EN/ES-MX) support and offline-first synchronization.
- 📸 Photo-based AI analysis — capture and detect health risks (e.g., pests, diseases).
⚠️ Alert system — severity-filtered inbox and resolution tracking.- 🧭 Hive management — create, view, and track hives with history and KPIs.
- 🌍 Map view — visualize apiaries and risk zones.
- 🌐 Bilingual + offline mode — full i18n (EN/ES-MX) and background sync.
- 🔐 Privacy-first — local data storage, consent-based camera & GPS.
| Layer | Technology |
|---|---|
| Frontend | React + TypeScript + Tailwind + Next.js SSR |
| Backend | Node.js + REST/GraphQL API |
| Architecture | pnpm monorepo + TurboRepo + Husky + Commitlint + CI/CD |
| AI Integration | Custom API for hive image risk analysis |
| Offline | Service Workers + IndexedDB queue system |
| i18n | EN base + ES-MX localization |
- Capture/Upload hive image
- AI evaluates risk level (low/medium/high)
- Recommendations generated dynamically
- User logs actions → synced once online
- Designed 22 responsive interfaces in Figma (mobile-first).
- UI based on 8pt grid, AA contrast, and inclusive copywriting.
- Components: Buttons, Cards, Tabs, Toasts, Modals, Badges.
- Accessibility: WCAG 2.2 AA (focus rings, 44×44 touch targets).
frontend/ → React + Tailwind + i18n + offline logic backend/ → API handlers docs/ → SRS + Design Spec + Brand Sheet scripts/ → CI/CD + automation
pnpm install
pnpm bootstrap
cp frontend/.env.example frontend/.env.local cp backend/.env.example backend/.env
docker compose up -d
pnpm dev
- Stack • Frontend: Next.js (App Router), TypeScript, Tailwind v3, PostCSS, autoprefixer. • Backend: NestJS (TypeScript), (mock /analysis included). • Tooling: PNPM workspaces, Turborepo, Husky + lint-staged, Commitlint, Prettier. • CI: GitHub Actions separated per package (frontend/** and backend/). • Backend: NestJS (TypeScript), (mock /analysis included). • Tooling: PNPM workspaces, Turborepo, Husky + lint-staged, Commitlint, Prettier. • CI: GitHub Actions separated per package (frontend/ and backend/**).
Note: We pinned Tailwind v3 for stability. (If someone installs v4 you’ll get an error with the PostCSS plugin; see “Troubleshooting.”)
- Requirements • Node.js 20 (ideally with nvm)
- Requirements • Node.js 20 (ideally with nvm) echo "20" > .nvmrc && nvm use • pnpm 9.x corepack disable && npm i -g pnpm@9.7.0 • Git y VS Code (recomendado). • Docker Desktop (only if you’ll use local Postgres/Redis): brew install --cask docker • Docker Desktop (only if you’ll use local Postgres/Redis): brew install --cask docker
pnpm dev
# Or per package:
# Or per package:
pnpm --filter frontend dev
pnpm --filter backend dev
Root • pnpm dev → runs frontend + backend in parallel (Turbo). • pnpm build / pnpm lint / pnpm test → run per package. • pnpm bootstrap → creates Next/Nest scaffolds. • pnpm prepare → installs Husky (git hooks). Root • pnpm dev → runs frontend + backend in parallel (Turbo). • pnpm build / pnpm lint / pnpm test → run per package. • pnpm bootstrap → creates Next/Nest scaffolds. • pnpm prepare → installs Husky (git hooks).
Frontend • pnpm --filter frontend dev → Next dev on http://localhost:3000. • pnpm --filter frontend build → production build. • pnpm --filter frontend dev → Next dev on http://localhost:3000. • pnpm --filter frontend build → production build.
Backend • pnpm --filter backend dev → Nest dev on http://localhost:3001 (with CORS). • Mock endpoints: • pnpm --filter backend dev → Nest dev on http://localhost:3001 (with CORS). • Mock endpoints: • POST /analysis → { jobId } • GET /analysis/:jobId → { status: "done", riskLevel: "medium" }
-
Environment variables frontend/.env.local NEXT_PUBLIC_API_URL=http://localhost:3001 NEXT_PUBLIC_APP_NAME=HoneyRoute NEXT_PUBLIC_DEFAULT_LOCALE=en backend/.env DATABASE_URL=postgres://postgres:postgres@localhost:5432/honeyroute REDIS_URL=redis://localhost:6379 JWT_SECRET=change-me S3_ENDPOINT= S3_BUCKET= S3_ACCESS_KEY_ID= S3_SECRET_ACCESS_KEY= For CI/Prod, configure Secrets in GitHub (Settings → Secrets and variables → Actions).
-
Branch flow & collaboration • main: protected, stable (only approved PRs). • develop: feature integration. • features: feat/<área>- (p. ej. feat/ui-tabbar), fixes: fix/<área>-.
Conventions: • Commits: Conventional Commits (feat:, fix:, chore:, docs:, refactor:, test:). • PRs: use template; add screenshots; ensure CI passes. • Merge: Squash & Merge into develop. From develop → main under release/tag (when applicable). • PRs: use template; add screenshots; ensure CI passes. • Merge: Squash & Merge into develop. From develop → main under release/tag (when applicable).
Checklist before to open PR: • pnpm lint and pnpm build OK. • Visible focus / basic accessibility (Tab keys). • Update docs if applicable. • CI Frontend runs on changes under frontend/. • CI Backend runs on changes under backend/. • See .github/workflows/.yml. Jobs run: install → lint/test (best-effort) → build. Checklist before to open PR: • pnpm lint and pnpm build OK. • Visible focus / basic accessibility (Tab keys). • Update docs if applicable. • CI Frontend runs on changes under frontend/. • CI Backend runs on changes under backend/. • See .github/workflows/.yml. Jobs run: install → lint/test (best-effort) → build.
⸻
PWA (installable app) • next-pwa configurado en frontend/next.config.mjs. • SW se registra solo en producción (NODE_ENV=production). • Fallback offline en /offline. • Manifest • src/app/manifest.ts (App Router). • (Opcional) public/manifest.webmanifest si lo quieres servir estático. • Íconos • public/icons/favicon.png • public/icons/apple-touch-icon.png • public/icons/maskable.png (192x192 y 512x512) • public/icons/logo-honeyroute-amber-1024.png (opcional para UI) Build & run prod (necesario para SW) pnpm --filter frontend build pnpm --filter frontend start -H 0.0.0.0 -p 3002 Probar en el teléfono (misma red)
- Asegúrate de correr production server (no dev).
- Expón tu app con Cloudflare Tunnel: cloudflared tunnel --url http://localhost:3002
- Abre la URL https://.trycloudflare.com en el móvil.
- “Add to Home Screen” / “Instalar app”.
| Role | Name |
|---|---|
| Product & Front-End Lead | Azul Grisel Ramírez Kuri |
| Backend & Data | Héctor Valdés |
https://honeyroute.netlify.app/onboarding
© 2025 HoneyRoute — Powered by EcoVentus. All rights reserved.