Initial impact.tr site
All checks were successful
Deploy stable / deploy (push) Successful in 1m36s

V3 landing: white + violet + yellow accent, bold editorial.
Markdown-driven content: 3 yarışma formatı (hands-on, ideathon, robo-soccer),
5 edisyon (Ataköy, Çemberlitaş Ideathon '25, Çemberlitaş HoC '26, İstanbul/Ankara Robo Soccer).
Sayfalar: anasayfa, yarışma/edisyon detayları, sponsor, hakkımızda, iletişim.
40 Çemberlitaş fotoğrafı (1600px optimize, ~6.4 MB).
Content helper (gray-matter + marked), reviews/photos registry,
iletişim/ekip tek kaynak lib/contact.ts.
Next.js 16 standalone build, Docker + compose hazır.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-04-23 15:35:09 +03:00
parent 97edf69ab3
commit 8b480c036c
74 changed files with 2819 additions and 51 deletions

136
src/app/iletisim/page.tsx Normal file
View File

@@ -0,0 +1,136 @@
import type { Metadata } from "next";
import { PageHero } from "@/components/PageHero";
import { Section } from "@/components/Section";
import { contact, team } from "@/lib/contact";
export const metadata: Metadata = {
title: "İletişim",
description: "Impact iletişim kanalları: e-posta, Instagram, LinkedIn, WhatsApp.",
};
const channels = [
{
key: "email",
title: "E-posta",
value: contact.email,
href: `mailto:${contact.email}`,
help: "Genel sorular, sponsor talepleri ve işbirlikleri.",
},
{
key: "instagram",
title: "Instagram",
value: `@${contact.instagram.handle}`,
href: contact.instagram.url,
help: "Etkinlik duyuruları, geçmiş fotoğraflar, anlık içerik.",
},
{
key: "linkedin",
title: "LinkedIn",
value: "impactcommunit",
href: contact.linkedin.url,
help: "Kurumsal iletişim, sponsor ve partner ağı.",
},
{
key: "whatsapp",
title: "WhatsApp",
value: "Topluluğa katıl",
href: contact.whatsapp.url,
help: "Katılımcı, gönüllü ve mentor topluluğu.",
},
];
const altMails = [
"contact@impact.tr",
"info@impact.tr",
"hello@impact.tr",
];
export default function ContactPage() {
return (
<>
<PageHero
eyebrow="İletişim"
title={<>Bize ulaşın</>}
lead="Sponsor, partner, gönüllü, mentor ya da sadece meraklı — hangi kanalı seçersen seç yanıt veriyoruz."
/>
{/* Channels */}
<Section eyebrow="Kanallar" title="Nereden ulaşabilirsiniz">
<div className="grid gap-4 md:grid-cols-2">
{channels.map((ch) => (
<a
key={ch.key}
href={ch.href}
target={ch.href.startsWith("http") ? "_blank" : undefined}
rel="noreferrer noopener"
className="group flex items-start justify-between gap-6 border-2 border-neutral-900 bg-white p-6 transition hover:-translate-y-1 hover:bg-yellow-50"
>
<div>
<div className="text-xs font-black uppercase tracking-[0.25em] text-violet-700">
{ch.title}
</div>
<div className="mt-2 text-2xl font-black tracking-tight">{ch.value}</div>
<div className="mt-1 text-sm text-neutral-600">{ch.help}</div>
</div>
<span
aria-hidden
className="mt-2 text-2xl transition group-hover:translate-x-1"
>
</span>
</a>
))}
</div>
</Section>
{/* Team emails */}
<Section tone="muted" eyebrow="Ekip" title="Doğrudan kurucu ekibe">
<div className="grid gap-4 md:grid-cols-3">
{team.map((m) => {
const handle = m.name.split(" ")[0].toLowerCase().replace(/ı/g, "i");
const email = `${handle}@impact.tr`;
return (
<a
key={m.name}
href={`mailto:${email}`}
className="group flex flex-col gap-5 border-2 border-neutral-900 bg-white p-6 transition hover:-translate-y-1 hover:bg-yellow-50"
>
<span className="inline-flex size-12 items-center justify-center bg-violet-700 text-sm font-black text-white">
{m.name
.split(" ")
.map((w) => w[0])
.slice(0, 2)
.join("")}
</span>
<div>
<div className="text-xl font-black tracking-tight">{m.name}</div>
<div className="mt-1 text-xs font-black uppercase tracking-[0.2em] text-neutral-500">
{m.role}
</div>
</div>
<div className="border-t-2 border-neutral-900 pt-3 text-sm font-black text-violet-700 transition group-hover:translate-x-0.5">
{email}
</div>
</a>
);
})}
</div>
</Section>
{/* Alt mails */}
<Section eyebrow="Ek posta kutuları" title="Bunlara da yazabilirsiniz">
<div className="flex flex-wrap gap-2">
{altMails.map((m) => (
<a
key={m}
href={`mailto:${m}`}
className="border-2 border-neutral-900 bg-white px-4 py-2 text-sm font-black uppercase tracking-wider text-neutral-900 hover:bg-yellow-300"
>
{m}
</a>
))}
</div>
</Section>
</>
);
}