تخطَّ إلى المحتوى الرئيسي

Developer Page Specifications

Details Page

/:lang/founders/{slug} — 10-section profile with 4 reverse-lookup rails.

مكتمل

المسار: /:lang/founders/{slug}. يَرسم مؤسّس واحد كاملاً — bio، شركات، تاريخ التحدّث، ملفات مُؤلَّفة، فرص طُبِّق إليها (حين الموافقة)، إشارات تغطية، مقالات تحريرية مُؤلَّفة. سطح entity "الأكثر-اتّصالاً" على المنصّة: كل قسم هو reverse-lookup من EcosystemEntityLinks. ملفات founder-led تُضيف وسائل تحرير Founder Account حين المستخدم الزائر يَملك الملف.

ترتيب الأقسام

  1. A · Breadcrumb (Home → Founders → {الاسم})
  2. B · Hero (avatar 160×160 + الاسم H1 + headline + pills role/country/verified + CTA share)
  3. C · Bio (فقرة bio كاملة + صفّ روابط LinkedIn/Twitter/الموقع الشخصي)
  4. D · Startups (كروت كل شركة هذا المؤسّس مرتبط بها)
  5. E · تاريخ التحدّث (reverse-lookup لـ CalendarEvent.relatedFounderIds)
  6. F · مذكور في التغطية (reverse-lookup لـ CoverageArticle.mentionedFounderIds)
  7. G · الملفات المُؤلَّفة (reverse-lookup لـ FounderFile.authorIds)
  8. H · المقالات التحريرية المُؤلَّفة (reverse-lookup لـ EditorialArticle.authorIds عند الانطباق)
  9. I · المؤسّسون ذوو الصلة (نفس الدولة / نفس القطاع / نفس دفعة المسرّع)
  10. J · Footer (عام)

B · Hero — الحقول

avatar
المصدر: Founder.AvatarUrl. 160×160 سطح المكتب، 96×96 موبايل. SVG احتياطي كما موثَّق في الكرت.
الاسم (H1)
المصدر: FounderLang.DisplayName. الـ H1 الوحيد على الصفحة.
headline
المصدر: FounderLang.Headline.
pill الدور
المصدر: Founder.PrimaryRole.
pill الدولة
علم + Country.NameLang.
pill verified
اعرض فقط حين Founder.IsVerified=true.
pill flavor
اعرض فقط حين flavor='founder-led'.
CTA تحرير الملف
مرئي فقط حين viewer.userId === Founder.OwnerUserId (ملكية founder-led). يُوَجِّه لـ /:lang/founder-account/profile/edit.
صفّ share + LinkedIn + Twitter
المصادر: Founder.LinkedInUrl، Founder.TwitterUrl، Founder.PersonalSiteUrl. كل واحد يَفتح tab جديد مع rel=noopener.

C · قسم Bio — الحقول

  • فقرة Bio — المصدر: FounderLang.Bio. الحد الأقصى ~600 كلمة، يُرسم كـ HTML مُعَقَّم (markdown مُحَوَّل وقت التحرير). مطلوب: نعم.
  • chips المهارات/الخبرة — المصدر: join FounderSkills. اعرض صفّ chips صغيرة. اختياري.
  • اللغات المنطوقة — المصدر: join FounderLanguages. اعرض كـ pills صغيرة.

D · قسم Startups

المصدر: join ثنائي-الاتجاه FounderStartup (FounderId ↔ StartupId، Role، StartedYear، EndedYear?). اعرض كل شركة كـ <app-startup-card variant="inline"> مع دور المؤسّس في تلك الشركة مُتراكب كـ chip صغير ("Co-founder · 2018-present" / "CTO · 2015-2020"). الفرز: الحالي أولاً (EndedYear=null)، ثم بـ StartedYear DESC.

E · قسم تاريخ التحدّث

  • المصدر: SELECT * FROM CalendarEvent WHERE Founder.Id = ANY(relatedFounderIds) ORDER BY startDate DESC. reverse-lookup من CalendarEvent.relatedFounderIds.
  • العرض: قائمة <app-event-card variant="inline"> مع دور المؤسّس في تلك الفعالية ("Speaker" / "Judge" / "Panelist") لو متوفّر عبر join FounderEventRole.
  • حتى 6 معروضة inline + رابط "See all {N} events →" حين N > 6.
  • أخفِ القسم تماماً حين reverse-lookup يُرجع 0 فعاليات.

F · مذكور في التغطية

  • المصدر: SELECT * FROM CoverageArticle WHERE Founder.Id = ANY(mentionedFounderIds) ORDER BY publishedAt DESC.
  • العرض: <app-coverage-card variant="inline"> مع الاحتفاظ بشريحة الفعالية الأم.
  • أخفِ القسم حين 0 إشارات.

G · الملفات المُؤلَّفة

المصدر: SELECT * FROM FounderFile WHERE Founder.Id = ANY(authorIds) ORDER BY publishedAt DESC. العرض: 3:4 portrait <app-founder-file-card variant="compact">. عنوان القسم: "{First name} authored {N} {file/files}". أخفِ حين 0 ملفات.

H · المقالات التحريرية المُؤلَّفة

المصدر: SELECT * FROM EditorialArticle WHERE Founder.Id = ANY(authorIds) ORDER BY publishedAt DESC. العرض: <app-editorial-card variant="inline">. أخفِ حين 0 مقالات.

I · المؤسّسون ذوو الصلة

  • حتى 6 كروت. أولوية المصدر: (1) روابط يدوية عبر جدول FounderRelatedFounder؛ (2) نفس الدولة + نفس قطاع الشركة + Founder.IsActive=true.
  • استثنِ النفس. افرز اليدوي أولاً، ثم بـ most-mentioned DESC.