Commit fa497ab9 authored by Claude's avatar Claude

chore(reference): add OC-Sport site mirror for the website migration

Captured 2026-08-30 from oc-sport.com as the source spec for rebuilding the
client's site in the v3 builder. Contains their 7 pages in both locales, the
static assets, the public images, their published OpenAPI description and the
extracted bilingual content catalogue (604 strings x en/ar).

analysis/FINDINGS.md holds the gap analysis that motivated the v3 builder.

Excluded from the Docker build context via .dockerignore, so it never ships to
a tenant image.
Co-Authored-By: 's avatarClaude Opus 5 <noreply@anthropic.com>
parent c3f2ae53
# OC-Sport site — mirror & gap analysis
Captured 2026-08-30 from https://oc-sport.com
## What the mirror contains
| Path | Contents |
|---|---|
| `html/` | 14 SSR documents (7 pages × en/ar) |
| `assets/` | 44 JS chunks, 4 CSS, 3 woff2 fonts |
| `images/` | 14 public webp + favicon |
| `images/schedules/` | 34 session cards (1080×1080 PNG, ~40 MB) |
| `api/` | OpenAPI 3.0.3 spec (99 endpoints), branches, schedules |
| `analysis/messages.{en,ar}.json` | **604 strings × 2 locales, 35 namespaces** |
## Their stack
Next.js (App Router, RSC) + Mantine + Tailwind, MongoDB behind a REST API,
S3/MinIO media via presigned URLs, Cloudflare. Font: **Cairo**. Locales en/ar,
`x-default` = en.
Brand ramp (from inlined Mantine theme):
- brand 0–9: `#f0f4ff … #4c94ff (6) … #0c1236 (9)`
- accent 0–9: `#fffdf0 … #ffe743 (6) … #c9a000 (9)`
Animations: `fadeIn slideUp scaleIn float glow shimmer bounceSubtle pageEnter pulse bounce`
## Their real page set (7)
`/` · `/about-us` · `/contact-us` · `/el3b` · `/login` · `/verify` · `/terms-and-conditions`
Nav also lists 5 sport pages (football, basketball, handball, gymnastics,
women's football) + `/branch/{slug}` + Ramadan events page.
## Homepage blocks
Hero (5-colour jersey, front/back) · AboutUs · Chairman (profile + achievements list)
· Video (YouTube + quote) · Branches (searchable, data-driven) · Partners (logo strip)
· CTR (final CTA) · ContactUs (form + 3 info cards)
> Render order not visually confirmed — headless browser unavailable in this container.
## The two things that make their site "not shallow"
1. **`BranchPage`** (116 strings): multi-player enrolment wizard — guardian choice,
registration type, add/remove N players, per-player kit size/number/name-on-shirt,
school, medical notes, parents' jobs, compound-resident question, addons —
with a **live discount breakdown** (multi-player, compound-resident, club-member,
addon, subscription) and OTP phone auth → order → payment.
2. **Per-record media**: every session carries an uploaded 1080×1080 card;
every branch, partner, activity carries images.
## Our builder — what exists
- 19 `SectionKey` cases, 6 hero layout variants
- 61 columns on `website_settings` (colour, type, density, radius, card style,
navbar ×8, footer ×4, announcement bar, popup, floating elements)
- 13 `MediaCollection` types incl. `ActivityPhoto`, `Gallery`
- `WebsiteDataService` binds activities/programs/branches/stats/testimonials/faqs/news/partners/gallery
- `Event` module already has a **dynamic form builder**: `events.form_fields` JSONB,
`event_registrations.form_data` JSONB, 15 `FormFieldType` cases incl. FileUpload/Terms/Phone
- `app/Livewire/Public/EventRegistrationForm.php` — public unauthenticated form precedent
## Our builder — the blocking gaps
| # | Gap | Evidence |
|---|---|---|
| 1 | **No pages.** One landing page only. | No `website_pages` table anywhere; routes `/`, `/website/news`, `/website/events` hardcoded |
| 2 | **One section per type, forever.** | `unique(['academy_id','section_key'])` |
| 3 | **Cannot add or delete sections.** | `SectionManager` exposes only `toggleSection()` + `reorder()`; service `firstOrCreate`s one row per key |
| 4 | **No repeatable sub-items in a section.** | Fixed `title/subtitle/content` (+`_en`) columns; only `settings` JSONB, unedited by any UI |
| 5 | **No navigation model.** | Navbar links derived, not authored; no dropdown/mega-menu data |
| 6 | **No public enrolment funnel.** | No public OTP, no public pricing preview, no order/payment surface |
| 7 | **No per-record media on sessions/schedules.** | `MediaCollection` has no session/schedule collection |
## Structural mismatch to watch
Their bilingual shape is nested `{en, ar}` objects. Ours is paired columns
(`title` / `title_en`). Note our column named `title` holds **Arabic** (ar is default)
and `title_en` holds English — inverted vs their `en`-primary JSON. Any importer
must map deliberately, not positionally.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
/_next/static/chunks/019jqlahtv65a.js
/_next/static/chunks/05-c3ty_6dwfk.js
/_next/static/chunks/08l4o2kqkz124.js
/_next/static/chunks/08znw98bjfg46.js
/_next/static/chunks/0cz1d0mv5g_q7.js
/_next/static/chunks/0gnya7fjl70f2.js
/_next/static/chunks/0ha4m18glnjqn.js
/_next/static/chunks/0jw6-epmc6935.js
/_next/static/chunks/0l2f6jwnaw0u6.js
/_next/static/chunks/0muretizzk4bz.js
/_next/static/chunks/0ppd_gnt1se87.js
/_next/static/chunks/0qkbes79p4ol6.js
/_next/static/chunks/0zagx-fu9awcx.js
/_next/static/chunks/1-mscifclyyeh.js
/_next/static/chunks/11r816f4i_047.js
/_next/static/chunks/12ng9y1xmtxdd.js
/_next/static/chunks/14mrh2-p_w84d.js
/_next/static/chunks/1dv-l5-ekxhen.js
/_next/static/chunks/1lv66t1kbp4rj.js
/_next/static/chunks/1m1bk4ysjwco5.js
/_next/static/chunks/1nm1byem3rbw5.js
/_next/static/chunks/1o-zgrz0k2h21.js
/_next/static/chunks/1ovum2d4t-e9i.css
/_next/static/chunks/1owhzdexo8fra.js
/_next/static/chunks/1trqy_e13immx.js
/_next/static/chunks/1yppnjm-w98z9.js
/_next/static/chunks/2a1jo2s70pd2h.js
/_next/static/chunks/2a5xg-pq53e-t.js
/_next/static/chunks/2cyse6qyec4p7.js
/_next/static/chunks/2lo1xbzt0vwp9.js
/_next/static/chunks/2od4o208dj0j3.css
/_next/static/chunks/2qnzqqu7w4o11.css
/_next/static/chunks/2sc9pucoonj67.js
/_next/static/chunks/2srqhm9ocxlgq.js
/_next/static/chunks/3052uorqvfwp3.js
/_next/static/chunks/30szcjj7ftqhj.js
/_next/static/chunks/33i2wb26l7k9z.js
/_next/static/chunks/357x0l6q0nujn.js
/_next/static/chunks/37d_abynxh97l.js
/_next/static/chunks/3pd2v70ot66x9.js
/_next/static/chunks/3peubv2924kx4.js
/_next/static/chunks/3r8zlptpf2w59.js
/_next/static/chunks/3satit_ummjm0.js
/_next/static/chunks/3u6j3x5cjcekt.js
/_next/static/chunks/3ytgk48tmid27.css
/_next/static/chunks/40fbl23lnrjw6.js
/_next/static/chunks/44siw_5ljv6t5.js
/_next/static/chunks/turbopack-0lbkxzimfqgjk.js
/_next/static/media/9ff27b8a0a8f3dc0-s.p.40_3w74kn95bo.woff2
/_next/static/media/d41831e24743a3c1-s.p.08tn9snzkmifr.wo
/_next/static/media/d41831e24743a3c1-s.p.08tn9snzkmifr.woff2
This diff is collapsed.
· class="cairo_d172e7f5-module__sve5zq__className flex flex-col min-h-screen">
<main class=flex-1>
<h1 class=m_8a5d1357 mantine-Title-root>
· Loading...
<main class=flex flex-col min-h-screen>
· About Us
· Sports
· EL3B
· Branches
· Contact Us
· English
<section class=flex-1>
<h1 class=text-4xl md:text-6xl font-black mb-1! leading-tight rtl:font-cairo! m_8a5d1357 mantine-Tit>
· About Us
· OC Sport is an Egyptian joint-stock company established in 2015, specializing in club management and sports services locally and regionally. We provide integrat
[iframe src=https://www.youtube.com/embed/QBMS5s3Jp7U]
<h2 class=m_8a5d1357 mantine-Title-root>
· Vision
· To be the regional leader in club management and sports services by integrating the latest digital transformation systems and technology into operation and mana
<h2 class=m_8a5d1357 mantine-Title-root>
· Mission
· To develop youth and all athletes, as well as the field of club management and sports services, by providing integrated operational and marketing solutions. We
<h2 class=m_8a5d1357 mantine-Title-root>
· Competitive Advantage
· Practical experience exceeding 17 years in managing sports clubs across public and private sectors, and overseeing diverse activities within residential communi
· Fully licensed by the Ministry of Youth and Sports.
· A proven track record of successful collaborations with major real estate developers and government entities.
· We develop & lead tomorrow's athletic generation. The most trusted athletic service in Egypt.
· tiktok
<h3 class=m_8a5d1357 mantine-Title-root>
· Contact Information
· 010 66 13 6660
· [email protected]
· ELSHEIKH ZAYED, GIZA, EGYPT
<h3 class=m_8a5d1357 mantine-Title-root>
· Quick Links
· About Us
· EL3B
· Contact Us
<h3 class=m_8a5d1357 mantine-Title-root>
· Sports
· Gymnastics
· Football
· Women's Football
· Basketball
· Handball
<h3 class=m_8a5d1357 mantine-Title-root>
· Policies
· Refund Policy
· Terms & Conditions
· 2026
· OC-Sport.
· All rights reserved
· class="cairo_d172e7f5-module__sve5zq__className flex flex-col min-h-screen">
<main class=flex-1>
<h1 class=m_8a5d1357 mantine-Title-root>
· Loading...
<main class=flex flex-col min-h-screen>
· About Us
· Sports
· EL3B
· Branches
· Contact Us
· English
<section class=flex-1>
<h1 class=text-5xl font-bold gradient-text mb-1! m_8a5d1357 mantine-Title-root>
· Contact Us
· Have a question or want to join the club? Contact OC Sports through the following channels:
· Phone
· 010 66 13 6660
· Email
· [email protected]
· Address
· ELSHEIKH ZAYED, GIZA, EGYPT
<h2 class=m_8a5d1357 mantine-Title-root>
· Or send us a message directly through our contact form and our team will get back to you shortly.
<form>
· Name
[input type=text name= ph='Name']
· Email
[input type=email name= ph='Email']
· Subject
[input type=text name= ph='Subject']
· Message
· Send Message
[iframe src=https://www.google.com/maps/embed?pb=!1m18!1m12!1m3!1d3453.8363041901653!2d31.015208000000]
· We develop & lead tomorrow's athletic generation. The most trusted athletic service in Egypt.
· tiktok
<h3 class=m_8a5d1357 mantine-Title-root>
· Contact Information
· 010 66 13 6660
· [email protected]
· ELSHEIKH ZAYED, GIZA, EGYPT
<h3 class=m_8a5d1357 mantine-Title-root>
· Quick Links
· About Us
· EL3B
· Contact Us
<h3 class=m_8a5d1357 mantine-Title-root>
· Sports
· Gymnastics
· Football
· Women's Football
· Basketball
· Handball
<h3 class=m_8a5d1357 mantine-Title-root>
· Policies
· Refund Policy
· Terms & Conditions
· 2026
· OC-Sport.
· All rights reserved
· class="cairo_d172e7f5-module__sve5zq__className flex flex-col min-h-screen">
<main class=flex-1>
<h1 class=m_8a5d1357 mantine-Title-root>
· Loading...
<main class=flex flex-col min-h-screen>
· About Us
· Sports
· EL3B
· Branches
· Contact Us
· English
<section class=flex-1>
· El3b
<h2 class=text-4xl md:text-6xl font-black mb-1! leading-tight rtl:font-cairo! m_8a5d1357 mantine-Tit>
· About El3ab
· El3ab is a groundbreaking hyper-casual gaming platform that brings the excitement of classic and modern board games to the digital age. Designed with simplicity
· Download El3ab Now!
· Download on
· App Store
· Get it on
· Google Play
[img alt='El3ab App Screenshot' src=/_next/image?url=%2Fel3b-ui.webp&w=1920&q=75]
<h2 class=text-4xl font-black mb-1! leading-tight rtl:font-cairo! m_8a5d1357 mantine-Title-root>
· Why El3ab? Features
· Flexible Login Options
· Supports multiple registration methods, ensuring accessibility
· Game Variety
· Users can access and play any available game at their convenience.
· Online Events
· Participation in virtual competitions or broadcasts enhances engagement.
· Skill-Based Matchmaking
· Pairs players of similar skill levels to ensure balanced and competitive gameplay.
· AI Opponents
· Solo play against computer-controlled players offers practice opportunities.
· Progression Metrics
· Virtual points and leaderboards motivate continued play and improvement.
· Social Connectivity
· In-app friend lists and chat features foster community building.
· Tournament Participation
· Engaging in virtual tournaments with in-app rewards promotes competitiveness.
· Gamification Elements
· Incorporating game-like rewards and challenges can enhance user retention.
· Optimized Multiplayer Experience
· Ensuring low latency and seamless integration is crucial.
<h2 class=text-4xl font-black mb-2! m_8a5d1357 mantine-Title-root>
· Privacy Policy for El3ab
· Last Updated: December 26, 2025
· El3ab is committed to protecting your privacy. This Privacy Policy explains how information is collected, used, and shared when you play El3ab on iOS and Androi
<h3 class=m_8a5d1357 mantine-Title-root>
· 1. Information Collected
· To provide a seamless gaming experience, the following types of information are collected: Account Information - Gameplay & Performance Data - Social & Communic
<h3 class=m_8a5d1357 mantine-Title-root>
· 2. Use of Information
· The collected data is used to: Facilitate Gameplay, Matchmaking, Social Connectivity, Improve Performance, and Gamification.
<h3 class=m_8a5d1357 mantine-Title-root>
· 3. Data Sharing and Third Parties
· Personal data is never sold. Information may be shared with Service Providers, Other Players, or as required by Legal Requirements.
<h3 class=m_8a5d1357 mantine-Title-root>
· 4. User Rights and Data Deletion
· Players have the right to: Access/Update, Delete Account, and Opt-Out of tracking.
<h3 class=m_8a5d1357 mantine-Title-root>
· 5. Children’s Privacy
· El3ab is a hyper-casual platform intended for a general audience. Personal data is not knowingly collected from children under 13.
<h3 class=m_8a5d1357 mantine-Title-root>
· 6. Contact Information
· For questions about this policy, please contact:
· [email protected]
· We develop & lead tomorrow's athletic generation. The most trusted athletic service in Egypt.
· tiktok
<h3 class=m_8a5d1357 mantine-Title-root>
· Contact Information
· 010 66 13 6660
· [email protected]
· ELSHEIKH ZAYED, GIZA, EGYPT
<h3 class=m_8a5d1357 mantine-Title-root>
· Quick Links
· About Us
· EL3B
· Contact Us
<h3 class=m_8a5d1357 mantine-Title-root>
· Sports
· Gymnastics
· Football
· Women's Football
· Basketball
· Handball
<h3 class=m_8a5d1357 mantine-Title-root>
· Policies
· Refund Policy
· Terms & Conditions
· 2026
· OC-Sport.
· All rights reserved
· class="cairo_d172e7f5-module__sve5zq__className flex flex-col min-h-screen">
<main class=flex-1>
<h1 class=m_8a5d1357 mantine-Title-root>
· Loading...
<main class=flex flex-col min-h-screen>
· About Us
· Sports
· EL3B
· Branches
· Contact Us
· English
<section class=flex-1>
<h1 class=text-4xl md:text-6xl font-black mb-1! leading-tight rtl:font-cairo! m_8a5d1357 mantine-Tit>
· Football
· Football activity (football school - football sector participating in the official league of the Egyptian Football Association - women's football team) from 200
[img alt='Football' src=/_next/image?url=%2Ffootball-image.webp&w=1920&q=75]
· We develop & lead tomorrow's athletic generation. The most trusted athletic service in Egypt.
· tiktok
<h3 class=m_8a5d1357 mantine-Title-root>
· Contact Information
· 010 66 13 6660
· [email protected]
· ELSHEIKH ZAYED, GIZA, EGYPT
<h3 class=m_8a5d1357 mantine-Title-root>
· Quick Links
· About Us
· EL3B
· Contact Us
<h3 class=m_8a5d1357 mantine-Title-root>
· Sports
· Gymnastics
· Football
· Women's Football
· Basketball
· Handball
<h3 class=m_8a5d1357 mantine-Title-root>
· Policies
· Refund Policy
· Terms & Conditions
· 2026
· OC-Sport.
· All rights reserved
· class="cairo_d172e7f5-module__sve5zq__className flex flex-col min-h-screen">
<main class=flex-1>
<h1 class=m_8a5d1357 mantine-Title-root>
· Loading...
<main class=flex flex-col min-h-screen>
· About Us
· Sports
· EL3B
· Branches
· Contact Us
· English
<section class=flex-1>
· We develop & lead tomorrow's athletic generation. The most trusted athletic service in Egypt.
· tiktok
<h3 class=m_8a5d1357 mantine-Title-root>
· Contact Information
· 010 66 13 6660
· [email protected]
· ELSHEIKH ZAYED, GIZA, EGYPT
<h3 class=m_8a5d1357 mantine-Title-root>
· Quick Links
· About Us
· EL3B
· Contact Us
<h3 class=m_8a5d1357 mantine-Title-root>
· Sports
· Gymnastics
· Football
· Women's Football
· Basketball
· Handball
<h3 class=m_8a5d1357 mantine-Title-root>
· Policies
· Refund Policy
· Terms & Conditions
· 2026
· OC-Sport.
· All rights reserved
[img alt='Stadium lights background' src=/_next/image?url=%2Fstadium-lights-bg.webp&w=3840&q=90]
<h1 class=!text-[2.5rem] md:!text-[4rem] rtl:font-cairo! m_8a5d1357 mantine-Title-root>
· Welcome to
· OC-Sport
· The Road to Championship 🏆
· Get Started
[img alt='OC Sport Jersey - 1 - Front' src=/_next/image?url=%2Fyellow-jersey.webp&w=828&q=75]
[img alt='OC Sport Jersey - 1 - Back' src=/_next/image?url=%2Fyellow-jersey-back.webp&w=828&q=75]
[img alt='OC Sport Jersey - 2 - Front' src=/_next/image?url=%2Fblue-jersey.webp&w=828&q=75]
[img alt='OC Sport Jersey - 2 - Back' src=/_next/image?url=%2Fblue-jersey-back.webp&w=828&q=75]
[img alt='OC Sport Jersey - 3 - Front' src=/_next/image?url=%2Fred-jersey.webp&w=828&q=75]
[img alt='OC Sport Jersey - 3 - Back' src=/_next/image?url=%2Fred-jersey-back.webp&w=828&q=75]
[img alt='OC Sport Jersey - 4 - Front' src=/_next/image?url=%2Fgreen-jersey.webp&w=828&q=75]
[img alt='OC Sport Jersey - 4 - Back' src=/_next/image?url=%2Fgreen-jersey-back.webp&w=828&q=75]
[img alt='OC Sport Jersey - 5 - Front' src=/_next/image?url=%2Forange-jersey.webp&w=828&q=75]
[img alt='OC Sport Jersey - 5 - Back' src=/_next/image?url=%2Forange-jersey-back.webp&w=828&q=75]
· Experience Excellence
<h2 class=text-4xl md:text-6xl font-black mb-1! leading-tight rtl:font-cairo! m_8a5d1357 mantine-Tit>
· Who are we
· OC Sport is an Egyptian joint-stock company established in 2015, specializing in club management and sports services locally and regionally. We provide integrat
[img alt='About OC Sports' src=/_next/image?url=%2Fabout-us-section-image.webp&w=3840&q=75]
[img alt='Chairman & Founder - Dr. Yehia Fares' src=/_next/image?url=%2Fchairman-image.webp&w=3840&q=75]
<h3 class=text-3xl font-bold rtl:font-cairo! m_8a5d1357 mantine-Title-root>
· Dr. Yehia Fares
· Chairman & Founder
· Leadership
<h2 class=text-4xl md:text-5xl font-black mb-1! leading-tight rtl:font-cairo! m_8a5d1357 mantine-Tit>
· Chairman of the Board
· Qualifications
· PhD in Sports Management Sciences
· Founder and Chairman of OC Sport for Club and Sports Facilities Management.
· Chairman of El Batal El Olympi Club, officially registered with the Ministry of Youth and Sports.
· Founder and Chairman of Hewaya for Development and Investment.
· Sports Consultant for numerous clubs, federations, and real estate development companies.
· The Vision
<h2 class=text-4xl md:text-5xl font-black mb-1! rtl:font-cairo! m_8a5d1357 mantine-Title-root>
· EXPERIENCE OC SPORTS
[iframe src=https://www.youtube.com/embed/XVWkCN9mG3g]
· "We don't just train athletes; we build a community that thrives on excellence and determination."
<h2 class=m_8a5d1357 mantine-Title-root>
· Our Branches
· We have multiple branches in Sheikh Zayed, Maadi, New Cairo, and the North Coast, providing top-tier sports services to build a generation of athletic excellenc
[input type= name= ph='Search by name, area, or address']
<h2 class=text-lg font-extrabold text-white>
· Tap to learn more
<h2 class=text-lg font-extrabold text-white>
· Tap to learn more
<h2 class=text-lg font-extrabold text-white>
· Tap to learn more
<h2 class=text-lg font-extrabold text-white>
· Tap to learn more
<h2 class=text-lg font-extrabold text-white>
· Tap to learn more
<h2 class=text-lg font-extrabold text-white>
· Tap to learn more
· Opens at 31/08/2025 - 30/08/2026
<h2 class=text-lg font-extrabold text-white>
· Tap to learn more
· Opens at 31/08/2025 - 30/08/2026
<h2 class=text-lg font-extrabold text-white>
· Tap to learn more
· Opens at 30/06/2026 - 30/08/2026
<h2 class=text-lg font-extrabold text-white>
· Tap to learn more
· Opens at 30/06/2026 - 30/08/2026
<h2 class=text-lg font-extrabold text-white>
· Tap to learn more
· Opens at 30/06/2026 - 30/08/2026
<h2 class=text-lg font-extrabold text-white>
· Tap to learn more
· Opens at 30/06/2026 - 30/08/2026
<h2 class=text-lg font-extrabold text-white>
· Tap to learn more
· Opens at 30/06/2026 - 30/08/2026
<h2 class=text-lg font-extrabold text-white>
· Tap to learn more
· Opens at 30/06/2026 - 30/08/2026
<h2 class=text-lg font-extrabold text-white>
· Tap to learn more
· Opens at 19/09/2025 - 29/09/2025
<h2 class=text-lg font-extrabold text-white>
· Tap to learn more
· Get In Touch
<h2 class=text-4xl md:text-5xl font-black mb-1! leading-tight rtl:font-cairo! m_8a5d1357 mantine-Tit>
· Contact Us
· Have a question or want to join the club? Contact OC Sports through the following channels:
· Call Us
· +20 106 613 6660
· Email Us
· [email protected]
· Visit Us
· Sheikh Zayed, Giza, Egypt
<form class=relative z-10>
· Full Name
[input type= name=name ph='John Doe']
· Email Address
[input type= name=email ph='john@example.com']
· Subject
[input type= name=subject ph='How can we help?']
· Your Message
· Send Inquiry
· class="cairo_d172e7f5-module__sve5zq__className flex flex-col min-h-screen">
<main class=flex-1>
<h1 class=m_8a5d1357 mantine-Title-root>
· Loading...
<nav class=fixed top-0 left-0 right-0 z-[50] w-full flex justify-end !p-5 lg:backdrop-blur-none backd>
· English
<h1 class=m_8a5d1357 mantine-Title-root>
· Loading...
· class="cairo_d172e7f5-module__sve5zq__className flex flex-col min-h-screen">
<main class=flex-1>
<h1 class=m_8a5d1357 mantine-Title-root>
· Loading...
<main class=flex flex-col min-h-screen>
· About Us
· Sports
· EL3B
· Branches
· Contact Us
· English
<section class=flex-1>
<main class=flex-1 min-h-screen>
<h1 class=m_8a5d1357 mantine-Title-root>
· Loading...
· We develop & lead tomorrow's athletic generation. The most trusted athletic service in Egypt.
· tiktok
<h3 class=m_8a5d1357 mantine-Title-root>
· Contact Information
· 010 66 13 6660
· [email protected]
· ELSHEIKH ZAYED, GIZA, EGYPT
<h3 class=m_8a5d1357 mantine-Title-root>
· Quick Links
· About Us
· EL3B
· Contact Us
<h3 class=m_8a5d1357 mantine-Title-root>
· Sports
· Gymnastics
· Football
· Women's Football
· Basketball
· Handball
<h3 class=m_8a5d1357 mantine-Title-root>
· Policies
· Refund Policy
· Terms & Conditions
· 2026
· OC-Sport.
· All rights reserved
· class="cairo_d172e7f5-module__sve5zq__className flex flex-col min-h-screen">
<main class=flex-1>
<h1 class=m_8a5d1357 mantine-Title-root>
· Loading...
<nav class=fixed top-0 left-0 right-0 z-[50] w-full flex justify-end !p-5 lg:backdrop-blur-none backd>
· English
<h1 class=m_8a5d1357 mantine-Title-root>
· Loading...
about-us-section-image.webp
basketballimage.webp
blue-jersey-back.webp
blue-jersey.webp
chairman-image.webp
default-fallback-image.webp
el3b-ui.webp
football-image.webp
green-jersey-back.webp
green-jersey.webp
handball-image.webp
orange-jersey-back.webp
orange-jersey.webp
red-jersey-back.webp
red-jersey.webp
stadium-lights-bg.webp
yellow-jersey-back.webp
yellow-jersey.webp
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
{"success":true,"data":[]}
\ No newline at end of file
This diff is collapsed.
<!doctype html>
<html>
<head>
<title>OC-SPORT API</title>
<meta
name="description"
content="API for OC-SPORT application"
/>
<meta
name="og:description"
content="API for OC-SPORT application"
/>
<meta charset="utf-8" />
<meta
name="viewport"
content="width=device-width, initial-scale=1" />
<style>
body {
margin: 0;
}
</style>
<style>
.light-mode {
--scalar-color-1: #2a2f45;
--scalar-color-2: #757575;
--scalar-color-3: #8e8e8e;
--scalar-color-accent: #f06292;
--scalar-background-1: #fff;
--scalar-background-2: #f6f6f6;
--scalar-background-3: #e7e7e7;
--scalar-border-color: rgba(0, 0, 0, 0.1);
}
.dark-mode {
--scalar-color-1: rgba(255, 255, 255, 0.9);
--scalar-color-2: rgba(156, 163, 175, 1);
--scalar-color-3: rgba(255, 255, 255, 0.44);
--scalar-color-accent: #f06292;
--scalar-background-1: #111728;
--scalar-background-2: #1e293b;
--scalar-background-3: #334155;
--scalar-background-accent: #f062921f;
--scalar-border-color: rgba(255, 255, 255, 0.1);
}
/* Document Sidebar */
.light-mode .t-doc__sidebar,
.dark-mode .t-doc__sidebar {
--scalar-sidebar-background-1: var(--scalar-background-1);
--scalar-sidebar-color-1: var(--scalar-color-1);
--scalar-sidebar-color-2: var(--scalar-color-2);
--scalar-sidebar-border-color: var(--scalar-border-color);
--scalar-sidebar-item-hover-background: var(--scalar-background-2);
--scalar-sidebar-item-hover-color: currentColor;
--scalar-sidebar-item-active-background: #f062921f;
--scalar-sidebar-color-active: var(--scalar-color-accent);
--scalar-sidebar-search-background: transparent;
--scalar-sidebar-search-color: var(--scalar-color-3);
--scalar-sidebar-search-border-color: var(--scalar-border-color);
}
/* advanced */
.light-mode {
--scalar-button-1: rgb(49 53 56);
--scalar-button-1-color: #fff;
--scalar-button-1-hover: rgb(28 31 33);
--scalar-color-green: #069061;
--scalar-color-red: #ef0006;
--scalar-color-yellow: #edbe20;
--scalar-color-blue: #0082d0;
--scalar-color-orange: #fb892c;
--scalar-color-purple: #5203d1;
--scalar-scrollbar-color: rgba(0, 0, 0, 0.18);
--scalar-scrollbar-color-active: rgba(0, 0, 0, 0.36);
}
.dark-mode {
--scalar-button-1: #f6f6f6;
--scalar-button-1-color: #000;
--scalar-button-1-hover: #e7e7e7;
--scalar-color-green: #a3ffa9;
--scalar-color-red: #ffa3a3;
--scalar-color-yellow: #fffca3;
--scalar-color-blue: #a5d6ff;
--scalar-color-orange: #e2ae83;
--scalar-color-purple: #d2a8ff;
--scalar-scrollbar-color: rgba(255, 255, 255, 0.24);
--scalar-scrollbar-color-active: rgba(255, 255, 255, 0.48);
}
.section-flare {
width: 100%;
height: 400px;
position: absolute;
}
.section-flare-item:first-of-type:before {
content: "";
position: absolute;
top: 0;
right: 0;
bottom: 0;
left: 0;
--stripes: repeating-linear-gradient(100deg, #fff 0%, #fff 0%, transparent 2%, transparent 12%, #fff 17%);
--stripesDark: repeating-linear-gradient(100deg, #000 0%, #000 0%, transparent 10%, transparent 12%, #000 17%);
--rainbow: repeating-linear-gradient(100deg, #60a5fa 10%, #e879f9 16%, #5eead4 22%, #60a5fa 30%);
contain: strict;
contain-intrinsic-size: 100vw 40vh;
background-image: var(--stripesDark), var(--rainbow);
background-size: 300%, 200%;
background-position: 50% 50%, 50% 50%;
filter: opacity(20%) saturate(200%);
-webkit-mask-image: radial-gradient(ellipse at 100% 0%, black 40%, transparent 70%);
mask-image: radial-gradient(ellipse at 100% 0%, black 40%, transparent 70%);
pointer-events: none;
}
.section-flare-item:first-of-type:after {
content: "";
position: absolute;
top: 0;
right: 0;
bottom: 0;
left: 0;
background-image: var(--stripes), var(--rainbow);
background-size: 200%, 100%;
background-attachment: fixed;
mix-blend-mode: difference;
background-image: var(--stripesDark), var(--rainbow);
pointer-events: none;
}
.light-mode .section-flare-item:first-of-type:after,
.light-mode .section-flare-item:first-of-type:before {
background-image: var(--stripes), var(--rainbow);
filter: opacity(4%) saturate(200%);
}
</style>
</head>
<body>
<script
id="api-reference"
data-url="docs/json"
data-configuration='{"spec":{"url":"docs/json"},"_integration":"elysiajs"}'
>
</script>
<script src="https://cdn.jsdelivr.net/npm/@scalar/api-reference@latest/dist/browser/standalone.min.js" crossorigin></script>
</body>
</html>
\ No newline at end of file
This diff is collapsed.
Unauthorized
\ No newline at end of file
Unauthorized
\ No newline at end of file
Unauthorized
\ No newline at end of file
This diff is collapsed.
This diff is collapsed.
(globalThis.TURBOPACK||(globalThis.TURBOPACK=[])).push(["object"==typeof document?document.currentScript:void 0,33525,(e,r,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"warnOnce",{enumerable:!0,get:function(){return n}});let n=e=>{}},18967,(e,r,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var n={DecodeError:function(){return P},MiddlewareNotFoundError:function(){return O},MissingStaticPage:function(){return h},NormalizeError:function(){return E},PageNotFoundError:function(){return b},SP:function(){return m},ST:function(){return y},WEB_VITALS:function(){return i},execOnce:function(){return u},getDisplayName:function(){return l},getLocationOrigin:function(){return c},getURL:function(){return f},isAbsoluteUrl:function(){return a},isResSent:function(){return d},loadGetInitialProps:function(){return g},normalizeRepeatedSlashes:function(){return p},stringifyError:function(){return N}};for(var o in n)Object.defineProperty(t,o,{enumerable:!0,get:n[o]});let i=["CLS","FCP","FID","INP","LCP","TTFB"];function u(e){let r,t=!1;return(...n)=>(t||(t=!0,r=e(...n)),r)}let s=/^[a-zA-Z][a-zA-Z\d+\-.]*?:/,a=e=>s.test(e);function c(){let{protocol:e,hostname:r,port:t}=window.location;return`${e}//${r}${t?":"+t:""}`}function f(){let{href:e}=window.location,r=c();return e.substring(r.length)}function l(e){return"string"==typeof e?e:e.displayName||e.name||"Unknown"}function d(e){return e.finished||e.headersSent}function p(e){let r=e.split("?");return r[0].replace(/\\/g,"/").replace(/\/\/+/g,"/")+(r[1]?`?${r.slice(1).join("?")}`:"")}async function g(e,r){let t=r.res||r.ctx&&r.ctx.res;if(!e.getInitialProps)return r.ctx&&r.Component?{pageProps:await g(r.Component,r.ctx)}:{};let n=await e.getInitialProps(r);if(t&&d(t))return n;if(!n)throw Object.defineProperty(Error(`"${l(e)}.getInitialProps()" should resolve to an object. But found "${n}" instead.`),"__NEXT_ERROR_CODE",{value:"E1025",enumerable:!1,configurable:!0});return n}let m="u">typeof performance,y=m&&["mark","measure","getEntriesByName"].every(e=>"function"==typeof performance[e]);class P extends Error{}class E extends Error{}class b extends Error{constructor(e){super(),this.code="ENOENT",this.name="PageNotFoundError",this.message=`Cannot find module for page: ${e}`}}class h extends Error{constructor(e,r){super(),this.message=`Failed to load static file for page: ${e} ${r}`}}class O extends Error{constructor(){super(),this.code="ENOENT",this.message="Cannot find the middleware module"}}function N(e){return JSON.stringify({message:e.message,stack:e.stack})}},98183,(e,r,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var n={assign:function(){return a},searchParamsToUrlQuery:function(){return i},urlQueryToSearchParams:function(){return s}};for(var o in n)Object.defineProperty(t,o,{enumerable:!0,get:n[o]});function i(e){let r={};for(let[t,n]of e.entries()){let e=r[t];void 0===e?r[t]=n:Array.isArray(e)?e.push(n):r[t]=[e,n]}return r}function u(e){return"string"==typeof e?e:("number"!=typeof e||isNaN(e))&&"boolean"!=typeof e?"":String(e)}function s(e){let r=new URLSearchParams;for(let[t,n]of Object.entries(e))if(Array.isArray(n))for(let e of n)r.append(t,u(e));else r.set(t,u(n));return r}function a(e,...r){for(let t of r){for(let r of t.keys())e.delete(r);for(let[r,n]of t.entries())e.append(r,n)}return e}}]);
\ No newline at end of file
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment