Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
44 commits
Select commit Hold shift + click to select a range
fe6a11f
feat(seo): add university major choice guide route
Alhareith Oct 4, 2026
df5d7ed
feat(seo): include major choice guide in sitemap
Alhareith Oct 4, 2026
56af71a
feat(seo): expose major choice guide in public SEO surface
Alhareith Oct 4, 2026
f7522b4
feat(seo): add major choice guide breadcrumb schema
Alhareith Oct 4, 2026
8ef202a
feat(seo): add university major choice guide
Alhareith Oct 4, 2026
db9afa8
test(seo): cover university major choice guide
Alhareith Oct 4, 2026
2c5ef16
test(seo): include major choice guide in sitemap contract
Alhareith Oct 4, 2026
a7bf462
test(seo): keep major choice guide indexable
Alhareith Oct 4, 2026
f28adeb
test(seo): extend social image contract to major choice guide
Alhareith Oct 4, 2026
c70399a
feat(seo): add public scientific foundation route
Alhareith Oct 4, 2026
f9885dc
feat(seo): include scientific foundation in sitemap
Alhareith Oct 4, 2026
1dd967e
feat(seo): expose scientific foundation in public SEO surface
Alhareith Oct 4, 2026
8779e2b
feat(seo): add scientific foundation breadcrumb schema
Alhareith Oct 4, 2026
67081e0
feat(seo): add public scientific foundation page
Alhareith Oct 4, 2026
50bdda7
test(seo): cover scientific foundation page
Alhareith Oct 4, 2026
f7568f6
fix(seo): avoid duplicate site name in scientific page title
Alhareith Oct 4, 2026
7f105fd
test(seo): assert single site name in scientific page title
Alhareith Oct 4, 2026
fe2b903
feat(seo): link interest page to scientific foundation
Alhareith Oct 4, 2026
aa02b4e
feat(seo): link major choice guide to scientific foundation
Alhareith Oct 4, 2026
db9f13d
feat(seo): expose scientific foundation as public page
Alhareith Oct 4, 2026
caa9f42
feat(seo): add scientific foundation breadcrumb schema
Alhareith Oct 4, 2026
f1df647
test(seo): include scientific foundation in sitemap contract
Alhareith Oct 4, 2026
95c9e1d
test(seo): keep scientific foundation indexable
Alhareith Oct 4, 2026
ea0794f
test(seo): extend social image contract to scientific foundation
Alhareith Oct 4, 2026
77fbd52
test(seo): cover scientific foundation internal links
Alhareith Oct 4, 2026
e02ae05
docs(seo): state the assessment national-norm boundary
Alhareith Oct 4, 2026
638c989
test(seo): lock scientific national-norm boundary
Alhareith Oct 4, 2026
1990bda
test(seo): cover scientific foundation page
Alhareith Oct 4, 2026
f189855
test(seo): include scientific foundation in sitemap contract
Alhareith Oct 4, 2026
2c4954b
test(seo): keep scientific foundation indexable
Alhareith Oct 4, 2026
2594a10
test(seo): extend social image contract to scientific foundation
Alhareith Oct 4, 2026
82c9491
fix(seo): remove duplicate scientific breadcrumb schema
Alhareith Oct 4, 2026
b25214b
docs(seo): clarify scientific interpretation boundary
Alhareith Oct 4, 2026
6e38544
test(seo): remove duplicate scientific foundation coverage
Alhareith Oct 4, 2026
3b86c35
test(seo): lock scientific boundaries and internal links
Alhareith Oct 4, 2026
ae0de12
fix(seo): consolidate scientific interpretation boundary
Alhareith Oct 4, 2026
ca23062
fix(seo): remove duplicate scientific foundation footer link
Alhareith Oct 4, 2026
2520adc
feat(seo): link home to public guidance hubs
Alhareith Oct 4, 2026
95c0909
feat(seo): add catalog breadcrumbs and guidance links
Alhareith Oct 4, 2026
61e9ada
feat(seo): align specialization breadcrumbs and decision links
Alhareith Oct 4, 2026
7f31d50
test(seo): lock internal linking and visible breadcrumb structure
Alhareith Oct 4, 2026
e565963
fix(seo): correct foundational SCCT DOI
Alhareith Oct 4, 2026
70987bb
docs(science): correct foundational SCCT DOI
Alhareith Oct 4, 2026
587ef13
test(science): lock correct foundational SCCT DOI
Alhareith Oct 4, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions app/Http/Controllers/SitemapController.php
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,8 @@ public function __invoke(SpecializationCatalogService $catalog): Response
$urls = [
route('home'),
route('career-interests.index'),
route('major-choice.index'),
route('scientific-foundation.index'),
route('specializations.index'),
];

