diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..288e979 --- /dev/null +++ b/Dockerfile @@ -0,0 +1,55 @@ +# 1. Base image +FROM node:20-alpine AS base + +# 2. Dependencies +FROM base AS deps +RUN apk add --no-cache libc6-compat +WORKDIR /app + +# Install dependencies based on the preferred package manager +COPY package.json package-lock.json* ./ +RUN npm ci --legacy-peer-deps + + +# 3. Builder +FROM base AS builder +WORKDIR /app +COPY --from=deps /app/node_modules ./node_modules +COPY . . + +# Environment variables must be present at build time for Next.js +# Coolify will provide these, but we can set defaults +ENV NEXT_TELEMETRY_DISABLED=1 + +RUN npm run build + +# 4. Runner +FROM base AS runner +WORKDIR /app + +ENV NODE_ENV=production +ENV NEXT_TELEMETRY_DISABLED=1 + +RUN addgroup --system --gid 1001 nodejs +RUN adduser --system --uid 1001 nextjs + +COPY --from=builder /app/public ./public + +# Set the correct permission for prerender cache +RUN mkdir .next +RUN chown nextjs:nodejs .next + +# Automatically leverage output traces to reduce image size +# https://nextjs.org/docs/advanced-features/output-file-tracing +COPY --from=builder --chown=nextjs:nodejs /app/.next/standalone ./ +COPY --from=builder --chown=nextjs:nodejs /app/.next/static ./.next/static + +USER nextjs + +EXPOSE 3000 + +ENV PORT=3000 +# set hostname to localhost +ENV HOSTNAME="0.0.0.0" + +CMD ["node", "server.js"] diff --git a/app/globals.css b/app/globals.css index a2dc41e..05769a2 100644 --- a/app/globals.css +++ b/app/globals.css @@ -1,26 +1,135 @@ @import "tailwindcss"; :root { - --background: #ffffff; - --foreground: #171717; + --background: #03070b; + --foreground: #f8fafc; + + --bg-primary: #03070b; + --bg-secondary: #070d14; + --bg-tertiary: #0c141d; + + --color-emerald: #0df293; + --color-emerald-dim: rgba(13, 242, 147, 0.15); + --color-cyan: #00f2fe; + --color-cyan-dim: rgba(0, 242, 254, 0.15); + + --text-primary: #f8fafc; + --text-secondary: #94a3b8; + --text-dim: #64748b; + + --border-glow: rgba(13, 242, 147, 0.15); + --border-cyan-glow: rgba(0, 242, 254, 0.15); } -@theme inline { - --color-background: var(--background); - --color-foreground: var(--foreground); - --font-sans: var(--font-geist-sans); - --font-mono: var(--font-geist-mono); +@theme { + --color-bg-primary: var(--bg-primary); + --color-bg-secondary: var(--bg-secondary); + --color-bg-tertiary: var(--bg-tertiary); + + --color-accent-emerald: var(--color-emerald); + --color-accent-emerald-dim: var(--color-emerald-dim); + --color-accent-cyan: var(--color-cyan); + --color-accent-cyan-dim: var(--color-cyan-dim); + + --color-text-primary: var(--text-primary); + --color-text-secondary: var(--text-secondary); + --color-text-dim: var(--text-dim); + + --font-space: var(--font-space-grotesk); + --font-outfit: var(--font-outfit); + + --animate-pulse-slow: pulse 4s cubic-bezier(0.4, 0, 0.6, 1) infinite; + --animate-spin-slow: spin 20s linear infinite; + --animate-float: float 6s ease-in-out infinite; } -@media (prefers-color-scheme: dark) { - :root { - --background: #0a0a0a; - --foreground: #ededed; +@keyframes float { + 0%, 100% { + transform: translateY(0); + } + 50% { + transform: translateY(-10px); } } +/* Base resets & layouts */ body { background: var(--background); color: var(--foreground); - font-family: Arial, Helvetica, sans-serif; + overflow-x: hidden; + text-rendering: optimizeLegibility; + -webkit-font-smoothing: antialiased; +} + +/* Custom premium utilities */ +.glow-text-emerald { + text-shadow: 0 0 20px rgba(13, 242, 147, 0.3); +} + +.glow-text-cyan { + text-shadow: 0 0 20px rgba(0, 242, 254, 0.3); +} + +.border-glow-emerald { + border-color: var(--border-glow); + box-shadow: 0 0 15px rgba(13, 242, 147, 0.05); +} + +.border-glow-cyan { + border-color: var(--border-cyan-glow); + box-shadow: 0 0 15px rgba(0, 242, 254, 0.05); +} + +.glass-panel { + background: rgba(7, 13, 20, 0.7); + backdrop-filter: blur(12px); + -webkit-backdrop-filter: blur(12px); + border: 1px solid rgba(13, 242, 147, 0.08); +} + +.glass-panel-cyan { + background: rgba(7, 13, 20, 0.7); + backdrop-filter: blur(12px); + -webkit-backdrop-filter: blur(12px); + border: 1px solid rgba(0, 242, 254, 0.08); +} + +/* Custom scrollbars */ +::-webkit-scrollbar { + width: 6px; + height: 6px; +} + +::-webkit-scrollbar-track { + background: var(--bg-primary); +} + +::-webkit-scrollbar-thumb { + background: var(--bg-tertiary); + border-radius: 3px; +} + +::-webkit-scrollbar-thumb:hover { + background: var(--color-emerald); +} + +/* Lenis smooth scroll fix */ +html.lenis, html.lenis body { + height: auto; +} + +.lenis.lenis-smooth { + scroll-behavior: auto !important; +} + +.lenis.lenis-smooth [data-lenis-prevent] { + overscroll-behavior: contain; +} + +.lenis.lenis-stopped { + overflow: hidden; +} + +.lenis.lenis-scrolling iframe { + pointer-events: none; } diff --git a/app/layout.tsx b/app/layout.tsx index 976eb90..001b03b 100644 --- a/app/layout.tsx +++ b/app/layout.tsx @@ -1,20 +1,34 @@ import type { Metadata } from "next"; -import { Geist, Geist_Mono } from "next/font/google"; +import { Space_Grotesk, Outfit } from "next/font/google"; import "./globals.css"; -const geistSans = Geist({ - variable: "--font-geist-sans", +const spaceGrotesk = Space_Grotesk({ + variable: "--font-space-grotesk", subsets: ["latin"], + weight: ["300", "400", "500", "600", "700"], }); -const geistMono = Geist_Mono({ - variable: "--font-geist-mono", +const outfit = Outfit({ + variable: "--font-outfit", subsets: ["latin"], + weight: ["300", "400", "500", "600", "700", "800"], }); export const metadata: Metadata = { - title: "Create Next App", - description: "Generated by create next app", + title: "SCENERJİ | Sürdürülebilir Enerji Mühendisliği & Yeşil Dönüşüm", + description: "Scenerji, dekarbonizasyon, yeşil dönüşüm destekleri ve sürdürülebilir enerji projeleri için dünya standartlarında mühendislik ve danışmanlık hizmetleri sunar.", + keywords: [ + "sürdürülebilir enerji", + "yeşil dönüşüm", + "enerji mühendisliği", + "dekarbonizasyon", + "karbon ayak izi", + "enerji danışmanlığı", + "yeşil dönüşüm destekleri", + ], + icons: { + icon: "/favicon.ico", + }, }; export default function RootLayout({ @@ -24,10 +38,12 @@ export default function RootLayout({ }>) { return ( - {children} + + {children} + ); } diff --git a/app/page.tsx b/app/page.tsx index 3f36f7c..51d84fa 100644 --- a/app/page.tsx +++ b/app/page.tsx @@ -1,65 +1,1011 @@ -import Image from "next/image"; +"use client"; + +import React, { useState, useEffect, useRef } from "react"; +import { motion, AnimatePresence } from "framer-motion"; +import { + ArrowUpRight, + CheckCircle, + TrendingUp, + Leaf, + Zap, + BarChart3, + Globe, + Cpu, + Coins, + Shield, + Mail, + Phone, + MapPin, + Calendar, + Menu, + X +} from "lucide-react"; +import LenisProvider from "@/components/LenisProvider"; +import NoiseOverlay from "@/components/NoiseOverlay"; +import GridBackground from "@/components/GridBackground"; +import Preloader from "@/components/Preloader"; + +// CUSTOM METRICS ANIMATION COMPONENT +function AnimatedMetric({ value, label, prefix = "", suffix = "" }: { value: number; label: string; prefix?: string; suffix?: string }) { + const [count, setCount] = useState(0); + const elementRef = useRef(null); + const [hasIntersections, setHasIntersections] = useState(false); + + useEffect(() => { + const observer = new IntersectionObserver( + ([entry]) => { + if (entry.isIntersecting) { + setHasIntersections(true); + } + }, + { threshold: 0.1 } + ); + + if (elementRef.current) { + observer.observe(elementRef.current); + } + + return () => observer.disconnect(); + }, []); + + useEffect(() => { + if (!hasIntersections) return; + + let start = 0; + const end = value; + const duration = 2000; // 2 seconds + const increment = end / (duration / 16); // ~60fps + + const timer = setInterval(() => { + start += increment; + if (start >= end) { + clearInterval(timer); + setCount(end); + } else { + setCount(Math.floor(start)); + } + }, 16); + + return () => clearInterval(timer); + }, [hasIntersections, value]); -export default function Home() { return ( -
-
- Next.js logo -
-

