51 lines
5.2 KiB
JavaScript
51 lines
5.2 KiB
JavaScript
// Shared content model: 15 products, 4 families ("constellations").
|
|||
|
|
// Used verbatim by the React preview and the Nuxt source.
|
||
|
|
export const families = [
|
||
|
|
{ id: "trade", fa: "تجارت و مالی", short: "مالی" },
|
||
|
|
{ id: "data", fa: "داده و هوش", short: "داده" },
|
||
|
|
{ id: "infra", fa: "زیرساخت", short: "زیرساخت" },
|
||
|
|
{ id: "work", fa: "کار و ارتباط", short: "ارتباط" },
|
||
|
|
];
|
||
|
|
|
||
|
|
export const products = [
|
||
|
|
{ slug: "dinar", fa: "دینار", en: "Dinar", family: "trade", kind: "pay", year: 1396, users: "۱٫۲ میلیون", r: 0.74,
|
||
|
|
line: "درگاه پرداخت و تسویهٔ خودکار برای فروشگاههای آنلاین.", value: "تسویه در کمتر از ۹۰ ثانیه" },
|
||
|
|
{ slug: "daftar", fa: "دفتر", en: "Daftar", family: "trade", kind: "ledger", year: 1397, users: "۸۴ هزار", r: 0.63,
|
||
|
|
line: "حسابداری ابری که سند را از تراکنش، خودش مینویسد.", value: "۷۰٪ سند کمتر با دست" },
|
||
|
|
{ slug: "bazaar", fa: "بازار", en: "Bazaar", family: "trade", kind: "store", year: 1398, users: "۱۲ هزار فروشگاه", r: 0.79,
|
||
|
|
line: "فروشگاهساز برای برندهایی که نمیخواهند شبیه همه باشند.", value: "راهاندازی در یک بعدازظهر" },
|
||
|
|
{ slug: "mozd", fa: "مزد", en: "Mozd", family: "trade", kind: "payroll", year: 1400, users: "۲۱۰ هزار", r: 0.58,
|
||
|
|
line: "حقوق، بیمه و مالیات؛ در یک روز، بدون فایل اکسل.", value: "فیش حقوقی بیخطا، هر ماه" },
|
||
|
|
{ slug: "zij", fa: "زیج", en: "Zij", family: "data", kind: "chart", year: 1397, users: "۹ هزار تیم", r: 0.81,
|
||
|
|
line: "تحلیل محصول؛ رفتار کاربر را مثل جدول ستارهها میخواند.", value: "پرسش به زبان فارسی، پاسخ با نمودار" },
|
||
|
|
{ slug: "sanjeh", fa: "سنجه", en: "Sanjeh", family: "data", kind: "monitor", year: 1399, users: "۳٬۴۰۰ سرویس", r: 0.66,
|
||
|
|
line: "پایش سرویسها؛ پیش از آنکه کاربر چیزی حس کند.", value: "هشدار در ۱۲ ثانیه" },
|
||
|
|
{ slug: "kavosh", fa: "کاوش", en: "Kavosh", family: "data", kind: "search", year: 1400, users: "۴۰۰ سازمان", r: 0.76,
|
||
|
|
line: "جستوجوی سازمانی که املای فارسی را میفهمد.", value: "۴۰ میلیون سند در ۸۰ میلیثانیه" },
|
||
|
|
{ slug: "goya", fa: "گویا", en: "Goya", family: "data", kind: "wave", year: 1401, users: "۶ میلیون دقیقه/ماه", r: 0.6,
|
||
|
|
line: "تبدیل گفتار فارسی به متن، با لهجهها و اصطلاحها.", value: "دقت ۹۶٪ روی گفتار طبیعی" },
|
||
|
|
{ slug: "bandar", fa: "بندر", en: "Bandar", family: "infra", kind: "terminal", year: 1398, users: "۱۸ هزار استقرار/روز", r: 0.8,
|
||
|
|
line: "سکوی استقرار؛ از کد تا سرور، با یک فرمان.", value: "استقرار بدون قطعی" },
|
||
|
|
{ slug: "kelid", fa: "کلید", en: "Kelid", family: "infra", kind: "keys", year: 1399, users: "۳ میلیون هویت", r: 0.64,
|
||
|
|
line: "هویت و ورود یکپارچه برای همهٔ سامانههای یک سازمان.", value: "یک ورود، همهجا" },
|
||
|
|
{ slug: "anbar", fa: "انبار", en: "Anbar", family: "infra", kind: "storage", year: 1400, users: "۹ پتابایت", r: 0.74,
|
||
|
|
line: "ذخیرهسازی شیء، سازگار با S3 و میزبانیشده در ایران.", value: "دسترسپذیری ۹۹٫۹۹٪" },
|
||
|
|
{ slug: "pol", fa: "پل", en: "Pol", family: "infra", kind: "api", year: 1401, users: "۲ میلیارد درخواست/ماه", r: 0.57,
|
||
|
|
line: "دروازهٔ API؛ سرویسهای قدیمی و جدید را به هم وصل میکند.", value: "تأخیر افزودهٔ زیر ۳ میلیثانیه" },
|
||
|
|
{ slug: "payam", fa: "پیام", en: "Payam", family: "work", kind: "chat", year: 1399, users: "۵۵۰ هزار", r: 0.82,
|
||
|
|
line: "پیامرسان تیمی، با دادهای که از سازمان بیرون نمیرود.", value: "رمزنگاری سرتاسری" },
|
||
|
|
{ slug: "nobat", fa: "نوبت", en: "Nobat", family: "work", kind: "calendar", year: 1400, users: "۲٫۸ میلیون نوبت/ماه", r: 0.67,
|
||
|
|
line: "نوبتدهی آنلاین برای مطب، سالن و هر جایی که صف دارد.", value: "۴۰٪ غیبت کمتر" },
|
||
|
|
{ slug: "masir", fa: "مسیر", en: "Masir", family: "work", kind: "map", year: 1402, users: "۹ هزار ناوگان", r: 0.75,
|
||
|
|
line: "مسیریابی ناوگان پخش؛ کوتاهترین راه، با ترافیک امروز.", value: "۱۸٪ سوخت کمتر" },
|
||
|
|
];
|
||
|
|
|
||
|
|
// Step between stars on the rete. Star i sits i*STEP counter-clockwise from
|
||
|
|
// the top: in an RTL reading the *next* product waits on the left and the
|
||
|
|
// rete turns clockwise (left → top → right) to bring it under the rule.
|
||
|
|
export const STEP = (24 * Math.PI) / 180;
|
||
|
|
|
||
|
|
const FA = "۰۱۲۳۴۵۶۷۸۹";
|
||
|
|
export const fa = (v) => String(v).replace(/\d/g, (d) => FA[d]);
|
||
|
|
export const pad = (n) => fa(String(n).padStart(2, "0"));
|