From 61dd85133c86e1b21de3a6b0f11b01be822d505d Mon Sep 17 00:00:00 2001 From: ayrisdev Date: Sat, 22 Aug 2026 22:57:03 +0300 Subject: [PATCH] feat: enhance landing page, Telegram webhook, SEO suite, and cookie consent banner --- .env.example | 14 + .gitignore | 1 + .impeccable/config.json | 3 + .../critique/2026-08-16T01-13-38Z__app.md | 76 + .impeccable/design.json | 289 ++++ DESIGN.md | 208 +++ PRODUCT.md | 50 + app/[locale]/admin/layout.tsx | 100 +- app/[locale]/admin/page.tsx | 35 +- app/[locale]/iletisim/page.tsx | 125 ++ app/[locale]/layout.tsx | 186 ++- app/[locale]/login/layout.tsx | 18 + app/[locale]/login/page.tsx | 51 +- app/[locale]/page.tsx | 1395 +++++++++++------ app/[locale]/privacy-app/page.tsx | 214 ++- app/[locale]/privacy/page.tsx | 172 +- app/api/contact/route.ts | 96 +- app/globals.css | 173 +- app/robots.ts | 16 + app/sitemap.ts | 35 + components/contact-form.tsx | 231 ++- components/cookie-banner.tsx | 97 ++ docs/detay.md | 554 +++++++ package-lock.json | 19 +- package.json | 2 +- public/og-image.jpg | Bin 0 -> 533242 bytes 26 files changed, 3264 insertions(+), 896 deletions(-) create mode 100644 .env.example create mode 100644 .impeccable/config.json create mode 100644 .impeccable/critique/2026-08-16T01-13-38Z__app.md create mode 100644 .impeccable/design.json create mode 100644 DESIGN.md create mode 100644 PRODUCT.md create mode 100644 app/[locale]/iletisim/page.tsx create mode 100644 app/[locale]/login/layout.tsx create mode 100644 app/robots.ts create mode 100644 app/sitemap.ts create mode 100644 components/cookie-banner.tsx create mode 100644 docs/detay.md create mode 100644 public/og-image.jpg diff --git a/.env.example b/.env.example new file mode 100644 index 0000000..a52a2ca --- /dev/null +++ b/.env.example @@ -0,0 +1,14 @@ +# ───────────────────────────────────────────────────────────────────────────── +# AyrisLegal Çevre Değişkenleri (.env.local) +# ───────────────────────────────────────────────────────────────────────────── + +# Telegram Bot Bildirim Ayarları +# 1. @BotFather üzerinden yeni bot açıp token alın: +TELEGRAM_BOT_TOKEN="123456789:ABCdefGhIJKlmNoPQRsTUVwxyZ" + +# 2. Bildirimin geleceği sohbet veya grup ID'si (Örn: @userinfobot veya grup ID): +TELEGRAM_CHAT_ID="-1001234567890" + +# Veritabanı & Demo Ayarları +DATABASE_URL="postgresql://user:password@localhost:5432/ayrislegal" +USE_MOCK=true diff --git a/.gitignore b/.gitignore index 5ef6a52..7b8da95 100644 --- a/.gitignore +++ b/.gitignore @@ -32,6 +32,7 @@ yarn-error.log* # env files (can opt-in for committing if needed) .env* +!.env.example # vercel .vercel diff --git a/.impeccable/config.json b/.impeccable/config.json new file mode 100644 index 0000000..747d7b3 --- /dev/null +++ b/.impeccable/config.json @@ -0,0 +1,3 @@ +{ + "buildPath": "code" +} diff --git a/.impeccable/critique/2026-08-16T01-13-38Z__app.md b/.impeccable/critique/2026-08-16T01-13-38Z__app.md new file mode 100644 index 0000000..d054121 --- /dev/null +++ b/.impeccable/critique/2026-08-16T01-13-38Z__app.md @@ -0,0 +1,76 @@ +--- +target: app +total_score: 18 +max_score: 24 +na_heuristics: 7,10 +p0_count: 0 +p1_count: 2 +timestamp: 2026-08-16T01-13-38Z +slug: app +--- +# Design Critique: app (AyrisLegal Web Application & Landing Surface) + +**Method:** dual-agent (A: `e6f7d208-1fbc-4daa-b3a3-962cc0a92ccc` · B: `a945c7f8-9c10-46ce-aeef-f16ddea465de`) +**Target:** `app` (`app/[locale]/page.tsx`, `components/contact-form.tsx`, `app/globals.css`) +**Design Reference:** `DESIGN.md` ("The Modern Jurist Studio") & `PRODUCT.md` + +--- + +### Design Health Score + +Mode: **Persuade** (Marketing & Conversion Landing Surface). *Heuristics 7 & 10 scored n/a per mode-applicability rules.* + +| # | Heuristic | Score | Key Finding / Rationale | +|---|---|:---:|---| +| **1** | Visibility of System Status | **3/4** | Clear "Gönderiliyor…" and confirmation states on form; live pulse in hero. Minor gap: no inline field-level entry feedback. | +| **2** | Match System / Real World | **4/4** | **Exceptional.** Speaks authentic Turkish legal terminology (*Tensip zaptı, Esas/Karar, Bilirkişi raporu, Çelişki tespiti, UDF/UYAP*). Zero generic fluff. | +| **3** | User Control and Freedom | **3/4** | Annual/monthly pricing toggle is smooth and reversible; clear section navigation. Success state lacks in-place reset. | +| **4** | Consistency and Standards | **2/4** | Severe token drift between `globals.css` (Dark Navy/Teal), `page.tsx` (White/Red), and `login` (Blue). Form placement rule violated on home page. | +| **5** | Error Prevention | **2/4** | Contact form has `noValidate` with no client-side regex or length validation. Unrestricted phone input formatting. | +| **6** | Recognition Rather Than Recall | **3/4** | Clear side-by-side pricing tier inclusions and visible document artifact previews. | +| **7** | Flexibility and Efficiency | **n/a** | *Mode: Persuade.* Accelerators and power-user shortcuts are not applicable to a landing page. | +| **8** | Aesthetic & Minimalist Design | **3/4** | Strong typographic hierarchy with Archivo and JetBrains Mono. Undersized text (<11px) and repetitive eyebrow kickers add minor noise. | +| **9** | Error Recovery | **1/4** | Critical gap in `ContactForm`: API 400 errors collapse into a generic message without field-level error highlights or recovery guidance. | +| **10** | Help and Documentation | **n/a** | *Mode: Persuade.* In-depth app docs not applicable; key questions handled in SSS accordion. | +| **Total** | | **18/24** | **Good (75%)** *(Renormalized over 8 applicable heuristics)* | + +--- + +### Design Specificity Verdict + +- **Domain Specificity:** High. Real Turkish judicial procedural artifacts (*Kira Tespiti Bilirkişi Raporu, 2024/100 Esas Tensip Zaptı, Yargıtay Ceza Genel Kurulu*) anchor the product deeply in authentic attorney workflows. +- **Architectural Clichés Identified:** Repetitive uppercase eyebrow chips above 5 headings, numbered `01 / 02 / 03` section tags, and an abrupt full-dark section inversion (`bg-zinc-950`) in the security module. +- **Deterministic Scan Summary:** 14 findings detected. True issues confirmed for `gradient-text`, legacy `codex-grid-background` in `globals.css`, undersized UI text (<11px in document badges), `low-contrast` text (`text-zinc-400` @ 2.59:1), and generic `blue-600` styling in `login/page.tsx`. +- **False Positives Dismissed:** Deep ambient card shadows (`0 30px 70px -25px rgba(...)`) and the `LivePulse` red status dot were verified as intentional tokens documented in `DESIGN.md`. + +--- + +### Priority Issues + +1. **[P1] Architecture & Scope Violation: Contact Form embedded on Homepage instead of dedicated `/iletisim`** + - *Why it matters:* Violates explicit project rules in `AGENTS.md` and `PRODUCT.md` (*"İletişim formu sadece /iletisim sayfasında — ana sayfada olmaz"*), cluttering homepage conversion and eliminating dedicated landing routes. + - *Fix:* Create `app/[locale]/iletisim/page.tsx` with the complete lead form; replace the homepage bottom section with an editorial CTA card linking to `/iletisim`. + - *Suggested Command:* `/impeccable layout app/[locale]/page.tsx` + +2. **[P1] Contact Form Payload Mismatch & Error Recovery Breakdown** + - *Why it matters:* In `contact-form.tsx`, `org` is sent as `barNo` and `phone` as `message`. Furthermore, `noValidate` bypasses browser validation and API 400 responses swallow field-specific feedback. + - *Fix:* Align payload keys with backend schema, implement accessible inline validation, visible focus rings, and `aria-live` alert regions. + - *Suggested Command:* `/impeccable harden components/contact-form.tsx` + +3. **[P2] Design System Token & Palette Schism (`globals.css` vs `DESIGN.md` vs `login`)** + - *Why it matters:* `globals.css` configures Dark Navy + Teal, while `DESIGN.md` and `page.tsx` use Paper White + Zinc + Ayris Red, and `login` uses generic `blue-600`. + - *Fix:* Align `globals.css` `:root` tokens directly with `DESIGN.md` (`--primary: #E61919`, `--background: #FFFFFF`, `--border: #E4E4E7`, `--muted-foreground: #71717A`), purge unused teal/orb styles, and update `login/page.tsx`. + - *Suggested Command:* `/impeccable typeset app/globals.css` + +4. **[P2] Mobile Loss of Core Feature Demonstration (*Çelişki Avcısı*) & Legibility Deficits** + - *Why it matters:* The signature *Çelişki Avcısı* card is hidden on mobile screens (`hidden sm:block`), depriving mobile lawyers of the primary differentiator. Additionally, multiple metadata tags use undersized text (<10px) and low-contrast `zinc-400`. + - *Fix:* Inline the contradiction detection callout into the mobile document stream, enforce a minimum 11px font size floor, and update `text-zinc-400` to WCAG-compliant `text-zinc-500`. + - *Suggested Command:* `/impeccable adapt app/[locale]/page.tsx` + +--- + +### Persona Red Flags + +- **"Jordan" (Confused First-Timer Attorney):** Hero CTA promises *"Ücretsiz Deneyin"* (implies self-serve trial), but links to a form stating *"Kurucu ekipten biri sizi arar — 15 dakikalık canlı demo"*. This creates expectation mismatch and friction. +- **"Casey" (Distracted Mobile Attorney on the go):** Loses the entire *Çelişki Avcısı* demonstration on screens under 640px. Pricing toggle buttons have tight touch targets. +- **"Av. Mehmet" (Litigation Lawyer):** Sees only tenancy disputes (*Kira Tespit Davası*) in previews; wants proof that AyrisLegal handles complex criminal or heavy commercial court dockets. diff --git a/.impeccable/design.json b/.impeccable/design.json new file mode 100644 index 0000000..25543e5 --- /dev/null +++ b/.impeccable/design.json @@ -0,0 +1,289 @@ +{ + "schemaVersion": 2, + "generatedAt": "2026-08-16T04:11:00.000Z", + "title": "Design System: AyrisLegal", + "extensions": { + "colorMeta": { + "primary": { + "role": "primary", + "displayName": "Ayris Legal Red", + "canonical": "#E61919", + "tonalRamp": [ + "#4A0404", + "#700707", + "#9E0B0B", + "#B8140F", + "#E61919", + "#F87171", + "#FCA5A5", + "#FDEEEC" + ] + }, + "primary-dark": { + "role": "primary", + "displayName": "Deep Crimson", + "canonical": "#B8140F", + "tonalRamp": [ + "#3D0303", + "#5C0606", + "#8A0909", + "#B8140F", + "#E61919", + "#EF4444", + "#F87171", + "#FDEEEC" + ] + }, + "primary-soft": { + "role": "neutral", + "displayName": "Soft Rose Tint", + "canonical": "#FDEEEC", + "tonalRamp": [ + "#B8140F", + "#E61919", + "#F87171", + "#FCA5A5", + "#FECACA", + "#FEE2E2", + "#FDEEEC", + "#FFF5F5" + ] + }, + "neutral-bg": { + "role": "neutral", + "displayName": "Paper White", + "canonical": "#FFFFFF", + "tonalRamp": [ + "#09090B", + "#18181B", + "#27272A", + "#71717A", + "#A1A1AA", + "#E4E4E7", + "#FAFAFA", + "#FFFFFF" + ] + }, + "neutral-surface": { + "role": "neutral", + "displayName": "Subtle Surface Tint", + "canonical": "#FAFAFA", + "tonalRamp": [ + "#09090B", + "#18181B", + "#3F3F46", + "#71717A", + "#D4D4D8", + "#E4E4E7", + "#F4F4F5", + "#FAFAFA" + ] + }, + "neutral-border": { + "role": "neutral", + "displayName": "Hairline Border Zinc", + "canonical": "#E4E4E7", + "tonalRamp": [ + "#18181B", + "#27272A", + "#52525B", + "#71717A", + "#A1A1AA", + "#D4D4D8", + "#E4E4E7", + "#F4F4F5" + ] + }, + "neutral-muted": { + "role": "neutral", + "displayName": "Muted Caption Slate", + "canonical": "#71717A", + "tonalRamp": [ + "#18181B", + "#27272A", + "#3F3F46", + "#52525B", + "#71717A", + "#A1A1AA", + "#D4D4D8", + "#E4E4E7" + ] + }, + "neutral-text": { + "role": "neutral", + "displayName": "Deep Ink Black", + "canonical": "#09090B", + "tonalRamp": [ + "#09090B", + "#18181B", + "#27272A", + "#3F3F46", + "#52525B", + "#71717A", + "#A1A1AA", + "#E4E4E7" + ] + } + }, + "typographyMeta": { + "display": { + "displayName": "Display", + "purpose": "Hero headlines and commanding value propositions." + }, + "headline": { + "displayName": "Headline", + "purpose": "Section headings and core feature titles." + }, + "title": { + "displayName": "Title", + "purpose": "Card titles, module headers, and modal names." + }, + "body": { + "displayName": "Body", + "purpose": "Long-form explanations, case summaries, and narrative text." + }, + "label": { + "displayName": "Label / Mono", + "purpose": "Case numbers, dates, badge pills, and legal metadata." + } + }, + "shadows": [ + { + "name": "card-float", + "value": "0 30px 70px -25px rgba(24, 24, 27, 0.25)", + "purpose": "Applied to hero browser preview frames and featured product mockups for dramatic physical lift." + }, + { + "name": "overlay-pop", + "value": "0 20px 45px -15px rgba(24, 24, 27, 0.20)", + "purpose": "Applied to offset badges (e.g. Çelişki Avcısı pill) and floating status widgets." + }, + { + "name": "form-card", + "value": "0 20px 60px -30px rgba(24, 24, 27, 0.20)", + "purpose": "Applied to interactive inquiry and lead generation forms on /iletisim." + } + ], + "motion": [ + { + "name": "ease-out-smooth", + "value": "cubic-bezier(0.16, 1, 0.3, 1)", + "purpose": "Spring transitions for scroll reveals and card entry animations." + }, + { + "name": "magnetic-spring", + "value": "spring(stiffness: 150, damping: 15, mass: 0.5)", + "purpose": "Subtle cursor attraction physics on primary CTA buttons." + } + ], + "breakpoints": [ + { "name": "sm", "value": "640px" }, + { "name": "md", "value": "768px" }, + { "name": "lg", "value": "1024px" }, + { "name": "xl", "value": "1280px" }, + { "name": "2xl", "value": "1400px" } + ] + }, + "components": [ + { + "name": "Primary Action Button", + "kind": "button", + "refersTo": "button-primary", + "description": "High-intent primary conversion button with pill geometry and crimson hover state.", + "html": "Ücretsiz Deneyin ", + "css": ".ds-btn-primary { display: inline-flex; align-items: center; justify-content: center; gap: 8px; border-radius: 9999px; background: #E61919; color: #FFFFFF; font-family: 'Archivo', sans-serif; font-size: 15px; font-weight: 600; padding: 14px 28px; text-decoration: none; border: none; cursor: pointer; transition: background 0.15s ease, transform 0.15s ease; } .ds-btn-primary:hover { background: #B8140F; } .ds-btn-primary:active { transform: scale(0.98); }" + }, + { + "name": "Outline Secondary Button", + "kind": "button", + "refersTo": "button-outline", + "description": "Secondary exploratory button with hairline border and subtle zinc hover tone.", + "html": "Nasıl Çalışır?", + "css": ".ds-btn-outline { display: inline-flex; align-items: center; justify-content: center; gap: 8px; border-radius: 9999px; background: #FFFFFF; color: #18181B; border: 1.5px solid #E4E4E7; font-family: 'Archivo', sans-serif; font-size: 15px; font-weight: 600; padding: 14px 28px; text-decoration: none; cursor: pointer; transition: background 0.15s ease; } .ds-btn-outline:hover { background: #FAFAFA; border-color: #D4D4D8; }" + }, + { + "name": "Elevated Browser Mock Card", + "kind": "card", + "refersTo": "card-elevated", + "description": "Floating browser frame mockup with window chrome dots and deep ambient drop shadow.", + "html": "
ayrislegal.com
Bilirkişi Raporu - Kira Tespiti15.01.2026
", + "css": ".ds-browser-card { width: 100%; border-radius: 28px; border: 1px solid rgba(228, 228, 231, 0.7); background: #FFFFFF; box-shadow: 0 30px 70px -25px rgba(24, 24, 27, 0.25); overflow: hidden; font-family: 'Archivo', sans-serif; } .ds-browser-header { display: flex; align-items: center; gap: 8px; padding: 12px 16px; background: #FAFAFA; border-bottom: 1px solid #E4E4E7; } .ds-dot { width: 10px; height: 10px; border-radius: 50%; background: #D4D4D8; } .ds-browser-url { flex: 1; text-align: center; font-size: 12px; color: #A1A1AA; font-family: 'JetBrains Mono', monospace; } .ds-browser-body { padding: 20px; } .ds-file-item { display: flex; justify-content: space-between; align-items: center; padding: 12px 16px; border: 1px solid #F4F4F5; border-radius: 16px; } .ds-file-name { font-size: 13.5px; font-weight: 600; color: #3F3F46; } .ds-file-date { font-size: 11.5px; color: #A1A1AA; font-family: 'JetBrains Mono', monospace; }" + }, + { + "name": "Lead Input Field", + "kind": "input", + "refersTo": "input-field", + "description": "Comfortable 46px text field with 12px corners and Ayris Red focus stroke transition.", + "html": "
", + "css": ".ds-field-wrap { display: flex; flex-direction: column; gap: 6px; font-family: 'Archivo', sans-serif; } .ds-field-label { font-size: 13px; font-weight: 600; color: #09090B; } .ds-field-input { width: 100%; min-height: 46px; border-radius: 12px; border: 1.5px solid #E4E4E7; background: #FFFFFF; padding: 10px 16px; font-size: 14px; color: #09090B; outline: none; transition: border-color 0.15s ease; box-sizing: border-box; } .ds-field-input:focus { border-color: #E61919; }" + }, + { + "name": "Accent Chip Badge", + "kind": "chip", + "refersTo": "badge-accent", + "description": "Soft rose pill badge with deep crimson text for feature category callouts.", + "html": " Avukatlar için yapay zeka destekli hukuki asistan", + "css": ".ds-chip-badge { display: inline-flex; align-items: center; gap: 8px; border-radius: 9999px; background: #FDEEEC; color: #B8140F; font-family: 'Archivo', sans-serif; font-size: 13px; font-weight: 600; padding: 6px 14px; }" + }, + { + "name": "Live Indicator Pulse", + "kind": "custom", + "refersTo": "live-pulse", + "description": "Concentric pulsing status indicator for live document analysis and courtroom feeds.", + "html": "", + "css": ".ds-pulse-wrap { position: relative; display: inline-flex; width: 8px; height: 8px; } .ds-pulse-ring { position: absolute; width: 100%; height: 100%; border-radius: 50%; background: #E61919; opacity: 0.6; animation: ds-ping 1.6s cubic-bezier(0, 0, 0.2, 1) infinite; } .ds-pulse-dot { position: relative; display: inline-flex; width: 8px; height: 8px; border-radius: 50%; background: #E61919; } @keyframes ds-ping { 0% { transform: scale(1); opacity: 0.6; } 100% { transform: scale(2.4); opacity: 0; } }" + } + ], + "narrative": { + "northStar": "The Modern Jurist Studio", + "overview": "The AyrisLegal design system embodies rigorous editorial precision, surgical focus, and high-trust clarity. Built for Turkish lawyers navigating dense case dockets, precedent archives, and evidentiary records, the interface rejects noisy SaaS clichés in favor of stark white-and-zinc architectural surfaces punctuated by deliberate, high-contrast Ayris Red accents.\n\nThe aesthetic philosophy bridges judicial gravitas with cutting-edge analytical intelligence. Typographic hierarchy is tight, bold, and authoritative. Cards, preview frames, and case documents float cleanly above the canvas with deep ambient drop shadows, giving digital artifacts physical substance and scanability.", + "keyCharacteristics": [ + "Stark editorial canvas: pure white (#FFFFFF) and architectural zinc neutrals (#FAFAFA, #F4F4F5, #E4E4E7, #09090B).", + "Singular, surgical accent: high-contrast Ayris Legal Red (#E61919) used strictly for high-intent actions, critical alerts, and focal insights.", + "Authoritative typography: Archivo with tight tracking (-0.03em) and heavy weights for display, paired with JetBrains Mono for dates, case numbers, and system badges.", + "Confident tactile geometry: pill-shaped primary action buttons (rounded-full), generous 24px container corners, and layered floating cards with deep ambient shadows.", + "Zero fluff: no decorative gradient text, no floating particle meshes, and no icon-stuffed bento boxes." + ], + "rules": [ + { + "name": "The Rarity Rule", + "body": "The Ayris Red accent is applied to ≤5% of any viewport. Its scarcity is what commands immediate cognitive attention when flagging legal conflicts or driving conversion.", + "section": "colors" + }, + { + "name": "The Hairline Rule", + "body": "All borders use crisp, unblurred 1px to 1.5px solid strokes (#E4E4E7). Borders define geometry; they never glow or carry colored stroke gradients.", + "section": "colors" + }, + { + "name": "The Editorial Lead Rule", + "body": "Hero and section headlines lead with stark monochrome ink (#09090B) and isolate key thesis statements with solid accent color—never split across multi-stop gradients.", + "section": "typography" + }, + { + "name": "The Monospace Docket Rule", + "body": "Every date, file reference, and courtroom docket timestamp is typeset in JetBrains Mono to reinforce authentic document reality.", + "section": "typography" + }, + { + "name": "The Tonal Lift Rule", + "body": "Shadows are always neutral carbon/zinc tinted (rgba(24, 24, 27, ...)). Never use colored or saturated drop shadows under buttons or cards.", + "section": "elevation" + } + ], + "dos": [ + "Do maintain extreme typographic hierarchy with tight tracking (-0.03em) on Archivo display headings.", + "Do reserve Ayris Red (#E61919) strictly for primary conversion actions, conflict detection badges, and focus indicators.", + "Do typeset dates, docket IDs, and file timestamps in JetBrains Mono (label token).", + "Do pair crisp hairline borders (#E4E4E7) with deep ambient zinc drop shadows on floating card mockups.", + "Do keep lead capture and demo inquiries strictly on /iletisim." + ], + "donts": [ + "Don't use multi-color gradient text, rainbow highlights, or glowing neon outlines.", + "Don't use generic blue corporate SaaS styling or unbranded generic templates.", + "Don't clutter views with icon-stuffed bento boxes; let real case file structures and legal workflows lead.", + "Don't use colored or saturated drop shadows under buttons or cards.", + "Don't place the full contact form on the home page." + ] + } +} diff --git a/DESIGN.md b/DESIGN.md new file mode 100644 index 0000000..f92c55a --- /dev/null +++ b/DESIGN.md @@ -0,0 +1,208 @@ +--- +name: AyrisLegal +description: AI-Powered Strategic Workspace for Legal Professionals +colors: + primary: "#E61919" + primary-dark: "#B8140F" + primary-soft: "#FDEEEC" + neutral-bg: "#FFFFFF" + neutral-surface: "#FAFAFA" + neutral-card: "#FFFFFF" + neutral-border: "#E4E4E7" + neutral-muted: "#71717A" + neutral-text: "#09090B" +typography: + display: + fontFamily: "Archivo, ui-sans-serif, system-ui, sans-serif" + fontSize: "clamp(2.375rem, 5.5vw, 3.75rem)" + fontWeight: 800 + lineHeight: 1.03 + letterSpacing: "-0.03em" + headline: + fontFamily: "Archivo, ui-sans-serif, system-ui, sans-serif" + fontSize: "clamp(1.75rem, 3.5vw, 2.5rem)" + fontWeight: 800 + lineHeight: 1.12 + letterSpacing: "-0.025em" + title: + fontFamily: "Archivo, ui-sans-serif, system-ui, sans-serif" + fontSize: "1.25rem" + fontWeight: 700 + lineHeight: 1.35 + letterSpacing: "-0.015em" + body: + fontFamily: "Archivo, ui-sans-serif, system-ui, sans-serif" + fontSize: "1.0625rem" + fontWeight: 400 + lineHeight: 1.625 + letterSpacing: "normal" + label: + fontFamily: "JetBrains Mono, monospace" + fontSize: "0.8125rem" + fontWeight: 600 + lineHeight: 1.4 + letterSpacing: "0.02em" +rounded: + sm: "8px" + md: "12px" + lg: "16px" + xl: "24px" + full: "9999px" +spacing: + xs: "4px" + sm: "8px" + md: "16px" + lg: "24px" + xl: "32px" + 2xl: "48px" + 3xl: "64px" +components: + button-primary: + backgroundColor: "{colors.primary}" + textColor: "{colors.neutral-bg}" + rounded: "{rounded.full}" + padding: "14px 28px" + button-primary-hover: + backgroundColor: "{colors.primary-dark}" + button-outline: + backgroundColor: "{colors.neutral-bg}" + textColor: "{colors.neutral-text}" + rounded: "{rounded.full}" + padding: "14px 28px" + card-elevated: + backgroundColor: "{colors.neutral-card}" + textColor: "{colors.neutral-text}" + rounded: "{rounded.xl}" + padding: "24px" + input-field: + backgroundColor: "{colors.neutral-bg}" + textColor: "{colors.neutral-text}" + rounded: "{rounded.md}" + padding: "10px 16px" +--- + +# Design System: AyrisLegal + +## Overview + +**Creative North Star: "The Modern Jurist Studio"** + +The AyrisLegal design system embodies rigorous editorial precision, surgical focus, and high-trust clarity. Built for Turkish lawyers navigating dense case dockets, precedent archives, and evidentiary records, the interface rejects noisy SaaS clichés in favor of stark white-and-zinc architectural surfaces punctuated by deliberate, high-contrast Ayris Red accents. + +The aesthetic philosophy bridges judicial gravitas with cutting-edge analytical intelligence. Typographic hierarchy is tight, bold, and authoritative. Cards, preview frames, and case documents float cleanly above the canvas with deep ambient drop shadows, giving digital artifacts physical substance and scanability. + +**Key Characteristics:** +- Stark editorial canvas: pure white (`#FFFFFF`) and architectural zinc neutrals (`#FAFAFA`, `#F4F4F5`, `#E4E4E7`, `#09090B`). +- Singular, surgical accent: high-contrast Ayris Legal Red (`#E61919`) used strictly for high-intent actions, critical alerts, and focal insights. +- Authoritative typography: Archivo with tight tracking (`-0.03em`) and heavy weights for display, paired with JetBrains Mono for dates, case numbers, and system badges. +- Confident tactile geometry: pill-shaped primary action buttons (`rounded-full`), generous 24px container corners, and layered floating cards with deep ambient shadows. +- Zero fluff: no decorative gradient text, no floating particle meshes, and no icon-stuffed bento boxes. + +## Colors + +The palette is restrained, high-contrast, and purposeful: a surgical scarlet accent grounded upon an immaculate monochrome zinc foundation. + +### Primary +- **Ayris Legal Red** (`#E61919` / `oklch(0.58 0.23 27)`): The sole high-energy accent. Reserved exclusively for primary conversion CTAs, critical case conflict highlights (*Çelişki Avcısı*), and active status pulses. +- **Deep Crimson** (`#B8140F` / `oklch(0.48 0.21 27)`): Hover and active interaction state for primary red elements. +- **Soft Rose Tint** (`#FDEEEC` / `oklch(0.96 0.03 27)`): Low-contrast background wash for accent badges, selection states, and success callouts. + +### Neutral +- **Paper White** (`#FFFFFF`): Primary page canvas and elevated card surface background. +- **Subtle Surface Tint** (`#FAFAFA`): Secondary container background and alternating table rows. +- **Hairline Border Zinc** (`#E4E4E7` / `zinc-200`): Structural boundary for cards, input controls, and divider rules. +- **Muted Caption Slate** (`#71717A` / `zinc-500`): Supporting explanatory text, timestamps, and secondary metadata. +- **Deep Ink Black** (`#09090B` / `zinc-950`): High-contrast headline text, primary typography, and dark framing accents. + +### Named Rules +**The Rarity Rule.** The Ayris Red accent is applied to ≤5% of any viewport. Its scarcity is what commands immediate cognitive attention when flagging legal conflicts or driving conversion. + +**The Hairline Rule.** All borders use crisp, unblurred 1px to 1.5px solid strokes (`#E4E4E7`). Borders define geometry; they never glow or carry colored stroke gradients. + +## Typography + +**Display Font:** Archivo (with `ui-sans-serif, system-ui, sans-serif` fallback) +**Body Font:** Archivo (with `ui-sans-serif, system-ui, sans-serif` fallback) +**Label / Mono Font:** JetBrains Mono (with `ui-monospace, SFMono-Regular, monospace` fallback) + +**Character:** Archivo delivers heavyweight editorial punch with geometric discipline and condensed proportions. JetBrains Mono anchors legal docket numbers, case dates, and live status feeds with courtroom precision. + +### Hierarchy +- **Display** (800 / Extrabold, `clamp(2.375rem, 5.5vw, 3.75rem)`, line-height `1.03`, tracking `-0.03em`): Hero headlines and commanding value propositions. +- **Headline** (800 / Extrabold, `clamp(1.75rem, 3.5vw, 2.5rem)`, line-height `1.12`, tracking `-0.025em`): Section headings and core feature titles. +- **Title** (700 / Bold, `1.25rem` / 20px, line-height `1.35`, tracking `-0.015em`): Card titles, module headers, and modal names. +- **Body** (400 / Regular & 500 / Medium, `1.0625rem` / 17px, line-height `1.625`): Long-form explanations, case summaries, and narrative paragraphs (optimal line length 52–65ch). +- **Label / Mono** (600 / SemiBold, `0.8125rem` / 13px, tracking `0.02em`): Case numbers, dates, badge pills, and legal metadata. + +### Named Rules +**The Editorial Lead Rule.** Hero and section headlines lead with stark monochrome ink (`#09090B`) and isolate key thesis statements with solid accent color—never split across multi-stop gradients. + +**The Monospace Docket Rule.** Every date, file reference, and courtroom docket timestamp is typeset in JetBrains Mono to reinforce authentic document reality. + +## Layout + +The spatial model uses an asymmetric, content-driven rhythm optimized for fast legal triage: + +- **Max Container Width:** 1400px with generous lateral gutters (`px-5` on mobile, `px-16` on desktop). +- **Vertical Spacing Rhythm:** 64px to 96px between major sections; 16px to 24px between internal card groups. +- **Asymmetric Composition:** Two-column hero layouts pairing left-aligned bold copy with right-aligned floating interactive browser frames and offset accent overlays. +- **Density:** High density within document/file preview modules (compact line items, clear borders), balanced by expansive white breathing space around high-level messaging. + +## Elevation & Depth + +Surfaces are clean and physical. Depth is communicated through layered white cards floating over light zinc backgrounds, separated by crisp hairline strokes and deep, diffuse ambient shadows. + +### Shadow Vocabulary +- **Card Float Ambient** (`box-shadow: 0 30px 70px -25px rgba(24, 24, 27, 0.25)`): Applied to hero browser preview frames and featured product mockups to create dramatic physical lift. +- **Overlay Pop** (`box-shadow: 0 20px 45px -15px rgba(24, 24, 27, 0.20)`): Applied to offset badges (e.g. *Çelişki Avcısı* pill) and floating status widgets. +- **Form Card Base** (`box-shadow: 0 20px 60px -30px rgba(24, 24, 27, 0.20)`): Applied to interactive inquiry and lead generation forms on `/iletisim`. + +### Named Rules +**The Tonal Lift Rule.** Shadows are always neutral carbon/zinc tinted (`rgba(24, 24, 27, ...)`). Never use colored or saturated drop shadows under buttons or cards. + +## Shapes + +- **Primary Action Buttons:** Full pill geometry (`rounded-full` / `border-radius: 9999px`) creating distinct, unmistakable call-to-action touchpoints. +- **Containers & Framing Cards:** Generous 24px to 28px rounded corners (`rounded-3xl` / `rounded-[1.75rem]`), softening structural grids. +- **Input Fields & Micro-cards:** 12px to 16px rounded corners (`rounded-xl` / `rounded-2xl`) for comfortable form completion. +- **Dividers & Strokes:** 1px to 1.5px solid hairline borders in `#E4E4E7`. + +## Components + +### Buttons +- **Shape:** Pill (`border-radius: 9999px`) +- **Primary:** Ayris Legal Red background (`#E61919`), white text (`#FFFFFF`), padding `14px 28px`, font-size 15px, font-weight 600. +- **Hover / Focus:** Deep crimson (`#B8140F`), subtle spring physics or magnetic cursor tracking, active scale `0.98`. Focus ring in `#E61919`. +- **Secondary / Outline:** White background (`#FFFFFF`), dark zinc text (`#18181B`), 1.5px border (`#E4E4E7`), hover background `#FAFAFA`. + +### Cards & Document Containers +- **Corner Style:** 24px to 28px rounded corners (`rounded-3xl`). +- **Background:** Crisp white (`#FFFFFF`) with 1px border (`#E4E4E7`). +- **Internal Padding:** 20px to 32px depending on viewport and data density. +- **Header:** Embedded browser chrome bar (three control dots + URL slug) or clean docket category banner. + +### Inputs & Lead Fields +- **Style:** Minimum height 46px, 12px rounded corners (`rounded-xl`), 1.5px solid border in `#E4E4E7`, background `#FFFFFF`. +- **Focus:** Border transitions directly to Ayris Red (`#E61919`) with no harsh outline glow. +- **Labels:** 13px semi-bold in `#09090B` with red asterisk for mandatory inputs. + +### Badges & Chips +- **Style:** Pill-shaped (`rounded-full`), padding `6px 14px`, font-size 13px, font-weight 600. +- **Accent Badge:** Soft rose tint background (`#FDEEEC`) with deep crimson text (`#B8140F`). +- **Status Live Pulse:** 8px solid red dot with concentric pulsing ping animation. + +## Do's and Don'ts + +### Do: +- **Do** maintain extreme typographic hierarchy with tight tracking (`-0.03em`) on Archivo display headings. +- **Do** reserve Ayris Red (`#E61919`) strictly for primary conversion actions, conflict detection badges, and focus indicators. +- **Do** typeset dates, docket IDs, and file timestamps in JetBrains Mono (`label` token). +- **Do** pair crisp hairline borders (`#E4E4E7`) with deep ambient zinc drop shadows on floating card mockups. +- **Do** keep lead capture and demo inquiries strictly on `/iletisim`. + +### Don't: +- **Don't** use multi-color gradient text, rainbow highlights, or glowing neon outlines. +- **Don't** use generic blue corporate SaaS styling or unbranded generic templates. +- **Don't** clutter views with icon-stuffed bento boxes; let real case file structures and legal workflows lead. +- **Don't** use colored or tinted drop shadows under buttons or cards. +- **Don't** place the full contact form on the home page. diff --git a/PRODUCT.md b/PRODUCT.md new file mode 100644 index 0000000..ac7539c --- /dev/null +++ b/PRODUCT.md @@ -0,0 +1,50 @@ +# Product + + + +## Platform + +web + +## Users +Türk hukuk profesyonelleri (dava avukatları, solo çalışan avukatlar, butik ve orta ölçekli hukuk bürosu ortakları ve stajyer avukatlar). Yüzlerce sayfalık tensip zabıtlarını, bilirkişi raporlarını ve tanık ifadelerini inceleyen, duruşma öncesi delil/ifade çelişkilerini tespit eden, 18M+ içtihat taraması yapan ve UYAP uyumlu dilekçe üreten hukukçular. + +## Product Purpose +AyrisLegal, Türk avukatları için geliştirilmiş masaüstü ve mobil entegre yapay zekâ hukuki çalışma alanıdır. Avukatın yerine geçen pasif bir sohbet botu değil; dava dosyalarının derinlemesine analizi (Çelişki Avcısı, Dosya Röntgeni, Dava Stratejisi, Müzakere Simülatörü), 18M+ emsal içtihat ve 26.900+ mevzuat taraması, canlı duruşma nokta atışı (Dijital Stajyer) ve doğal `.udf` / Word / PDF dilekçe üretimi sunan aktif bir düşünce ortağıdır. + +## Positioning +Pasif bir mevzuat arama motoru veya jenerik bir dil modeli değil; Türk yargı pratiğine, UYAP/UDF ekosistemine, HMK/CMK usul kurallarına ve dava dosyalarındaki çapraz sorgu mantığına göre özelleşmiş, yerel öncelikli hukuki çalışma alanı. + +## Operating Context +- Yoğun duruşma takvimi, onlarca sayfalık tensip zaptı, bilirkişi raporu ve tanık beyanı inceleme süreci. +- Masaüstü ofis içi derin dosya incelemesi + UYAP Tarayıcı Eklentisi ile tek tıkla dosya aktarımı + Mobil adliye/duruşma anında hızlı erişim. +- Tanıtım Web Sitesi: Ürünün gerçek yeteneklerini (12 dava analiz modülü, UDF motoru, 18M içtihat, duruşma simülatörü) somut delillerle hissettiren ve `/iletisim` üzerinden canlı demo talebi toplayan vitrin. + +## Capabilities and Constraints +- **Temel Yetenekler:** + - **12 Dava Analiz Modülü:** Yapay Zeka Özeti, Dosya Röntgeni (Usul Taraması), İfade & Çelişki Avcısı, Dava Stratejisi & Kazanma Planı, Müzakere & Arabuluculuk Simülatörü, Belgeler (Yerel OCR), Dilekçe Stüdyosu (10 Kategori, 50+ Tür), Duruşma & Süreler, CaseChat (Dosya İçi Arama), Dijital Stajyer (Canlı Duruşma Nokta Atışı), Duruşma Simülatörü (Hakim / Karşı Taraf Rolü). + - **18 Milyon+ İçtihat Havuzu & 26.900+ Madde Mevzuat:** Yargıtay, Danıştay, AYM, BAM, UYAP Emsaller, Sigorta Tahkim, KİK, KVKK, BDDK kararları üzerinde doğal dille semantik arama ve argüman uyum puanı. + - **Doğal UDF Motoru:** UYAP Doküman Editörü (.udf) dosyalarını doğrudan okuma ve editörden tek tıkla UDF, Word (DOCX) veya PDF olarak dışa aktarma. + - **Yerel Öncelikli Veri Güvenliği:** Yerel depolama, sıfır model eğitimi (müvekkil verileriyle model eğitilmez), Google Drive şifreli yedekleme. +- **Kapsam ve Kısıtlar:** + - Tanıtım web sitesi Next.js 16 App Router üzerinde çalışır. + - İletişim ve demo talebi formu ana sayfada değil, yalnızca `/iletisim` sayfasında yer alır. + - Footer alanında "Created by ayris.tech" bağlantısı zorunludur. + +## Brand Commitments +- **İsim:** AyrisLegal +- **Kurumsal Kimlik:** "The Modern Jurist Studio" — Güven veren, ciddi, profesyonel, abartısız ve Türk adli ciddiyetine uygun dil. +- **Görsel Kimlik:** AyrisLegal marka logosu, Paper White & Zinc taban, Ayris Kırmızısı (`#E61919`) aksanlar, Archivo başlıklar, JetBrains Mono dosya/tarih etiketleri. + +## Evidence on Hand +- Kapsamlı Uygulama Özellikleri, Buton & Prompt Rehberi ([`docs/detay.md`](file:///Users/mstfyldz/github/ayrislegal/docs/detay.md)) +- Tanıtım sitesi PRD dokümanı ([`docs/marketing-website-prd.md`](file:///Users/mstfyldz/github/ayrislegal/docs/marketing-website-prd.md)) +- Mimari ve proje kuralları ([`AGENTS.md`](file:///Users/mstfyldz/github/ayrislegal/AGENTS.md)) + +## Product Principles +1. **Düşünce Ortağı, Arama Motoru Değil:** Temel değer; avukatın yerine geçmek değil, avukatın argümanını güçlendiren analitik ve stratejik bir ortak olmaktır. +2. **Somut Delil ve Dosya Gerçekliği:** Soyut pazarlama vaatleri yerine gerçek Türk yargı evrakları (tensip zaptı, bilirkişi raporu, UDF dosyası, HMK/CMK maddeleri) ile çalışılır. +3. **Veri Egemenliği ve Sır Saklama:** Dosyalar yerel cihazda kalır, kamuya açık modeller eğitilmez, nihai hukuki imza ve yetki daima avukattadır. + +## Accessibility & Inclusion +Modern web erişilebilirlik standartları (WCAG AA kontrast, net tipografik hiyerarşi, klavye navigasyonu, reduced-motion desteği). diff --git a/app/[locale]/admin/layout.tsx b/app/[locale]/admin/layout.tsx index d16615e..4f3d185 100644 --- a/app/[locale]/admin/layout.tsx +++ b/app/[locale]/admin/layout.tsx @@ -2,74 +2,82 @@ import { signOut } from 'next-auth/react' import Link from 'next/link' -import { usePathname } from 'next/navigation' +import Image from 'next/image' +import { usePathname, useParams } from 'next/navigation' import { LayoutDashboard, Users, Settings, LogOut, Menu, X } from 'lucide-react' import { useState } from 'react' export default function AdminLayout({ children }: { children: React.ReactNode }) { const pathname = usePathname() + const params = useParams() + const locale = (params?.locale as string) || 'tr' const [sidebarOpen, setSidebarOpen] = useState(false) const navigation = [ - { name: 'Dashboard', href: '/admin', icon: LayoutDashboard }, - { name: 'Kullanıcılar', href: '/admin/users', icon: Users }, - { name: 'Ayarlar', href: '/admin/settings', icon: Settings }, + { name: 'Dashboard', href: `/${locale}/admin`, icon: LayoutDashboard }, + { name: 'Kullanıcılar', href: `/${locale}/admin/users`, icon: Users }, + { name: 'Ayarlar', href: `/${locale}/admin/settings`, icon: Settings }, ] return ( -
+
{/* Mobile sidebar backdrop */} {sidebarOpen && (
setSidebarOpen(false)} /> )} {/* Sidebar */}
-
-
-

Admin Paneli

- +
+
+
+ + AyrisLegal + + +
+ +
- - -
+
@@ -78,17 +86,19 @@ export default function AdminLayout({ children }: { children: React.ReactNode }) {/* Main content */}
-
+
- Admin Paneli + Admin Paneli +
-
+
{children}
diff --git a/app/[locale]/admin/page.tsx b/app/[locale]/admin/page.tsx index 4b16051..ee5515d 100644 --- a/app/[locale]/admin/page.tsx +++ b/app/[locale]/admin/page.tsx @@ -4,41 +4,38 @@ export default async function AdminDashboardPage() { const session = await auth() return ( -
+
-

Dashboard

-

- Hoş geldiniz, {session?.user?.name || session?.user?.email}. İşte projenizin genel görünümü. +

Yönetim Paneli

+

+ Hoş geldiniz, {session?.user?.name || session?.user?.email}. İşte platformun genel görünümü.

- {/* Placeholder Stat Cards */} {[ - { name: 'Toplam Kullanıcı', stat: '1,245' }, - { name: 'Aktif Oturumlar', stat: '42' }, - { name: 'Yeni Kayıtlar', stat: '8' }, - { name: 'Sistem Durumu', stat: 'Online' }, + { name: 'Toplam Demo Talebi', stat: '28' }, + { name: 'Aktif Pilot Bürolar', stat: '14' }, + { name: 'Haftalık Analiz Sayısı', stat: '342' }, + { name: 'Sistem Durumu', stat: 'Aktif / Çevrimiçi' }, ].map((item) => (
-
{item.name}
-
+
{item.name}
+
{item.stat}
))}
-
-
-

Son Aktiviteler

-
-
- Henüz aktivite kaydı bulunmuyor. -
+
+

Son Aktiviteler & Demo Başvuruları

+
+
+ Henüz bekleyen aktivite kaydı bulunmuyor. Yeni talepler anlık olarak burada listelenecektir.
diff --git a/app/[locale]/iletisim/page.tsx b/app/[locale]/iletisim/page.tsx new file mode 100644 index 0000000..4508544 --- /dev/null +++ b/app/[locale]/iletisim/page.tsx @@ -0,0 +1,125 @@ +import type { Metadata } from 'next' +import Link from 'next/link' +import Image from 'next/image' +import { ArrowLeft, ShieldCheck, Lock, Sparkles, CheckCircle2, Clock } from 'lucide-react' +import ContactForm from '@/components/contact-form' + +export const metadata: Metadata = { + title: 'Demo Talep Edin | AyrisLegal', + description: 'AyrisLegal kurucu ekibiyle 15 dakikalık birebir canlı demo planlayın. Dava dosyası analizi, çelişki tespiti ve içtihat arama yeteneklerini kendi çalışma pratiğinizde test edin.', +} + +export default async function ContactPage({ + params, +}: { + params: Promise<{ locale: string }> +}) { + const { locale } = await params + + return ( +
+ {/* ══════════════════════════════ TOP NAV ═════════════════════════════ */} +
+
+ + AyrisLegal + + +
+
+ + {/* ══════════════════════════════ MAIN CONTENT ════════════════════════ */} +
+
+ {/* Sol Kolon: Değer Önerisi ve Güven Taahhütleri */} +
+ + +

+ Kendi dava dosyalarınızla{' '} + 15 dakikada test edin. +

+

+ AyrisLegal genel bir sohbet botu değil; dava dosyalarındaki tanık ve bilirkişi çelişkilerini yakalayan aktif bir düşünce ortağıdır. Formu doldurun, kurucu ekiple canlı demoda büronuza özel ihtiyaçları birlikte inceleyelim. +

+ + {/* Adım Adım Süreç */} +
+
+
+ 1 +
+
+

15 Dakikalık Canlı Demo

+

+ Büronuzun baktığı temel dava türlerine (Kira, Ticaret, İş, Ceza) göre dosya analizi ve çelişki tespitini canlı olarak gösteriyoruz. +

+
+
+ +
+
+ 2 +
+
+

Pilot Erişim Kurulumu

+

+ Masaüstü (Electron) ve Mobil (Expo) uygulamalarımıza pilot erişim yetkisi tanımlanır. +

+
+
+ +
+
+ 3 +
+
+

Doğrudan Mühendislik Desteği

+

+ Pilot sürecinde karşılaştığınız her özel format veya içtihat gereksinimi için doğrudan kurucu ekiple iletişimde kalırsınız. +

+
+
+
+ + {/* Güven Güvencesi */} +
+
+
+ + {/* Sağ Kolon: Form */} +
+ +
+
+
+ + {/* ══════════════════════════════ FOOTER ══════════════════════════════ */} + +
+ ) +} diff --git a/app/[locale]/layout.tsx b/app/[locale]/layout.tsx index e3d4db2..ab7f532 100644 --- a/app/[locale]/layout.tsx +++ b/app/[locale]/layout.tsx @@ -1,9 +1,10 @@ import type { Metadata } from "next"; -import { Archivo } from "next/font/google"; +import { Archivo, JetBrains_Mono } from "next/font/google"; import { NextIntlClientProvider } from 'next-intl'; import { getMessages, setRequestLocale } from 'next-intl/server'; import { notFound } from 'next/navigation'; import { routing } from '@/i18n/routing'; +import CookieBanner from '@/components/cookie-banner'; import "../globals.css"; const archivo = Archivo({ @@ -12,38 +13,82 @@ const archivo = Archivo({ display: "swap", }); +const jetbrainsMono = JetBrains_Mono({ + subsets: ["latin"], + variable: "--font-jetbrains-mono", + display: "swap", +}); + export const metadata: Metadata = { + metadataBase: new URL("https://ayrislegal.com"), title: { - default: "AyrisLegal — Hukuki Düşünce Ortağınız", + default: "AyrisLegal — Avukatlar İçin Yapay Zekâ Destekli Hukuk Çalışma Alanı", template: "%s | AyrisLegal", }, description: - "AyrisLegal, solo ve küçük büro avukatları için yapay zeka destekli hukuki asistanıdır. Dosya analizi, çok turlu hukuki sohbet ve emsal karar arama tek bir platformda.", - keywords: ["avukat yazılımı", "hukuki yapay zeka", "emsal karar arama", "hukuk ofisi yönetim", "AyrisLegal"], - authors: [{ name: "ayris.tech", url: "https://ayris.tech" }], - creator: "ayris.tech", + "AyrisLegal; dava dosyası analizi, tanık ve bilirkişi çelişkisi tespiti, 18M+ emsal içtihat taraması, duruşma simülasyonu ve doğrudan UYAP uyumlu UDF dilekçe üretim platformudur.", + keywords: [ + "avukat programı", + "hukuki yapay zeka", + "çelişki avcısı", + "emsal içtihat arama", + "udf dilekçe hazırlama", + "uyap eklentisi", + "hukuk bürosu otomasyonu", + "tensip zaptı analizi", + "yargıtay emsal kararlar", + "hukuk çalışma alanı", + "AyrisLegal" + ], + authors: [{ name: "Ayris Tech", url: "https://ayris.tech" }], + creator: "Ayris Tech", + publisher: "Ayris Tech", + alternates: { + canonical: "https://ayrislegal.com/tr", + languages: { + "tr-TR": "https://ayrislegal.com/tr", + "en-US": "https://ayrislegal.com/en", + }, + }, openGraph: { type: "website", locale: "tr_TR", + url: "https://ayrislegal.com", siteName: "AyrisLegal", - title: "AyrisLegal — Hukuki Düşünce Ortağınız", + title: "AyrisLegal — Avukatlar İçin Yapay Zekâ Destekli Hukuk Çalışma Alanı", description: - "Pasif araştırma değil, aktif düşünce ortağı. Avukatlar için yapay zeka destekli hukuki asistan.", + "Pasif araştırma değil, aktif düşünce ortağı. Dava analizi, çelişki tespiti, 18M+ içtihat ve UDF dilekçe motoru.", + images: [ + { + url: "/og-image.jpg", + width: 1200, + height: 630, + alt: "AyrisLegal Hukuk Çalışma Alanı", + }, + ], }, twitter: { card: "summary_large_image", - title: "AyrisLegal — Hukuki Düşünce Ortağınız", + title: "AyrisLegal — Avukatlar İçin Yapay Zekâ Destekli Hukuk Çalışma Alanı", description: - "Pasif araştırma değil, aktif düşünce ortağı. Avukatlar için yapay zeka destekli hukuki asistan.", + "Dava analizi, çelişki tespiti, 18M+ içtihat ve UDF dilekçe motoru tek ekranda.", + images: ["/og-image.jpg"], }, robots: { index: true, follow: true, + googleBot: { + index: true, + follow: true, + "max-video-preview": -1, + "max-image-preview": "large", + "max-snippet": -1, + }, }, }; export function generateStaticParams() { - return routing.locales.map((locale) => ({locale})); + return routing.locales.map((locale) => ({ locale })); } export default async function RootLayout({ @@ -54,22 +99,133 @@ export default async function RootLayout({ params: Promise<{ locale: string }>; }>) { const { locale } = await params; - + if (!routing.locales.includes(locale as any)) { notFound(); } - + setRequestLocale(locale); const messages = await getMessages(); + // Schema.org JSON-LD Yapılandırılmış Verileri + const softwareSchema = { + "@context": "https://schema.org", + "@type": "SoftwareApplication", + "name": "AyrisLegal", + "operatingSystem": "Windows, macOS, Linux, iOS, Android", + "applicationCategory": "BusinessApplication", + "applicationSubCategory": "Legal Practice Management Software", + "description": "Türk avukatları için yapay zekâ destekli dava analizi, 18M+ emsal içtihat arama ve UYAP UDF dilekçe üretim platformu.", + "offers": { + "@type": "Offer", + "price": "30000", + "priceCurrency": "TRY", + "priceValidUntil": "2027-12-31", + "availability": "https://schema.org/InStock", + }, + "publisher": { + "@type": "Organization", + "name": "Ayris Tech", + "url": "https://ayris.tech", + "logo": "https://ayrislegal.com/logo.png", + }, + }; + + const organizationSchema = { + "@context": "https://schema.org", + "@type": "Organization", + "name": "AyrisLegal", + "url": "https://ayrislegal.com", + "logo": "https://ayrislegal.com/logo.png", + "sameAs": [ + "https://ayris.tech" + ], + "contactPoint": { + "@type": "ContactPoint", + "contactType": "Customer Support", + "email": "info@ayris.tech", + "availableLanguage": ["Turkish", "English"] + } + }; + + const faqSchema = { + "@context": "https://schema.org", + "@type": "FAQPage", + "mainEntity": [ + { + "@type": "Question", + "name": "Müvekkil dosyalarım nerede saklanıyor, kim görebilir?", + "acceptedAnswer": { + "@type": "Answer", + "text": "Belgeleriniz cihazınızda yerel şifreli depolamada tutulur. Yedeklemeler merkezi sunucularımıza değil, büronuzun kendi Google Drive hesabına şifreli olarak aktarılır. Başka bir avukat veya üçüncü tarafla kesinlikle paylaşılmaz ve kamuya açık modellerin eğitiminde kullanılmaz." + } + }, + { + "@type": "Question", + "name": "UYAP şifremi veya e-imzamı AyrisLegal ile paylaşmam gerekiyor mu?", + "acceptedAnswer": { + "@type": "Answer", + "text": "Hayır. UYAP Tarayıcı Eklentisi sisteminizde zaten açık olan güvenli oturumunuzu kullanır; kimlik, e-imza veya şifre bilgileriniz hiçbir zaman AyrisLegal sunucularına iletilmez." + } + }, + { + "@type": "Question", + "name": "Yapay zekâ yanlış bir çıkarım yaparsa sorumluluk kimde?", + "acceptedAnswer": { + "@type": "Answer", + "text": "AyrisLegal bir karar organı değildir; analitik bir düşünce ortağıdır. Ürettiği tüm emsal kararlar gerçek mahkeme esas ve karar numaralarıyla sunulur ve doğrulanabilir bağlantılar içerir. Nihai hukuki değerlendirme ve imza sorumluluğu daima avukata aittir." + } + }, + { + "@type": "Question", + "name": "Dilekçeleri doğrudan UYAP Doküman Editörü (.udf) formatında indirebilir miyim?", + "acceptedAnswer": { + "@type": "Answer", + "text": "Evet. AyrisLegal bünyesindeki yerel UDF motoru, editörde yazılan dilekçeleri tek tıkla resmi Adalet Bakanlığı UYAP formatına (.udf), Word (.docx) veya PDF formatına dönüştürür." + } + }, + { + "@type": "Question", + "name": "İnternet bağlantısı olmadığında çevrimdışı çalışabilir miyim?", + "acceptedAnswer": { + "@type": "Answer", + "text": "Evet. Önceden taranmış dava dosyaları, yerel arşivi ve 26.900+ kanun maddesi internetsiz ortamda bile anında görüntülenebilir ve aranabilir." + } + }, + { + "@type": "Question", + "name": "Büromdaki diğer avukatlarla aynı anda ortak dava havuzunu kullanabilir miyim?", + "acceptedAnswer": { + "@type": "Answer", + "text": "Evet. Hukuk Bürosu planı kapsamında büro içi çoklu avukat ve stajyer lisansı, ortak emsal havuzu ve paylaşımlı dava çalışma alanı sunulmaktadır." + } + } + ] + }; + return ( - + +