- To get started, edit the page.tsx file. -

-

- Looking for a starting point or more instructions? Head over to{" "} - - Templates - {" "} - or the{" "} - - Learning - {" "} - center. -

-
-
- - Vercel logomark - Deploy Now - - - Documentation - -
-
+
+
+ + {prefix}{count.toLocaleString("tr-TR")}{suffix} + + + {label} +
); } + +export default function Home() { + const [preloaderComplete, setPreloaderComplete] = useState(false); + const [activeTab, setActiveTab] = useState<"eng" | "grants">("eng"); + const [mobileMenuOpen, setMobileMenuOpen] = useState(false); + const [contactSuccess, setContactSuccess] = useState(false); + + // Ref for mouse movement parallax on energy core + const coreRef = useRef(null); + const [mousePos, setMousePos] = useState({ x: 0, y: 0 }); + + useEffect(() => { + const handleMouseMove = (e: MouseEvent) => { + if (!coreRef.current) return; + const { left, top, width, height } = coreRef.current.getBoundingClientRect(); + const x = (e.clientX - left - width / 2) / (width / 2); + const y = (e.clientY - top - height / 2) / (height / 2); + setMousePos({ x, y }); + }; + + window.addEventListener("mousemove", handleMouseMove); + return () => window.removeEventListener("mousemove", handleMouseMove); + }, []); + + return ( + + + + {/* 1. CINEMATIC PRELOADER */} + setPreloaderComplete(true)} /> + + {/* DYNAMIC CONSOLE/DEMO BANNER */} +
+ + + {preloaderComplete && ( + + {/* BACKGROUND ATMOSPHERE */} + + + {/* FLOATING NAVIGATION & CONCEPT BADGE */} +
+
+
+ +
+
+
+ + SCENERJİ + +
+ + {/* Desktop Nav Links */} + + + {/* Navigation CTA */} +
+ + TEŞVİK OPTİMİZASYON PORTALI + + + TEŞVİK ANALİZİ + +
+ + {/* Mobile menu trigger */} + +
+
+ + {/* Mobile Drawer menu */} + + {mobileMenuOpen && ( + + + + )} + +
+ + {/* CONCEPT BANNER */} +
+
+ + BU SİTE SCENERJİ İÇİN HAZIRLANMIŞ ÖZEL BİR KONSEPT DEMODUR — AYRIS TECH +
+
+ + {/* 2. HERO SECTION */} +
+
+ + {/* Sol Kolon - Başlık & Açıklama */} +
+
+ + KARBON NÖTR MÜHENDİSLİK TEKNOLOJİLERİ +
+ +

+ YEŞİL DÖNÜŞÜMÜN
+ + MÜHENDİSLİK AKLI. + +

+ +

+ Scenerji, endüstriyel tesislerin dekarbonizasyon süreçlerini, ileri seviye enerji mühendisliği ve stratejik yeşil dönüşüm teşvikleriyle birleştirerek sürdürülebilirliği yüksek karlılığa dönüştürür. +

+ + + + {/* Core Features Mini Badges */} +
+
+ %100 + VERİ ODAKLI +
+
+ MİLYONLARCA € + KAZANILAN TEŞVİK +
+
+ Sıfır + RİSK ANALİZİ +
+
+
+ + {/* Sağ Kolon - Dynamic Core Animation */} +
+ {/* Decorative glowing backdrops */} +
+ + {/* Outer Orbit Container */} +
+ {/* Glowing Energy Core SVG */} + + {/* Orbital Tracks */} + + + + + {/* Interactive Particle Nodes */} + + + + + + {/* Connecting Grid Lines */} + + + + + + {/* Central core energy cell */} + + + + + + + + + + + {/* Surrounding UI metrics cards inside orbital frame */} +
+ CO₂ EMİSYONU + -45.2% +
+ +
+ MÜHENDİSLİK VERİMİ + COP 4.8 +
+
+
+ +
+
+ + {/* 3. DOUBLE MARQUEE FLOW */} +
+ {/* Marquee 1 (Left to Right) */} +
+
+ YEŞİL DÖNÜŞÜM DANIŞMANLIĞI • + DEKARBONİZASYON • + SANAYİ TEŞVİKLERİ • + SOLAR ENERJİ SİSTEMLERİ • + ENERJİ VERİMLİLİĞİ • + MÜHENDİSLİK • + KOJENERASYON SİSTEMLERİ • +
+ +
+ + {/* Marquee 2 (Right to Left) */} +
+
+ KOSGEB YEŞİL DÖNÜŞÜM • + TÜBİTAK 1831 YEŞİL DESTEK • + IPARD DANIŞMANLIĞI • + ISO 50001 BELGELENDİRME • + ISO 14064 KARBON RAPORU • + SINIRDA KARBON VERGİSİ DANIŞMANLIĞI • +
+ +
+
+ + {/* Custom styles for marquee loop animations */} + + + {/* 4. ABOUT & VISION/MISSION SECTION */} +
+
+ + {/* Sol - Detaylı Bizi Tanıyın ve Vizyon */} +
+
+ BİZİ TANIYIN +
+ +

+ Geleceğin Enerji Yapısını
+ Bugünden Tasarlıyoruz. +

+ +

+ Scenerji, vizyoner mühendisler ve sürdürülebilirlik uzmanları tarafından kurulmuş, yüksek donanımlı butik bir mühendislik ve yeşil dönüşüm danışmanlık firmasıdır. Amacımız, endüstriyel tesislerin yüksek maliyetli enerji yükümlülüklerini en yeni teknolojiler ve devlet hibeleri yardımıyla karlı bir yatırıma dönüştürmektir. +

+ +

+ Klasik bir danışmanlıktan farklı olarak; fizik, matematik, ileri mühendislik hesaplamaları ve derin hibe/teşvik mekanizmaları bilgisini harmanlıyoruz. Tesislerin enerji tüketim profilini çıkartarak karbon ayak izlerini minimize ederken, hibe fonlarını maksimum düzeyde kullanmalarını sağlıyoruz. +

+ + {/* Asymmetrical Vision & Mission layout */} +
+
+ + VİZYONUMUZ + +

+ Türkiye ve küresel pazarda sanayi tesislerinin sıfır emisyon hedeflerine ulaşmasında, en güvenilir ve veri odaklı dekarbonizasyon mühendislik lideri olmak. +

+
+
+ + MİSYONUMUZ + +

+ Derin mühendislik bilgimizi ve hibe ekosistemlerini kullanarak yeşil dönüşümü sanayiciler için bir zorunluluktan çıkarıp, rekabet avantajı sağlayan karlı yatırımlara çevirmek. +

+
+
+
+ + {/* Sağ - High-craft visual Dashboard Widget representation */} +
+
+ {/* Header of widget */} +
+
+ SCENERJİ ANALYTICS + Tesis Analiz Ağı: #TR-8049 +
+ +
+ + {/* Content metrics bars */} +
+ {/* Metric 1 */} +
+
+ Karbon Ayak İzi Azaltımı + %42 / Hedef %50 +
+
+
+
+
+ + {/* Metric 2 */} +
+
+ Enerji Verimliliği Artışı + %35 / Hedef %30 +
+
+
+
+
+ + {/* Metric 3 */} +
+
+ Teşvik / Hibe Yararlanma Oranı + %92 +
+
+
+
+
+
+ + {/* Interactive diagram preview inside widget */} +
+ Aylık Emisyon Tasarruf Eğrisi + +
+ {[40, 55, 45, 60, 75, 68, 85, 95, 110, 125, 140].map((height, i) => ( +
+ + {i + 1}A +
+ ))} +
+
+
+
+ +
+
+ + {/* 5. INTERACTIVE SOLUTIONS TAB GRID */} +
+
+ + {/* Header text */} +
+
+ HİZMET VE ÇÖZÜMLERİMİZ +
+

+ Geniş Çözüm Spektrumumuzla
+ Sanayiyi Dönüştürüyoruz. +

+

+ Endüstrinin teknik ihtiyaçlarına özel mühendislik çözümleri ve bu çözümleri finanse edecek global ve ulusal hibe destekleri tek bir çatı altında. +

+
+ + {/* Tab Controls */} +
+
+ + +
+
+ + {/* Tabs contents with dynamic animations */} + + {activeTab === "eng" ? ( + + {/* Card 1 */} +
+
+
+ +
+

+ Yenilenebilir Enerji Mühendisliği +

+

+ Tesisleriniz için çatı ve arazi Solar Enerji (GES), Rüzgar Enerjisi (RES) ve Kojenerasyon sistemlerinin teknik ve finansal fizibilitelerini hazırlıyor, anahtar teslim proje mühendisliği yapıyoruz. +

+
+ + {/* Card 2 */} +
+
+
+ +
+

+ Enerji Verimliliği ve VAP +

+

+ Tesislerde detaylı enerji etütleri gerçekleştiriyor, atık ısı geri kazanımı ve proses optimizasyonu ile enerji maliyetlerini düşürecek Verimlilik Artırıcı Projeler (VAP) geliştiriyoruz. +

+
+ + {/* Card 3 */} +
+
+
+ +
+

+ Karbon Ayak İzi Hesaplama +

+

+ ISO 14064 standardına uygun olarak şirketinize ait Kapsam 1, 2 ve 3 karbon ayak izi hesaplamalarını yapıyor, uluslararası standartlarda raporlayarak doğrulatma sürecini yönetiyoruz. +

+
+ + ) : ( + + {/* Grant Card 1 */} +
+
+
+ +
+

+ TÜBİTAK 1831 Yeşil İnovasyon +

+

+ {"KOBİ'lerin"} yeşil dönüşüme yönelik teknolojik çözümlerini finanse eden TÜBİTAK Yeşil İnovasyon destek mekanizmalarında tam kapsamlı proje hazırlama, başvuru ve raporlama danışmanlığı veriyoruz. +

+
+ + {/* Grant Card 2 */} +
+
+
+ +
+

+ KOSGEB Yeşil Dönüşüm Destekleri +

+

+ Tesislerinizin enerji motorlarının verimlileştirilmesi, güneş enerjisi yatırımları ve karbon ayak izi hesaplama masraflarına kadar birçok alanda KOSGEB hibelerinden maksimum payı almanızı sağlıyoruz. +

+
+ + {/* Grant Card 3 */} +
+
+
+ +
+

+ Sınırda Karbon Vergisi (CBAM) +

+

+ Avrupa Birliği Yeşil Mutabakatı kapsamında, ihracat yapan firmalarımızı Sınırda Karbon Düzenleme Mekanizmasına (SKDM) hazırlıyor, gümrükte karbon vergisi ödemelerini engelleyecek sistemleri kuruyoruz. +

+
+ + )} + +
+
+ + {/* 6. HORIZONTAL PROJECTS CAROUSEL */} +
+
+
+
+
+ PORTFOLYO +
+

+ Mühendislikle Şekillenen
+ Başarı Hikayelerimiz. +

+
+ + Sanayinin karbon emisyonlarını sıfırlarken, sürdürülebilir karlı yapıları inşa ettiğimiz bazı seçkin referanslarımız. + +
+ + {/* Projects Draggable Flex Area */} +
+ + {/* Project 1 */} +
+
+
+
+ 01 // SOLAR ENERJİ + Manisa OSB +
+

+ Mega Endüstriyel Çatı GES Kurulumu +

+

+ Bölgenin en büyük metal işleme fabrikasının 75.000 metrekarelik çatı alanına 12.4 MWp gücünde Solar Enerji Santrali kurduk. Tesisin yıllık elektrik ihtiyacının tamamı yeşil enerjiden karşılanıyor. +

+
+ +
+
+ VERİLEN TEŞVİK + €1.4 Milyon Hibe +
+
+ GERİ ÖDEME SÜRESİ + 3.2 Yıl +
+
+
+ + {/* Project 2 */} +
+
+
+
+ 02 // VERİ & YÖNETİM + Bursa & Kocaeli +
+

+ ISO 50001 Enerji Yönetim Ağı +

+

+ Otomotiv yan sanayi üreticisinin 14 farklı üretim tesisinde, IoT sensör entegrasyonuyla ISO 50001 Enerji Yönetim sistemini kurduk. Tüketimleri anlık analiz ederek gereksiz kayıpları sıfırladık. +

+
+ +
+
+ ENERJİ TASARRUFU + Yıllık 18.2 Milyon kWh +
+
+ VERİMLİLİK ARTIŞI + %28 +
+
+
+ + {/* Project 3 */} +
+
+
+
+ 03 // YEŞİL TEŞVİK + İzmir Aliağa +
+

+ Yeşil Dönüşüm Teşvik Optimizasyonu +

+

+ Büyük ölçekli çelik üreticimizin karbonsuzlaşma yol haritasını hazırladık. Kapsam 1-2 emisyon raporlarını tamamlayarak, AB Yeşil Mutabakatı kapsamında 1.8 Milyon € tutarında direkt hibe onaylattık. +

+
+ +
+
+ KAZANILAN HİBE + €1.8 Milyon Hibe +
+
+ KARBON VERGİ TASARRUFU + %100 +
+
+
+ + {/* Project 4 */} +
+
+
+
+ 04 // MÜHENDİSLİK + Tekirdağ Çorlu +
+

+ Kojenerasyon ve Isı Geri Kazanımı +

+

+ Tekstil boyahanesinin baca gazlarındaki ve atık sularındaki ısıyı geri kazanacak kojenerasyon entegrasyonu projesini tamamladık. Atık ısı, {"fabrikanın"} sıcak su ihtiyacının {"%85'ini"} karşılıyor. +

+
+ +
+
+ AZALTILAN DOĞALGAZ + Yıllık %32 +
+
+ YILLIK CO₂ AZALTIMI + 4.200 Ton +
+
+
+ +
+
+
+ + {/* 7. QUANTITATIVE SERVICE EXCELLENCE */} +
+
+ + {/* Header info */} +
+
+
+ HİZMET ANLAYIŞI +
+

+ Verilerle Kanıtlanmış
+ Sürdürülebilir Başarı. +

+
+

+ Scenerji olarak, mühendislik hesaplarımızı teoride bırakmıyoruz. Geliştirdiğimiz projelerin tamamında, tesislerinizin gerçek enerji tüketim verileri üzerinden çalışıyor ve gerçekleştirdiğimiz net tasarrufları faturalandırılabilir kanıtlarla sunuyoruz. +

+
+ + {/* High-end metrics grid with counters */} +
+ + + + +
+
+
+ + {/* 8. EDITORIAL FOOTER (CONTACT & ARTICLES) */} +