25 Commits
Author SHA1 Message Date
moh dc21c33867 ADDED - Admin SEO page, robots/sitemap hardening and media/maintenance security fixes
SEO
- New Settings > SEO admin page (seo_settings in app_config): indexing switch,
  Google/Bing verification, X handle, JSON-LD identity (Person/Organization,
  sameAs), per-locale keywords, readiness checklist and open links for
  sitemap.xml / robots.txt / manifest.
- robots.txt is now dynamic: disallows admin, api, success and coming-soon
  paths; blocks everything while indexing is off or maintenance is on.
- sitemap.xml carries hreflang alternates per URL, lists only categories with
  published projects, and is empty while hidden.
- Metadata: robots + verification meta, og:locale in de_DE/en_US/ar_AR form,
  alternateLocale, twitter site/creator, project cover as OG image with
  article type, noindex on /success and /coming-soon.
- JSON-LD: WebSite + publisher graph on all public pages, CreativeWork per
  project (view-mode independent).

Security
- Maintenance bypass now requires a correctly signed admin cookie; the
  middleware previously only checked the cookie existed. Token helpers moved
  to lib/admin-session-token.ts (shared by proxy.ts and lib/admin-auth.ts).
- Media uploads: magic-byte validation against the declared type, SVG
  sanitization (script/handlers/foreignObject/javascript: rejected), upload
  folder sanitized, kind inferred from the real file.
- Media route: fixed prefix-based path check that accepted sibling
  directories, unknown extensions return 404, nosniff header, CSP sandbox on
  SVG, gif content type added.
- External media URLs: protocol-relative (//host) URLs rejected.

Portfolio
- Project and category slugs share /portfolio/[slug]; saving now rejects a
  slug already used on the other side instead of silently shadowing it.

Tooling/docs
- Lint: ignore scripts/legacy-prisma-seed.cjs, drop unused import.
- New docs/SEO.md; FEATURES, ARCHITECTURE (Drizzle instead of Prisma), admin
  spec and CLAUDE.md updated.
- Tests for all of the above (unit + integration); suite green.
2026-09-20 21:36:16 +02:00
Moh b2b90bd1bf STYLED - Trim coming-soon to title + countdown
CI / quality (push) Canceled after 0s
- Remove the status badge, kicker, and description texts
- Keep only the title and the countdown (all locales)
2026-08-08 03:48:19 +02:00
Moh aadc93e870 STYLED - Simplify closed coming-soon page
CI / quality (push) Canceled after 0s
- Remove CTA buttons (site is closed, no navigation)
- Drop the card wrapper: content sits on the page background, gradient included
- Remove the launch label; keep the countdown
- Fit the viewport (no scroll)
2026-08-08 03:34:02 +02:00
MohFarawati b8a02f9e90 feat(coming-soon): premium themed redesign with launch countdown
CI / quality (push) Waiting to run
Full refactor of the maintenance/coming-soon page for all locales (de/en/ar,
RTL-aware) with a refined, theme-aware (light + dark) premium composition:
glass panel, live status indicator, hero title, description, launch countdown
and CTAs. Reuses the existing hero/motion system; no new dependencies.

- Add components/site/launch-countdown.tsx: hydration-safe client countdown
  (days/hours/minutes/seconds), localized labels, Arabic-aware typography,
  "launched" fallback when the target passes.
- Rewrite app/[locale]/coming-soon/page.tsx around the countdown and a single
  easy-to-edit LAUNCH_DATE_ISO constant (default ~45 days out).
- Add comingSoon i18n keys (status, countdownLabel, unit labels, launched)
  to en/de/ar.
2026-07-14 21:20:29 +02:00
MOH 4e8056cd04 Improve coming soon page 2026-05-12 09:16:00 +02:00
MOHandClaude Sonnet 4.6 868eb80374 Simplify hero backgrounds and add entrance animations
- Replace animated blob/wave/noise backdrop with clean static gradient
  (radial ellipse highlights + linear fade) in hero-motion-backdrop
- Remove all framer-motion from background layer; delete unused CSS
  classes: hero-blob, hero-sheet-glow, hero-sheet-wave, hero-sheet-noise,
  hero-title-shift keyframe, and responsive blob media queries
- Add framer-motion stagger entrance to HeroContentMotion, HeroMotionItem,
  and HeroTitle (slide-up + fade on mount)
- Refactor coming-soon page to use HeroContentMotion/HeroMotionItem
  instead of MotionFade (whileInView unreliable above the fold)

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-17 22:48:51 +01:00
MOH 288e4b37d7 Fix request locale resolution in site pages
CI / quality (push) Waiting to run
2026-03-15 08:20:39 +01:00
MOH c18128c965 Fix runtime default locale resolution
CI / quality (push) Waiting to run
2026-03-15 06:02:27 +01:00
MOH dfed5ec831 Fix coming soon locale caching
CI / quality (push) Waiting to run
2026-03-15 04:46:44 +01:00
MOH 364f761420 Fix dynamic default locale routing 2026-03-15 04:41:08 +01:00
MOH e32ac4cacb Upgrade app to Next.js 16
CI / quality (push) Waiting to run
2026-03-13 15:50:37 +01:00
MOH c009f71e39 some fixes to heros
CI / quality (push) Waiting to run
2026-03-09 08:07:47 +01:00
MOH 8f87169da1 Refactor shared hero structure 2026-03-09 07:14:11 +01:00
MOH 97ac06e89a Refine hero typography and coming soon flow 2026-03-08 06:15:36 +01:00
MOH ac14214e9c Refresh coming soon page with new brand direction 2026-03-08 05:21:55 +01:00
MOH 0c2b67e378 Refactor site header, heroes, and design system 2026-03-08 00:29:51 +01:00
MOH a18370d003 Refine root UI around shadcn primitives
CI / quality (push) Waiting to run
2026-03-07 22:28:52 +01:00
MOH 985fbe1745 Refine coming soon experience and global ambient UI
CI / quality (push) Waiting to run
2026-03-07 20:08:59 +01:00
MOH 03e3254186 fix coming soon page title metadata
CI / quality (push) Waiting to run
2026-03-07 19:53:53 +01:00
MOH f259dfc6bd Add SEO settings and root admin save flows
CI / quality (push) Waiting to run
2026-03-07 18:48:01 +01:00
MOH 7f4277d1d7 Finalize multilingual routing and translations
CI / quality (push) Waiting to run
2026-03-07 14:10:30 +01:00
MOH 7a20cf5c75 Refine coming-soon UI glass controls and language toggle 2026-03-06 16:17:37 +01:00
MOH d070c32a85 Move admin panel to /root and decouple it from locale routing 2026-03-06 15:15:53 +01:00
MOH 96a0d7f8bb Fix root access flow by forcing document navigation for Basic Auth
CI / quality (push) Waiting to run
2026-03-06 15:02:46 +01:00
MOH f86b7f39f7 feat: initialize mohfarawati app foundation
CI / quality (push) Waiting to run
2026-03-06 13:53:57 +01:00