{"id":34864073,"url":"https://github.com/aaronmasm/bartender-ai-api","last_synced_at":"2026-04-11T11:36:10.374Z","repository":{"id":319152170,"uuid":"1077773516","full_name":"aaronmasm/bartender-ai-api","owner":"aaronmasm","description":"Bartender AI Assistant — an intelligent API powered by Meta Llama 3.3 8B Instruct via OpenRouter, designed to simulate an expert bartender capable of providing realistic cocktail recommendations and maintaining contextual, domain-specific conversations about mixology and beverages.","archived":false,"fork":false,"pushed_at":"2025-12-18T17:02:48.000Z","size":209,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2025-12-21T20:40:39.717Z","etag":null,"topics":["ai","api","axios","openrouter","react-router","reactjs","tailwindcss","typescript","vite","zod","zustand"],"latest_commit_sha":null,"homepage":"https://darling-gelato-12fefb.netlify.app/","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/aaronmasm.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2025-10-16T18:05:48.000Z","updated_at":"2025-12-18T17:02:52.000Z","dependencies_parsed_at":"2025-10-18T08:02:13.804Z","dependency_job_id":"157af7f7-93eb-4129-bf54-d101d14c376f","html_url":"https://github.com/aaronmasm/bartender-ai-api","commit_stats":null,"previous_names":["aaronmasm/bartender-ai-api"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/aaronmasm/bartender-ai-api","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aaronmasm%2Fbartender-ai-api","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aaronmasm%2Fbartender-ai-api/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aaronmasm%2Fbartender-ai-api/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aaronmasm%2Fbartender-ai-api/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/aaronmasm","download_url":"https://codeload.github.com/aaronmasm/bartender-ai-api/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aaronmasm%2Fbartender-ai-api/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31679482,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-11T08:18:19.405Z","status":"ssl_error","status_checked_at":"2026-04-11T08:17:08.892Z","response_time":54,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["ai","api","axios","openrouter","react-router","reactjs","tailwindcss","typescript","vite","zod","zustand"],"created_at":"2025-12-25T21:56:59.590Z","updated_at":"2026-04-11T11:36:10.369Z","avatar_url":"https://github.com/aaronmasm.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Bebidas React TypeScript (Vite)\n\nAplicación web para buscar y explorar recetas de bebidas usando TheCocktailDB, gestionar favoritos y, además, generar recetas con IA mediante OpenRouter.\n\nEste proyecto está construido con React 18, TypeScript y Vite, estilado con Tailwind CSS, gestión de estado con Zustand y validaciones con Zod.\n\n## Tabla de contenidos\n- Visión general\n- Requisitos\n- Stack y herramientas\n- Puesta en marcha (setup)\n- Comandos de desarrollo y scripts\n- Variables de entorno\n- Estructura del proyecto\n- Puntos de entrada (entry points)\n- Licencia\n\n## Visión general\n- Búsqueda de bebidas por ingrediente y categoría utilizando TheCocktailDB.\n- Visualización del detalle de una receta y gestión de favoritos (localStorage).\n- Generación de recetas con IA en streaming usando OpenRouter (AI SDK).\n- Enrutamiento con React Router (rutas: `/`, `/favoritos`, `/generate`).\n\n## Requisitos\n- Node.js 18 o superior (recomendado por Vite 6)\n- npm 9+ o compatible (se usa npm; existe `package-lock.json`)\n\n## Stack y herramientas\n- Lenguaje: TypeScript\n- Framework UI: React 18\n- Bundler/Dev server: Vite 6 (`@vitejs/plugin-react-swc`)\n- Estilos: Tailwind CSS + PostCSS + Autoprefixer\n- Estado global: Zustand (con middleware devtools)\n- Routing: React Router DOM 7\n- HTTP: Axios\n- Validación de datos: Zod\n- IA: AI SDK (`ai`) + OpenRouter provider (`@openrouter/ai-sdk-provider`)\n- Linting: ESLint 9 + TypeScript ESLint + plugins de React\n- Prettier (formateo)\n\n## Puesta en marcha (setup)\n1. Clonar el repositorio.\n2. Instalar dependencias:\n   - `npm install`\n3. Configurar variables de entorno (ver sección Variables de entorno).\n4. Ejecutar en desarrollo:\n   - `npm run dev`\n\n## Comandos de desarrollo y scripts\nDefinidos en `package.json`:\n- `npm run dev`: inicia el servidor de desarrollo de Vite.\n- `npm run build`: compila TypeScript (`tsc -b`) y genera el build de producción con Vite.\n- `npm run preview`: sirve el build de producción localmente para previsualización.\n- `npm run lint`: ejecuta ESLint sobre el proyecto.\n\n## Variables de entorno\nCrear un archivo `.env` en la raíz con las siguientes variables (prefijo `VITE_` para que estén disponibles en el cliente):\n\n- `VITE_OPENROUTER_KEY`: API Key de OpenRouter para la generación de recetas con IA.\n\nEjemplo de `.env`:\n```\nVITE_OPENROUTER_KEY=sk-or-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx\n```\nNotas:\n- No compartas claves reales en el repositorio. Asegura que `.env` esté en `.gitignore` (este repo ya incluye `.gitignore`).\n- El consumo de TheCocktailDB se realiza contra la URL pública (no requiere clave): `https://www.thecocktaildb.com/api/json/v1/1/`.\n\n## Estructura del proyecto\nRaíz relevante:\n- `index.html`: HTML base con el contenedor `#root`.\n- `vite.config.ts`: configuración de Vite y React SWC.\n- `tailwind.config.js`, `postcss.config.js`: configuración de estilos.\n- `tsconfig*.json`: configuración de TypeScript.\n- `eslint.config.js`: configuración de ESLint.\n- `src/`: código fuente de la app.\n  - `main.tsx`: entrada de la app; monta el router.\n  - `router.tsx`: definición de rutas y lazy loading de vistas.\n  - `layouts/Layout.tsx`: layout principal con Header, Modal y Notification.\n  - `components/`: componentes UI (Header, Modal, Notification, DrinkCard, etc.).\n  - `views/`: páginas (`IndexPage`, `FavoritesPage`, `GenerateAI`).\n  - `stores/`: slices de Zustand (`recipeSlice`, `favoritesSlice`, `notificationSlice`, `aiSlice`) y `useAppStore`.\n  - `services/`: acceso a datos (`RecipeService` para TheCocktailDB, `AIService` para IA).\n  - `lib/`: utilidades de integración (`axios` con baseURL de TheCocktailDB, `ai` con provider de OpenRouter).\n  - `utils/`: esquemas Zod y helpers (por ejemplo `recipes-schema`).\n  - `types/`: tipos TypeScript compartidos.\n  - `index.css`: estilos globales (incluye Tailwind).\n\n## Puntos de entrada (entry points)\n- HTML: `index.html` con `\u003cdiv id=\"root\"\u003e\u003c/div\u003e`.\n- JavaScript/TypeScript: `src/main.tsx` crea la raíz de React y renderiza `\u003cAppRouter /\u003e`.\n- Router: `src/router.tsx` expone rutas principales (`/`, `/favoritos`, `/generate`).\n\n## Integraciones y endpoints\n- TheCocktailDB (pública):\n  - Base URL configurada en `src/lib/axios.ts`: `https://www.thecocktaildb.com/api/json/v1/1/`\n  - Endpoints utilizados en `src/services/RecipeService.ts`:\n    - `/list.php?c=list` (categorías)\n    - `/filter.php?c={category}\u0026i={ingredient}` (búsqueda)\n    - `/lookup.php?i={id}` (detalle por ID)\n- OpenRouter (IA):\n  - Provider configurado en `src/lib/ai.ts` usando `VITE_OPENROUTER_KEY`.\n  - `src/services/AIService.ts` usa el modelo `meta-llama/llama-3.3-8b-instruct:free` y `streamText` del SDK.\n\n## Cómo ejecutar\n- Desarrollo: `npm run dev` y visitar la URL que muestre Vite (por defecto `http://localhost:5173`).\n- Linter: `npm run lint`.\n- Build: `npm run build` genera la carpeta `dist/`.\n- Preview del build: `npm run preview`.\n\n\n## Licencia\nEste proyecto está licenciado bajo la licencia MIT. Consulta el archivo [LICENSE](./LICENSE) para más detalles.\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Faaronmasm%2Fbartender-ai-api","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Faaronmasm%2Fbartender-ai-api","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Faaronmasm%2Fbartender-ai-api/lists"}