Vue企业官网

dessert-page — Vue 企业官网模板

作者 LeonelRosado2407

面向墨西哥风格咖啡烘焙店的企业官网与在线菜单模板,使用 Vue 3、TypeScript 与 Tailwind CSS 构建,内容以 JSON 数据驱动。

看看你的网站会是什么样

浏览真实页面截图,比较内容排版与手机效果。点击下方缩略图切换,放大查看整页细节。

3 个预览视图
桌面端首页1 / 3
桌面端截图首屏预览

由服务器浏览器实际访问页面后截取。

全部页面与视图 3

截图用于了解视觉与布局,交互效果请以实际项目为准。

采集于 2026-10-10查看来源

值得关注的模板亮点

从已有项目资料中,快速了解它的特点。

01

菜单内容以 JSON 数据存放在 src/data/,更新产品无需修改组件

02

搜索忽略重音符号,同时匹配产品名称与描述

03

收藏状态通过 localStorage 持久化,并提供独立筛选视图

04

搜索与筛选条件同步到 URL 查询字符串,可分享并支持浏览器历史导航

05

根据营业时间自动显示“Abierto ahora / Cerrado”状态

06

遵循 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 许可,但演示照片仅作展示用途,版权归各自作者;业务信息与联系方式均为虚构。

Vue企业官网

适合你的项目吗?

适用场景

  • 为咖啡店或烘焙店搭建带在线菜单的品牌官网
  • 需要按分类浏览产品并展示价格与详情的餐饮类站点
  • 希望用 JSON 数据文件维护菜单内容、避免频繁改动前端代码的项目
  • 需要搜索、收藏与可分享筛选链接的菜单浏览体验

适合人群

  • 咖啡店、烘焙店等小型餐饮商家的官网与菜单展示
  • 使用 Vue 3 与 TypeScript 技术栈的前端开发者参考
  • 需要将内容与组件分离、便于后续接入 CMS 或 API 的项目

上手与定制指南

结合仓库当前版本的说明,按下面的资料检查内容、配置与运行要求。

  1. 1

    需要 Node ^22.18.0 或 >=24.12.0

  2. 2

    安装依赖后运行 npm run dev 启动开发服务器,npm run build 执行类型检查与生产构建

  3. 3

    单元测试使用 npm run test:unit 或 npx vitest run,端到端测试需先执行 npx playwright install 再运行 npm run test:e2e

  4. 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 原文

> El negocio, sus datos de contacto y su historia son ficticios.

README 原文
https://github.com/LeonelRosado2407/dessert-page/blob/main/LICENSEhttps://github.com/LeonelRosado2407/dessert-page/blob/main/README.md

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

[![CI](https://github.com/LeonelRosado2407/dessert-page/actions/workflows/ci.yml/badge.svg)](https://github.com/LeonelRosado2407/dessert-page/actions/workflows/ci.yml)
[![Demo](https://img.shields.io/badge/demo-dulce.leonelrosado.dev-000?logo=vercel)](https://dulce.leonelrosado.dev)
[![Licencia: MIT](https://img.shields.io/badge/licencia-MIT-A65D57)](LICENSE)

![Vue](https://img.shields.io/badge/Vue_3-4FC08D?logo=vuedotjs&logoColor=white)
![TypeScript](https://img.shields.io/badge/TypeScript-3178C6?logo=typescript&logoColor=white)
![Vite](https://img.shields.io/badge/Vite-646CFF?logo=vite&logoColor=white)
![Tailwind CSS](https://img.shields.io/badge/Tailwind_CSS_v4-06B6D4?logo=tailwindcss&logoColor=white)
![Vitest](https://img.shields.io/badge/Vitest-6E9F18?logo=vitest&logoColor=white)
![Playwright](https://img.shields.io/badge/Playwright-2EAD33)

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)

![Inicio](docs/screenshots/home.jpg)

## 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) |
| --- | --- | --- |
| ![Menú](docs/screenshots/menu.jpg) | ![Búsqueda](docs/screenshots/mobile-busqueda.jpg) | ![Lightbox](docs/screenshots/mobile-lightbox.jpg) |

![Historia](docs/screenshots/historia.jpg)

## 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.
反馈内容错误

看看同类模板

对比同技术栈与用途的模板,找到更适合的视觉与内容结构。