fix(brand): real Meezi icon/favicon on website + admin (was missing)
CI/CD / CI · API (dotnet build + test) (push) Successful in 40s
CI/CD / CI · Admin API (dotnet build) (push) Successful in 29s
CI/CD / CI · Dashboard (tsc) (push) Successful in 1m10s
CI/CD / CI · Admin Web (tsc) (push) Successful in 38s
CI/CD / CI · Website (tsc) (push) Successful in 45s
CI/CD / CI · Koja (tsc) (push) Successful in 49s
CI/CD / Deploy · all services (push) Has been cancelled

- web/website: manifest referenced /icon-192.png and /icon-512.png that
  didn't exist (broken favicon). Added the real transparent Meezi mark
  (32/180/192/512) + wired icons into metadata. OG image stays dynamic.
- web/admin: had no metadata or icons at all. Added title template,
  favicon/apple icons (icons/ dir), themeColor, noindex.

Dashboard + Koja already carry the real logo; web apps are now consistent.
Mobile launcher icons will be handled with the Android packaging task.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
soroush.asadi
2026-06-15 18:37:21 +03:30
parent 72ab09189c
commit d407f0b3e9
11 changed files with 31 additions and 0 deletions
Binary file not shown.

After

Width:  |  Height:  |  Size: 8.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 46 KiB

+22
View File
@@ -1,3 +1,4 @@
import type { Metadata, Viewport } from "next";
import { NextIntlClientProvider } from "next-intl";
import { getMessages, setRequestLocale } from "next-intl/server";
import { notFound } from "next/navigation";
@@ -6,6 +7,27 @@ import { routing } from "@/i18n/routing";
import { Providers } from "@/components/providers";
import "../globals.css";
export const metadata: Metadata = {
title: { default: "مدیریت سامانه میزی", template: "%s — مدیریت میزی" },
description: "پنل مدیریت سامانه میزی",
icons: {
icon: [
{ url: "/icons/icon-32.png", sizes: "32x32", type: "image/png" },
{ url: "/icons/icon-48.png", sizes: "48x48", type: "image/png" },
{ url: "/icons/icon-192.png", sizes: "192x192", type: "image/png" },
],
shortcut: "/icons/icon-32.png",
apple: "/icons/icon-180.png",
},
robots: { index: false, follow: false }, // internal admin panel
};
export const viewport: Viewport = {
themeColor: "#0F6E56",
width: "device-width",
initialScale: 1,
};
const vazirmatn = localFont({
src: "../../fonts/Vazirmatn-Variable.woff2",
variable: "--font-vazirmatn",
Binary file not shown.

After

Width:  |  Height:  |  Size: 8.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 46 KiB

+9
View File
@@ -25,6 +25,15 @@ export async function generateMetadata({
template: `%s | ${t("siteName")}`,
},
description: t("siteDescription"),
icons: {
icon: [
{ url: "/icon-32.png", sizes: "32x32", type: "image/png" },
{ url: "/icon-192.png", sizes: "192x192", type: "image/png" },
{ url: "/icon-512.png", sizes: "512x512", type: "image/png" },
],
shortcut: "/icon-32.png",
apple: "/icon-180.png",
},
keywords:
locale === "fa"
? ["میزی", "مدیریت کافه", "منوی دیجیتال", "سیستم POS", "نرم افزار رستوران", "QR کد کافه", "مدیریت رستوران ایران"]