الهوية البصرية
اجعل الموقع ولوحة التحكم لك: الاسم، والشعارات الكاملة والأيقونات، والألوان والخطوط، وبطاقات المشاركة، والمظاهر، والأماكن التي تكتب فيها واجهة API اسم المنتج.
لحزمة الحزمة الكاملة
أين توجد الهوية البصرية
| العنصر | الموقع (website/) | لوحة التحكم (dashboard/) |
|---|---|---|
| الاسم والبيانات الوصفية | messages/layout/<locale>.json (Metadata, Common.brand), src/config/site.ts | src/config/brand.config.ts, messages/metadata/<locale>.json |
| الشعار الكامل والرمز | public/brand/، ويُضبط حجمه في src/components/Logo.tsx | public/brand/، ويُضبط حجمه في src/config/brand.config.ts |
| الأيقونات | src/app/icon.svg | src/app/ وملفا web-app-manifest في public/ |
| بطاقة المشاركة | public/meta_image.png | meta.ogImage في src/config/brand.config.ts |
| الألوان | src/styles/theme-variables.css | src/styles/theme-variables.css |
| الأشكال | public/shapes/ | public/shapes/ |
| الخطوط | src/fonts/ وpublic/fonts/ | src/fonts/ |
| النصوص | messages/ وsrc/content/ | messages/ |
كل لون رمز معرَّف مرة واحدة للمظهر الفاتح ومرة للمظهر الداكن. تقرأ المكونات الرموز فقط، فيصل أي رمز تغيّره إلى كل شاشة. غيّر لون الهوية في الكتلتين، وإلا بقي لأحد المظهرين اللون القديم.
اسم الموقع ونصوصه
- الاسم في عناوين التبويبات وبطاقات المشاركة هو
Metadata.siteNameفيmessages/layout/en.jsonوar.json، وبجانبه العنوان الافتراضي والوصف والنص البديل لصورة المشاركة. والاسم الذي يقرؤه قارئ الشاشة للشعار هوCommon.brand، وسطر حقوق النشر هوFooter.copyright. - عنوان كل صفحة ووصفها موجودان تحت
metaفي مساحة اسمها داخلmessages/، مثلPricingPage.metaفيmessages/pricing/. - يظهر اسم المنتج أيضًا داخل الجمل، مكتوبًا
Northstackبالأحرف اللاتينية في اللغتين: ابحث عنه فيmessages/وsrc/content/وأعد كتابة تلك الأسطر. التوثيق والمدونة وسجل التغييرات فيsrc/content/تصف Northstack نفسه وهي لك لتعيد كتابتها.
الشعار الكامل والأيقونة والأشكال في الموقع
| الملف | الاستخدام |
|---|---|
public/brand/logo-light.svg, public/brand/logo-dark.svg | الشعار الكامل (الرمز والاسم مرسومان معًا) في الترويسة والتذييل ومعاينة مساحة العمل، في الصفحات الفاتحة والداكنة. الشعار نفسه يخدم اللغتين. |
src/app/icon.svg | أيقونة علامة تبويب المتصفح |
public/meta_image.png | بطاقة المشاركة بقياس 1200 في 630، المذكورة في ogImage داخل src/config/site.ts، لكل صفحة. |
public/shapes/ | المربعات والدوائر والأرباع والمثلثات المرسومة حول الأقسام، عبر src/components/Shape.tsx |
استبدل ملفَّي الشعار الكامل بملفيك مع الاسمين نفسيهما. تُكتب نسبتهما في LOCKUP_RATIO داخل src/components/Logo.tsx (379.24 في 68 كما يُشحن): اضبطها على عرض شعارك مقسومًا على ارتفاعه، لتحتفظ الترويسة بحجمها.
ألوان الموقع وخطوطه
| المتغير | فاتح | داكن | الدور |
|---|---|---|---|
--background, --surface | #f1ece3 | #171717, #202020 | الصفحة واللوحات |
--text, --text-muted | #111111, #5d5e63 | #f1ece3, #b9b8b2 | النص |
--border, --border-strong | #b8b5ad, #111111 | #696761, #b8b5ad | الخطوط والحدود |
--primary | #111111 | #f1ece3 | الأزرار الأساسية |
--brand-action | #c7492c | #c7492c | أزرار الدعوة إلى الإجراء الحمراء |
--link, --focus | #1151d8 | #82a8ff | الروابط وحلقة التركيز |
--red, --cobalt, --sunflower | #c7492c, #1151d8, #efbf43 | الأمر نفسه | الأشكال وعلامات الحالة |
--errorColor | #a83a20 | #e0714f | الأخطاء |
ألوان شريط المتصفح (#f1ece3 و#171717) هي themeColor في src/app/[locale]/layout.tsx. تأكد من أن النص على ألوانك ما زال مقروءًا بنسبة 4.5 إلى 1 في المظهرين.
تُشحن الخطوط مع التطبيق، فلا ينزّلها البناء أبدًا: Inter للنص اللاتيني (src/fonts/InterVariable-latin.woff2، وتُحمَّل في src/fonts/fonts.ts)، وNoto Sans Arabic للنص العربي وAlmarai للعناوين العربية (public/fonts/، وتُعرَّف في src/styles/fonts.css وتُحمَّل مسبقًا في الصفحات العربية). ولكل منها رخصة SIL Open Font License بجانبه. لتغيير خط، ضع ملف .woff2 الخاص به في المجلد نفسه، ووجّه التعريف إليه، وأبقِ رخصته بجانبه.
نتائج البحث، والمشاركة، والنطاق
NEXT_PUBLIC_SITE_URLهو أساس كل عنوان أساسي، وبدائل اللغات، وبطاقات المشاركة، وrobots.txt، وخريطة الموقع. اضبطه على عنوانك الحقيقي قبل أن تبني.- تُكتب الأسعار بالطريقة نفسها في اللغتين، وعلامة الدولار أولًا بالأرقام اللاتينية، عبر
src/lib/format/formatUsd.ts. - تذكر بيانات الصفحة الوصفية Aniq-UI مؤلفًا لها (
authorsفيsrc/app/[locale]/layout.tsx): ضع اسمك هناك.
فاتح وداكن
- الموقع يعرض في قائمة المظهر: النظام وفاتح وداكن. «النظام» يتبع نظام التشغيل. يُحفظ الاختيار في localStorage بالمتصفح باسم
northstack-theme، ويطبّقه سكربت في ترويسة الصفحة قبل أول رسم، فلا يومض المظهر الآخر عند إعادة التحميل. - لوحة التحكم فيها زر مظهر واحد في شريطها العلوي، قرص نصفه ممتلئ اسمه «تبديل المظهر» لقارئات الشاشة، يبدّل بين الفاتح والداكن. وإلى أن يُضغط تتبع لوحة التحكم نظام التشغيل. يُحفظ الاختيار في localStorage باسم
themeويُطبَّق قبل أول رسم بالطريقة نفسها. - لا يُرسَل شيء عن المظهر إلى واجهة API.
اسم لوحة التحكم وشعارها الكامل وألوانها
- الاسم:
nameفيBRAND_CONFIG(src/config/brand.config.ts) هو جزء الهوية في كل عنوان تبويب (Team | Northstack)، والنص البديل للشعار، واسم التطبيق المثبَّت. وهو نفسه في اللغتين. عنوان كل صفحة تحتpagesفيmessages/metadata/en.jsonوar.json، والعنوان الافتراضي والوصف تحتsite. ويظهر اسم المنتج أيضًا داخل الجمل فيmessages/، بالأحرف اللاتينية في اللغتين. - البيانات الوصفية:
meta.keywordsوmeta.author(Aniq-UI كما يُشحن: ضع اسمك) وmeta.ogImage، وهي الصورة التي يعرضها الرابط المشارَك، مع حجمها. وهي كما تُشحن أيقونة التطبيق 512 في 512، فتُشارَك بطاقة صغيرة؛ وصورة 1200 في 630 تُشارَك بطاقة كبيرة. وtheme.lightوtheme.darkهما لونا شريط المتصفح، وmanifestألوان التطبيق المثبَّت وأيقوناته. - الشعار الكامل والرمز: استبدل
logo-light.svgوlogo-dark.svgوmark-light.svgوmark-dark.svgفيpublic/brand/مع إبقاء الأسماء، واضبطlogo.widthوlogo.heightعلى نسب شعارك الجديد. يظهر الرمز وحده في الشريط الجانبي المطوي وفي ترويسة الهاتف، ويُرسم بنسبة 100 في 48 فيsrc/components/ui/BrandLogo.tsx. - الأيقونات:
src/app/favicon.ico(التبويب)، وsrc/app/icon0.svgوsrc/app/icon1.png، وsrc/app/apple-icon.png(الشاشات الرئيسية في iPhone وiPad)، وpublic/web-app-manifest-192x192.pngوpublic/web-app-manifest-512x512.pngللتطبيق المثبَّت. - الألوان: لوحة الألوان (
--paperو--inkو--redو--cobaltو--sunflower)، والأسطح والنصوص، والخطوط (--borderو--border-strong)، والإجراءات، وعلامات الحالة (--status-progressو--status-reviewو--status-blockedو--status-done) ولون المخطط، فيsrc/styles/theme-variables.css، مرة لكل مظهر. وتُرسم الأشكال بواسطةsrc/components/ui/Shape.tsxمنpublic/shapes/، ويظهر الأشخاص بلا صورة كمربعات بأحرفهم الأولى. - الخطوط: Inter للنص اللاتيني وIBM Plex Sans Arabic للعربي، من
src/fonts/(مع رخصها)، وتُحمَّل فيsrc/styles/fonts.ts. - العناوين:
NEXT_PUBLIC_BASE_URLهو عنوان لوحة التحكم نفسها (robots.txt وخريطة الموقع والبيانات الوصفية وعنوان مساحة العمل في الإعداد الأولي والإعدادات)، وNEXT_PUBLIC_WEBSITE_URLعنوان الموقع (روابط التوثيق والخصوصية والشروط).
تُبقي لوحة التحكم كل صفحة بعيدة عن محركات البحث (noindex في ترويسة الصفحة وترويسة X-Robots-Tag)، كما ينبغي للوحة الإدارة.
الأماكن التي تكتب فيها واجهة API اسم المنتج
| المكان | الملف |
|---|---|
مرسل كل بريد، SMTP_FROM (والقيمة Northstack <no-reply@localhost> عندما يكون فارغًا) | back-end/.env, back-end/src/modules/mail/mail.service.ts |
| موضوع رسالة إعادة ضبط بيانات الدخول | back-end/src/modules/auth/account.service.ts |
| موضوع رسالة الدعوة | back-end/src/modules/workspaces/services/invitations.service.ts |
| عنوان فاتورة PDF وبنودها | back-end/src/modules/billing/services/billing.service.ts |
| اسم الخطة في صفحة الدفع على Stripe | back-end/src/modules/billing/providers/stripe.provider.ts |
| أسماء التراخيص في صفحة الدفع والإيصال | back-end/src/modules/licenses/constants/license-offers.ts |
تملأ إعدادات المنصة الأولية اسم المنتج وشعاره النصي وعنوان الدعم (back-end/src/database/seeders/app-settings.seeder.ts)، وتُعدَّل في صفحة إعدادات المنصة بلوحة التحكم. ومن هذه لا يقرأ اسم المنتج وعنوان الدعم إلا المساعد الذكي، ليذكر المنتج في إجاباته؛ أما الشاشات فتأخذ الاسم من الملفات أعلاه.
الصياغة والصفحات القانونية
كل جملة ظاهرة موجودة في messages/ (والنصوص الطويلة للموقع في src/content/)، مع en.json وar.json. أعد كتابة النص في الملفين. سياسة الخصوصية وشروط الاستخدام وسياسة ملفات الارتباط وصفحة حقوق البيانات في messages/legal نصوص تجريبية، بتاريخ «آخر تحديث» تجريبي: أعد كتابتها لنشاطك وبلدك قبل أن تستقبل عملاء حقيقيين.