Skip to main content

Documentation Index

Fetch the complete documentation index at: https://mintlify.com/JuanSebasSV/healtyhelp/llms.txt

Use this file to discover all available pages before exploring further.

HealtyHelp is an open-source, full-stack healthy eating platform that helps users discover nutritious recipes, track their daily food consumption, and get personalized dietary guidance through an AI-powered chatbot. It pairs a modern React frontend with a hardened Express REST API, storing all data in MongoDB and integrating cloud services for AI inference, image hosting, and authentication. The project lives in a monorepo with two top-level packages — client/ (React/Vite) and server/ (Express/Node.js) — and can be self-hosted or deployed to any cloud provider.

Tech Stack

LayerTechnology
FrontendReact 19, Vite 7, React Router v7, Axios
BackendExpress 5, Node.js 18+, Nodemon (dev)
DatabaseMongoDB via Mongoose 8
AI / ChatbotGroq SDK with LLaMA 3.3 70B (llama-3.3-70b-versatile)
Image StorageCloudinary (upload, moderation, public CDN delivery)
AuthenticationJWT (jsonwebtoken) + Google OAuth 2.0 via Passport.js (passport-google-oauth20 + passport-jwt)
EmailResend API (resend.com) for password reset and admin invitation emails
SecurityHelmet, HPP, XSS filter, express-rate-limit, bcryptjs
PDF ExportjsPDF + html2canvas (client-side)

User-Facing Features

Recipe Catalog

Browse a full recipe library organized by meal type (desayuno, almuerzo, cena, postres-snacks) and health tags. Each recipe exposes a rich nutritional profile — macros, vitamins, minerals, amino acids, and fatty acids — sourced from the nutri sub-document in the Recipe model. Users can filter by health conditions, category, and meal time using the useFiltroSalud hook.

NutriBot AI Chatbot

NutriBot is an always-accessible floating assistant powered by Groq’s LLaMA 3.3 70B model. It answers questions about nutrition, recipes, and healthy eating. The system prompt is configurable by admins via the AIConfig collection. Conversation history (last 10 messages) is preserved in memory using the useChatStore hook — the chat state persists across route changes without a global store library.

Nutrition Tracking

Authenticated users log meals with the Consumo model, which snapshots the recipe’s nutritional data at the time of consumption. The tracking view (VistaSeguimiento) displays consumption history with date filters and nutritional summaries in the Bogotá timezone.

Favorites

Users can save up to a configurable number of recipes as favorites. Favorites are stored on the User document (favoritos field, array of ObjectId refs) and synced to the server in real time via the /api/favoritos endpoint with optimistic UI updates.

Personalized Recommendations

The /api/recomendaciones endpoint returns recipe suggestions based on the user’s health profile (healthProfile.condiciones, healthProfile.categorias, and dietary preferences), driving a tailored home feed.

Dark Mode

A global dark mode toggle (modoOscuro state in App.jsx) persists the user’s preference to localStorage and applies the modo-oscuro CSS class to document.body.

PDF Export

Users can export their nutrition tracking data or recipe details as a PDF file directly from the browser using jsPDF and html2canvas — no server round-trip required.

Review System

Users can leave star ratings (1–5) and text reviews on recipes. Reviews support nested replies, likes/dislikes, and optional image attachments that go through an admin approval workflow before becoming publicly visible.

Notifications

In-app notifications (Notification model) alert users to new replies on their reviews, admin messages, and newly published recipes. Unread counts are surfaced in the navbar.

Admin Capabilities

All admin routes are protected by both the protect JWT middleware and the admin role middleware, which performs a fresh database lookup on every request.
CapabilityDetails
User ManagementView all users, verify accounts, change roles
BanningTemporary or permanent bans with a reason (baneado, baneadoHasta, baneadoMotivo fields on User)
Recipe CRUDCreate, update, and delete individual recipes via RecipeManagement
Bulk Import / ExportImport recipes from JSON and export the full catalog — logged to AdminLog as IMPORT_RECIPES / EXPORT_RECIPES
Image ModerationApprove or reject user-submitted review images (ImagenesAprobacion); images are stored on Cloudinary with estado: 'pendiente' until reviewed
AI Prompt ConfigEdit the NutriBot system prompt stored in the AIConfig collection via PanelIA
Terms VersioningPublish new versions of the Terms & Conditions through TermsManager; users are prompted to re-accept on next login when their stored termsVersion differs from the current active version
Admin InvitationsSuper-admins invite new admins by email using time-limited tokens (AdminInvitation model with TTL index)
Audit LogsEvery admin action is recorded in AdminLog with action type, target user, metadata, IP address, and user agent

Quick Navigation

Quickstart

Run HealtyHelp locally in under 10 minutes — clone, configure, and log in.

Architecture

Understand how the frontend, API, database, and third-party integrations fit together.

Authentication

JWT flows, Google OAuth, email verification, and the admin role system explained.

API Reference

Complete reference for every REST endpoint exposed by the Express server.

Build docs developers (and LLMs) love