Expand Down
4 changes: 2 additions & 2 deletions docs/04-assessment/scientific_theoretical_framework.md
Original file line number Diff line number Diff line change
Expand Up @@ -108,7 +108,7 @@

## 5. الأساس الثاني: النظرية المعرفية الاجتماعية للمسار المهني SCCT

طوّر Lent وBrown وHackett النظرية لتفسير نشوء الاهتمامات والاختيارات والأداء من خلال تفاعل فعالية الذات، وتوقعات النتائج، والأهداف، وخبرات التعلم، والدعم والعوائق السياقية. المرجع المؤسس هو [Lent, Brown, & Hackett, 1994](https://doi.org/10.1016/0001-8791(94)90026-4).
طوّر Lent وBrown وHackett النظرية لتفسير نشوء الاهتمامات والاختيارات والأداء من خلال تفاعل فعالية الذات، وتوقعات النتائج، والأهداف، وخبرات التعلم، والدعم والعوائق السياقية. المرجع المؤسس هو [Lent, Brown, & Hackett, 1994](https://doi.org/10.1006/jvbe.1994.1027).

### 5.1 ما الذي نأخذه منها؟

Expand Down Expand Up @@ -450,7 +450,7 @@ SCCT **إطار مساند أساسي** لبنود قليلة ومنفصلة ب
## 17. مراجع البحث الأساسية

1. Holland, J. L. (1997). *Making Vocational Choices* (3rd ed.). Psychological Assessment Resources. الأساس النظري لنموذج RIASEC.
2. Lent, R. W., Brown, S. D., & Hackett, G. (1994). [Toward a Unifying Social Cognitive Theory of Career and Academic Interest, Choice, and Performance](https://doi.org/10.1016/0001-8791(94)90026-4). *Journal of Vocational Behavior, 45*, 79–122.
2. Lent, R. W., Brown, S. D., & Hackett, G. (1994). [Toward a Unifying Social Cognitive Theory of Career and Academic Interest, Choice, and Performance](https://doi.org/10.1006/jvbe.1994.1027). *Journal of Vocational Behavior, 45*, 79–122.
3. Eccles, J. S., & Wigfield, A. (2020). [From Expectancy–Value Theory to Situated Expectancy–Value Theory](https://doi.org/10.1016/j.cedpsych.2020.101859). *Contemporary Educational Psychology, 61*.
4. Nye, C. D., Su, R., Rounds, J., & Drasgow, F. (2012). [Vocational Interests and Performance](https://doi.org/10.1177/1745691612449021). *Perspectives on Psychological Science, 7*(4), 384–403.
5. Nye, C. D., Su, R., Rounds, J., & Drasgow, F. (2017). [Interest Congruence and Performance](https://doi.org/10.1016/j.jvb.2016.11.002). *Journal of Vocational Behavior, 98*, 138–151.
Expand Down
7 changes: 7 additions & 0 deletions resources/views/home.blade.php
Original file line number Diff line number Diff line change
Expand Up @@ -122,5 +122,12 @@ class="h-full w-full object-cover"
<div class="absolute inset-0 bg-gradient-to-t from-[#edf7f3]/60 via-transparent to-transparent"></div>
</div>
</section>

<nav aria-label="مسارات إرشادية مرتبطة" class="seo-context-links mt-4 flex flex-wrap items-center gap-x-4 gap-y-2 rounded-2xl border border-slate-200 bg-white px-5 py-4 text-sm font-bold text-slate-600">
<span class="text-slate-900">قبل أن تبدأ:</span>
<a href="{{ route('career-interests.index') }}" class="hover:text-brand-800">ما هو اختبار الميول المهنية؟</a>
<a href="{{ route('major-choice.index') }}" class="hover:text-brand-800">كيف أختار تخصصي الجامعي؟</a>
<a href="{{ route('scientific-foundation.index') }}" class="hover:text-brand-800">الأساس العلمي لمسارك</a>
</nav>
</div>
@endsection
10 changes: 9 additions & 1 deletion resources/views/layouts/app.blade.php
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,8 @@
$seoIsIndexablePublicPage = request()->routeIs(
'home',
'career-interests.index',
'major-choice.index',
'scientific-foundation.index',
'specializations.index',
'specializations.show',
);
Expand Down Expand Up @@ -231,7 +233,7 @@ class="{{ request()->routeIs('assessment.show')
? 'w-full flex-1 break-words px-2 py-2 sm:px-4 sm:py-3 lg:px-5 lg:py-3'
: (request()->routeIs('assessment.intro')
? 'w-full flex-1 break-words px-2 py-2 sm:px-4 sm:py-3 lg:px-5 lg:py-3'
: (request()->routeIs('home') || request()->routeIs('specializations.index') || request()->routeIs('specializations.show') || request()->routeIs('specializations.compare') || request()->routeIs('results.show') || request()->routeIs('profile.results.index') || request()->routeIs('profile.show') || request()->routeIs('login') || request()->routeIs('register') || request()->routeIs('password.*')
: (request()->routeIs('home') || request()->routeIs('major-choice.index') || request()->routeIs('scientific-foundation.index') || request()->routeIs('specializations.index') || request()->routeIs('specializations.show') || request()->routeIs('specializations.compare') || request()->routeIs('results.show') || request()->routeIs('profile.results.index') || request()->routeIs('profile.show') || request()->routeIs('login') || request()->routeIs('register') || request()->routeIs('password.*')
? 'w-full flex-1 break-words px-2 py-2 sm:px-4 sm:py-3 lg:px-5 lg:py-5'
: 'container-page flex-1 break-words py-8 lg:py-12')) }}">
<x-ui.flash class="mb-6" />
Expand Down Expand Up @@ -298,6 +300,12 @@ class="site-footer-social-link"
<li>
<a href="{{ route('career-interests.index') }}" class="site-footer-link inline-flex min-h-10 items-center rounded-xl px-3">اختبار الميول المهنية</a>
</li>
<li>
<a href="{{ route('major-choice.index') }}" class="site-footer-link inline-flex min-h-10 items-center rounded-xl px-3">كيف أختار تخصصي؟</a>
</li>
<li>
<a href="{{ route('scientific-foundation.index') }}" class="site-footer-link inline-flex min-h-10 items-center rounded-xl px-3">الأساس العلمي</a>
</li>
<li>
<a href="{{ route('specializations.index') }}" class="site-footer-link inline-flex min-h-10 items-center rounded-xl px-3">التخصصات</a>
</li>
Expand Down
3 changes: 3 additions & 0 deletions resources/views/seo/career-interests.blade.php
Original file line number Diff line number Diff line change
Expand Up @@ -117,6 +117,9 @@ class="absolute inset-0 h-full w-full object-cover"
<a href="{{ route('specializations.index') }}" class="mt-5 inline-flex min-h-11 items-center font-extrabold text-brand-800 hover:text-brand-900">
تصفح دليل التخصصات الجامعية
</a>
<a href="{{ route('scientific-foundation.index') }}" class="mt-2 inline-flex min-h-11 items-center font-bold text-slate-700 hover:text-brand-800">
تعرّف إلى الأساس العلمي للتقييم
</a>
</div>
</section>
</article>
Expand Down
142 changes: 142 additions & 0 deletions resources/views/seo/choose-major.blade.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,142 @@
@extends('layouts.app')

@section('title', 'كيف أختار تخصصي الجامعي؟ | دليل عملي للطلاب')
@section('seo_description', 'كيف تختار تخصصك الجامعي؟ ابدأ بفهم ميولك وقدراتك وقيمك، ثم افهم طبيعة التخصص وقارن الخيارات بخطوات عملية تساعدك على اتخاذ قرار واعٍ بعد الثانوية.')

@section('content')
<article class="mx-auto w-full max-w-6xl" dir="rtl">
<nav aria-label="مسار الصفحة" class="mb-4 text-sm font-semibold text-slate-500">
<a href="{{ route('home') }}" class="transition-colors hover:text-brand-700">الرئيسية</a>
<span class="mx-2" aria-hidden="true">/</span>
<span aria-current="page" class="text-slate-700">كيف أختار تخصصي الجامعي؟</span>
</nav>

<header class="overflow-hidden rounded-3xl border border-slate-200 bg-white shadow-card">
<div class="grid gap-0 lg:grid-cols-[1.1fr_0.9fr]">
<div class="flex flex-col justify-center p-6 sm:p-9 lg:p-12">
<p class="text-sm font-extrabold text-brand-700">دليل عملي بعد الثانوية</p>
<h1 class="mt-3 text-3xl font-extrabold leading-tight text-slate-950 sm:text-4xl lg:text-5xl">
كيف أختار تخصصي الجامعي؟
</h1>
<p class="mt-5 max-w-3xl text-base leading-8 text-slate-600 sm:text-lg">
لا يبدأ الاختيار باسم التخصص، بل بفهم نفسك أولًا، ثم فهم الخيارات المتاحة، ثم المقارنة بينها بوعي. الهدف ليس العثور على «تخصص مثالي»، بل الوصول إلى قرار تستطيع تفسيره والتحقق منه.
</p>

<div class="mt-7 flex flex-col gap-3 sm:flex-row sm:flex-wrap">
<a href="{{ route('career-interests.index') }}" class="btn btn-primary btn-pill min-h-12 px-6 text-base font-extrabold">
ابدأ بفهم ميولك
</a>
<a href="{{ route('specializations.index') }}" class="btn btn-secondary btn-pill min-h-12 px-6 text-base font-bold">
استكشف التخصصات
</a>
</div>
</div>

<div class="relative min-h-72 overflow-hidden bg-brand-50 lg:min-h-[28rem]">
<img
src="/assets/home/masarak-home-student-hero.jpg"
alt="طالب يفكر في اختيار تخصصه الجامعي بعد الثانوية"
class="absolute inset-0 h-full w-full object-cover"
loading="eager"
fetchpriority="high">
<div class="absolute inset-0 bg-gradient-to-t from-slate-950/20 via-transparent to-transparent" aria-hidden="true"></div>
</div>
</div>
</header>

<section class="mt-6 rounded-3xl border border-slate-200 bg-white p-6 sm:p-8" aria-labelledby="three-steps-title">
<p class="text-sm font-extrabold text-brand-700">ثلاث خطوات أساسية</p>
<h2 id="three-steps-title" class="mt-2 text-2xl font-extrabold text-slate-950">ابدأ بهذه الطريقة بدل البحث العشوائي</h2>

<ol class="mt-6 grid gap-4 lg:grid-cols-3">
<li class="rounded-2xl bg-slate-50 p-5">
<span class="inline-flex h-9 w-9 items-center justify-center rounded-full bg-brand-100 font-extrabold text-brand-800">1</span>
<h3 class="mt-3 font-extrabold text-slate-900">افهم نفسك</h3>
<p class="mt-2 leading-7 text-slate-600">راجع ميولك، الأنشطة التي تستمتع بها، قدراتك التي تريد تطويرها، قيمك وأهدافك، وما تعرفه فعلًا عن نفسك من التجربة.</p>
</li>
<li class="rounded-2xl bg-slate-50 p-5">
<span class="inline-flex h-9 w-9 items-center justify-center rounded-full bg-brand-100 font-extrabold text-brand-800">2</span>
<h3 class="mt-3 font-extrabold text-slate-900">افهم الخيارات</h3>
<p class="mt-2 leading-7 text-slate-600">اقرأ طبيعة الدراسة، المواد والمهارات المطلوبة، الأنشطة داخل التخصص، والمسارات المهنية بدل الاعتماد على اسم التخصص فقط.</p>
</li>
<li class="rounded-2xl bg-slate-50 p-5">
<span class="inline-flex h-9 w-9 items-center justify-center rounded-full bg-brand-100 font-extrabold text-brand-800">3</span>
<h3 class="mt-3 font-extrabold text-slate-900">قارن بوعي</h3>
<p class="mt-2 leading-7 text-slate-600">ابحث عن نقاط التقارب والتعارض، ثم تحقق من الخيارات الأقرب إليك بقراءة أعمق أو تجربة صغيرة أو سؤال شخص لديه خبرة حقيقية.</p>
</li>
</ol>
</section>

<section class="mt-6" aria-labelledby="factors-title">
<h2 id="factors-title" class="text-2xl font-extrabold text-slate-950">ما العوامل التي أضعها أمامي قبل اختيار التخصص؟</h2>

<div class="mt-4 grid gap-4 md:grid-cols-2 lg:grid-cols-3">
<div class="rounded-2xl border border-slate-200 bg-white p-5">
<h3 class="font-extrabold text-slate-900">ميولك</h3>
<p class="mt-2 leading-7 text-slate-600">ما الأنشطة التي تستمتع بها وتريد تكرارها؟ الميول نقطة بداية، وليست حكمًا نهائيًا على مستقبلك.</p>
</div>
<div class="rounded-2xl border border-slate-200 bg-white p-5">
<h3 class="font-extrabold text-slate-900">قدراتك واستعدادك للتعلم</h3>
<p class="mt-2 leading-7 text-slate-600">لا تسأل فقط: «هل أنا جيد الآن؟» بل أيضًا: «هل أنا مستعد لتعلم المهارات التي يتطلبها هذا التخصص؟»</p>
</div>
<div class="rounded-2xl border border-slate-200 bg-white p-5">
<h3 class="font-extrabold text-slate-900">طبيعة الدراسة</h3>
<p class="mt-2 leading-7 text-slate-600">افهم كيف ستتعلم فعليًا: قراءة، تحليل، مختبر، تدريب عملي، تصميم، تواصل، مشاريع أو عمل ميداني.</p>
</div>
<div class="rounded-2xl border border-slate-200 bg-white p-5">
<h3 class="font-extrabold text-slate-900">قيمك وأهدافك</h3>
<p class="mt-2 leading-7 text-slate-600">ما الذي تريد أن يكون مهمًا في حياتك ودراستك وعملك؟ لا تجعل قرارك مجرد استجابة لرأي الآخرين.</p>
</div>
<div class="rounded-2xl border border-slate-200 bg-white p-5">
<h3 class="font-extrabold text-slate-900">الظروف الواقعية</h3>
<p class="mt-2 leading-7 text-slate-600">ضع في الحسبان الجامعة المتاحة، التكلفة، المكان، متطلبات القبول، الوقت والقيود التي تحتاج إلى خطة أو بديل.</p>
</div>
<div class="rounded-2xl border border-slate-200 bg-white p-5">
<h3 class="font-extrabold text-slate-900">المعلومة والتجربة</h3>
<p class="mt-2 leading-7 text-slate-600">كلما عرفت التخصص من مصادر موثوقة وجرّبت نشاطًا قريبًا منه، أصبح قرارك مبنيًا على معرفة أكثر وتخمين أقل.</p>
</div>
</div>
</section>

<section class="mt-6 grid gap-5 lg:grid-cols-2">
<div class="rounded-3xl border border-slate-200 bg-white p-6 sm:p-8">
<h2 class="text-xl font-extrabold text-slate-950">محتار أي تخصص أدخل؟ لا تبدأ بهذه الأخطاء</h2>
<ul class="mt-4 space-y-3 leading-7 text-slate-600">
<li>اختيار التخصص لأن اسمه مشهور فقط.</li>
<li>الاعتماد على الراتب أو المكانة وحدهما.</li>
<li>ترك شخص آخر يقرر بدلًا عنك دون فهمك لطبيعة الاختيار.</li>
<li>اعتبار نتيجة اختبار واحد إجابة نهائية لا تحتاج إلى تحقق.</li>
<li>رفض تخصص قبل معرفة مواده وأنشطته ومساراته الفعلية.</li>
</ul>
</div>

<div class="rounded-3xl border border-brand-200 bg-brand-50 p-6 sm:p-8">
<h2 class="text-xl font-extrabold text-slate-950">هل اختبار الميول يكفي لاختيار التخصص؟</h2>
<p class="mt-3 leading-8 text-slate-700">
لا. اختبار الميول يساعدك على فهم المجالات والأنشطة التي تجذبك أكثر، لكنه لا يقيس كل شيء ولا يقرر عنك. استخدم نتيجته مع فهم طبيعة الدراسة وقدراتك وقيمك وظروفك الواقعية.
</p>
<a href="{{ route('career-interests.index') }}" class="mt-5 inline-flex min-h-11 items-center font-extrabold text-brand-800 hover:text-brand-900">
تعرّف إلى اختبار الميول المهنية
</a>
</div>
</section>

<section class="mt-6 rounded-3xl border border-slate-200 bg-white p-6 sm:p-8" aria-labelledby="next-step-title">
<h2 id="next-step-title" class="text-2xl font-extrabold text-slate-950">خطوتك التالية: حوّل الحيرة إلى مقارنة</h2>
<p class="mt-3 max-w-4xl leading-8 text-slate-600">
اختر تخصصين أو ثلاثة يبدون قريبين منك، واقرأ لكل واحد طبيعة الدراسة والمهارات والأنشطة والمسارات المهنية. سجّل ما يجذبك وما يقلقك، ثم ارجع إلى ميولك وظروفك بدل الاختيار بالانطباع الأول.
</p>
<div class="mt-6 flex flex-col gap-3 sm:flex-row sm:flex-wrap">
<a href="{{ route('specializations.index') }}" class="btn btn-primary btn-pill min-h-12 px-6 text-base font-extrabold">
افتح دليل التخصصات الجامعية
</a>
<a href="{{ route('career-interests.index') }}" class="btn btn-secondary btn-pill min-h-12 px-6 text-base font-bold">
استكشف ميولك أولًا
</a>
<a href="{{ route('scientific-foundation.index') }}" class="inline-flex min-h-12 items-center px-3 text-base font-bold text-slate-700 hover:text-brand-800">
اقرأ الأساس العلمي لمسارك
</a>
</div>
</section>
</article>
@endsection
Loading
Loading