菜单内容以 JSON 数据存放在 src/data/,更新产品无需修改组件
dessert-page — Vue 企业官网模板
作者 LeonelRosado2407
面向墨西哥风格咖啡烘焙店的企业官网与在线菜单模板,使用 Vue 3、TypeScript 与 Tailwind CSS 构建,内容以 JSON 数据驱动。
看看你的网站会是什么样
浏览真实页面截图,比较内容排版与手机效果。点击下方缩略图切换,放大查看整页细节。
全部页面与视图 3
截图用于了解视觉与布局,交互效果请以实际项目为准。
值得关注的模板亮点
从已有项目资料中,快速了解它的特点。
搜索忽略重音符号,同时匹配产品名称与描述
收藏状态通过 localStorage 持久化,并提供独立筛选视图
搜索与筛选条件同步到 URL 查询字符串,可分享并支持浏览器历史导航
根据营业时间自动显示“Abierto ahora / Cerrado”状态
遵循 prefers-reduced-motion,系统开启后禁用动画与平滑滚动
模板详细介绍
这是一个虚构墨西哥咖啡烘焙品牌的官网与在线菜单项目,使用 Vue 3、TypeScript、Vite 与 Tailwind CSS 构建,部署在 Vercel 上。页面包含首页各区块、产品菜单、品牌故事与 404 页面,桌面端与移动端分别采用侧边栏和横向 chips 进行菜单分类导航。
菜单收录 33 个产品,按分类与子分类组织,价格以墨西哥比索显示,特殊订单标注“Por cotizar”。搜索支持忽略重音符号,可同时匹配名称与描述;收藏功能通过 localStorage 持久化并提供独立筛选。搜索词与筛选条件同步到 URL 查询字符串,可分享且支持浏览器前进后退。产品详情页含图库与支持键盘操作的 lightbox。
交互方面使用 IntersectionObserver 实现滚动动画、卡片错峰出现、页面切换过渡与悬停微交互,并遵循 prefers-reduced-motion 设置。页面根据营业时间计算“Abierto ahora / Cerrado”状态,故事页含随滚动绘制的横向时间线,图片缺失或加载失败时显示品牌色占位图。
所有内容(产品、公司信息、营业时间、故事、FAQ、评价)存放在 src/data/ 的 JSON 文件中,修改菜单无需改动组件。项目包含 Vitest 单元测试与 Playwright 端到端测试,并通过 GitHub Actions 在推送和 PR 时执行 lint、类型检查、测试与构建。代码采用 MIT 许可,但演示照片仅作展示用途,版权归各自作者;业务信息与联系方式均为虚构。
适合你的项目吗?
适用场景
- 为咖啡店或烘焙店搭建带在线菜单的品牌官网
- 需要按分类浏览产品并展示价格与详情的餐饮类站点
- 希望用 JSON 数据文件维护菜单内容、避免频繁改动前端代码的项目
- 需要搜索、收藏与可分享筛选链接的菜单浏览体验
适合人群
- 咖啡店、烘焙店等小型餐饮商家的官网与菜单展示
- 使用 Vue 3 与 TypeScript 技术栈的前端开发者参考
- 需要将内容与组件分离、便于后续接入 CMS 或 API 的项目
上手与定制指南
结合仓库当前版本的说明,按下面的资料检查内容、配置与运行要求。
- 1
需要 Node ^22.18.0 或 >=24.12.0
- 2
安装依赖后运行 npm run dev 启动开发服务器,npm run build 执行类型检查与生产构建
- 3
单元测试使用 npm run test:unit 或 npx vitest run,端到端测试需先执行 npx playwright install 再运行 npm run test:e2e
- 4
代码为 MIT 许可,但演示照片版权归各自作者,业务信息与联系方式均为虚构,正式使用前需替换
授权与来源资料
使用条件与限制
免费使用 · 保留许可声明本次收录的是公开仓库中采用 MIT 许可的免费版本;免费范围为该版本代码,不代表外部服务或第三方素材免费。
使用时需要遵守
- 允许免费使用、修改、商用和分发该版本代码。
- 分发代码副本或实质性部分时,保留原作者版权声明和完整 MIT 许可声明。
- 代码按现状提供;担保与责任限制以原许可证及适用法律为准。
额外费用与待核对事项
- 演示图片、字体、图标及其他第三方素材需按各自许可核对,不能仅凭代码的 MIT 许可判断。
- 域名、托管、数据库、支付或 AI 等外部服务可能另外收费。
- 演示照片仅用于展示,版权归各自作者所有,正式使用前需自行替换或取得授权。
- 项目中的商家信息、联系方式与品牌故事均为虚构内容,正式上线前必须替换为真实信息。
查看原文依据
Permission is hereby granted, free of charge
许可证原文
Las fotografías se incluyen solo como demostración y pertenecen a sus respectivos autores.
README 原文
https://github.com/LeonelRosado2407/dessert-page/blob/main/LICENSEhttps://github.com/LeonelRosado2407/dessert-page/blob/main/README.md> El negocio, sus datos de contacto y su historia son ficticios.
README 原文
DeepSeek 根据仓库许可证和 README 整理 ·2026-10-10。结果仅覆盖已读取资料,依赖、图片、字体及后续条款变更以各自原文为准。
项目核对记录与介绍依据
模板资料
- 来源平台
- GitHub
- 资料与维护参考分
- 资料较完整 · 80 / 100
- 技术栈
- Vue
- 网站类型
- 企业官网
这个分数如何计算
本站按许可资料(最高30分)、演示链接(12分)、预览图(10分)、Star数(15分)、记录的维护时间(15分)、描述完整度(8分)、功能记录(5分)和分类资料(5分)计算。它不是代码、安全或性能测试,也不是 Google 评分;有链接不代表已实测可用。
这个项目需要核对什么
- 记录的仓库更新时间
- 2026-10-10
- 截图检查日期
- 2026-10-10
已收录演示链接。请用你的内容与屏幕尺寸检查;有演示不代表表单、认证或支付已经可用。
目录记录的主要技术栈是 Vue。请通过依赖清单和锁文件核对实际版本与托管要求。这些说明基于收录资料,不代表代码审计或部署实测。
查看具体选型方法 →介绍的制作与核对状态
介绍由 AI 辅助整理目录与仓库资料。仓库作者不等于这篇介绍的审核者。
审核声明: [email protected] · 2026-10-10
查看当时使用的来源资料
SHA-256: a16990d429b66b1f4da9d25e88295c24a25d3e9435fa24d7ca916643331204c8
2026-10-10T04:31:43.403Z
来源文件 / 仓库# Dulce Tentación · Café y repostería artesanal
[](https://github.com/LeonelRosado2407/dessert-page/actions/workflows/ci.yml)
[](https://dulce.leonelrosado.dev)
[](LICENSE)






Sitio web y **menú en línea** para una cafetería-pastelería mexicana (ficticia). El objetivo: una página vistosa, con animaciones suaves e interacciones claras, que además le sirva al cliente para consultar el menú, los precios y el horario desde el celular.
**Demo:** [dulce.leonelrosado.dev](https://dulce.leonelrosado.dev)

## Funcionalidades
**Menú en línea**
- 33 productos agrupados por categoría y subcategoría, con precio en MXN ("Por cotizar" en pedidos especiales).
- **Búsqueda sin acentos**: "cafe" encuentra "Café"; busca en nombre y descripción.
- **Favoritos** persistentes (`localStorage`) con filtro dedicado.
- La búsqueda y los filtros viven en la URL (`/productos?q=cafe&fav=1`): se pueden compartir y sobreviven al botón de atrás.
- Navegación por categorías: barra lateral en escritorio y chips horizontales en móvil, ambas resaltan la sección visible.
- Detalle de producto con galería y **lightbox** (teclado, flechas y cierre con Escape).
**Diseño e interacción**
- Animaciones al hacer scroll con `IntersectionObserver`, aparición escalonada de tarjetas, transiciones entre páginas y micro-interacciones (corazón con "pop", hover con zoom).
- Respeta `prefers-reduced-motion`: si el sistema lo pide, se desactivan animaciones y scroll suave.
- Indicador **"Abierto ahora / Cerrado"** calculado a partir del horario.
- Página de **Historia** con línea de tiempo que se dibuja conforme avanzas.
- Placeholder con la paleta del sitio cuando una foto no existe o falla al cargar.
- Responsive de 375px en adelante, navbar con menú hamburguesa, página 404 y títulos por ruta.
| Menú (escritorio) | Búsqueda (móvil) | Lightbox (móvil) |
| --- | --- | --- |
|  |  |  |

## Stack
- **Vue 3** (Composition API, `<script setup>`) + **TypeScript**
- **Vite** como bundler y servidor de desarrollo
- **Tailwind CSS v4** con tokens de diseño propios (`@theme`)
- **Vue Router** (rutas lazy, `scrollBehavior` personalizado) y **Pinia**
- **Vitest** + **Vue Test Utils** para pruebas unitarias y de componentes
- **Playwright** para pruebas end-to-end
- **GitHub Actions**: lint, type-check, pruebas y build en cada push y PR
- **oxlint + ESLint + Prettier**
- Desplegado en **Vercel**
## Decisiones técnicas
- **Contenido como datos.** Todo el contenido (productos, empresa, horario, historia, FAQ, reseñas) está en JSON dentro de `src/data/`. Cambiar el menú no requiere tocar componentes, y la estructura está lista para migrar a un CMS o API.
- **Estado en la URL.** Los filtros del menú se sincronizan con la query string en ambos sentidos. El `scrollBehavior` del router ignora los cambios de query en la misma página, para que escribir en el buscador no mueva el scroll, y restaura la posición al volver.
- **Animaciones sin conflictos.** En las tarjetas, un contenedor maneja la aparición (con retraso escalonado) y otro el hover (sin retraso), así el `transition-delay` no hace lento el hover.
- **Accesibilidad.** Links reales en las tarjetas (navegables con teclado), `aria-label`/`aria-pressed` en favoritos, diálogo modal accesible en el lightbox y soporte de movimiento reducido.
- **Rendimiento.** Imágenes redimensionadas y comprimidas, `loading="lazy"` y rutas con carga diferida.
## Estructura
```
src/
├── components/
│ ├── home/ # Secciones del inicio (hero, galería, reseñas, contacto…)
│ ├── layout/ # Navbar, footer, indicador de horario
│ ├── productos/ # Tarjeta, imagen con placeholder, favorito, lightbox
│ └── historia/ # Línea de tiempo
├── composables/ # useInView (animaciones al hacer scroll)
├── data/ # Contenido en JSON
├── router/
├── stores/ # Favoritos (Pinia + localStorage)
├── utils/ # Precio, horario, scroll
└── views/
```
## Correr el proyecto
Requiere Node `^22.18.0` o `>=24.12.0`.
```sh
npm install
npm run dev # servidor de desarrollo
npm run build # type-check + build de producción
npm run lint # oxlint + eslint
```
### Pruebas unitarias
```sh
npm run test:unit # modo watch
npx vitest run # una sola corrida
```
Cubren el formato de precios, el cálculo de "abierto ahora" (horas límite y días cerrados), la búsqueda sin acentos, el store de favoritos y los componentes de tarjeta e imagen con placeholder.
### Pruebas end-to-end
```sh
npx playwright install # solo la primera vez
npm run test:e2e # contra el servidor de desarrollo
```
Para correrlas sin abrir el navegador, contra el build de producción:
```sh
npm run build && CI=1 npx playwright test --project=chromium --reporter=list
```
---
## Licencia
El código está bajo la licencia [MIT](LICENSE). Las fotografías se incluyen solo como demostración y pertenecen a sus respectivos autores.
> El negocio, sus datos de contacto y su historia son ficticios.
看看同类模板
对比同技术栈与用途的模板,找到更适合的视觉与内容结构。

shadcn-vue-landing-page
New design 🎉 Vue + Shadcn-vue + TypeScript + Tailwind. Landing page template ease-to-use
Vue · 企业官网

dasos
App Landing Page Template
Vue · 企业官网

hero-header-template
Hero Header Template 是一个为代理机构或服务商设计的落地页模板,基于 Vue 3、Vite 和 Tailwind CSS 构建。
Vue · 企业官网

vue-porto
VuePorto is a Bootstrap resume or CV landing page theme using Vuejs spa to help you create easy to use, stylis…
Vue · 作品集

nagency
Digatal agency web template
Vue · 企业官网

vitepress-marketing
VitePress set up as a real marketing site, not a docs site: a home page, a blog, and a working contact form.
Vue · 博客
