+
+ {t("technologiesTitle")}
+
-
- {TECHNOLOGY_STACK.map((group) => (
-
-
- {t(`technologyCategories.${group.id}`)}
-
+
+
-
- {group.items.map((technology) => (
-
-
- {getLocalizedValue(technology.label, locale)}
-
- ))}
-
-
- ))}
+
+
+ {technologies.map((technology) => (
+
+ ))}
+
+
);
diff --git a/components/technologies-content.tsx b/components/technologies-content.tsx
new file mode 100644
index 0000000..53c0d94
--- /dev/null
+++ b/components/technologies-content.tsx
@@ -0,0 +1,59 @@
+"use client";
+
+import { useTranslations } from "next-intl";
+import { Card, Typography } from "poyraz-ui/atoms";
+import { TechnologyBadge } from "@/components/technology-badge";
+import { TECHNOLOGY_STACK } from "@/data/technology-stack";
+
+export function TechnologiesContent() {
+ const t = useTranslations("Technologies");
+
+ return (
+
+
+
+ {t("title")}
+
+
+ {t("description")}
+
+
+
+
+ {TECHNOLOGY_STACK.map((group) => (
+
+
+ {t(`categories.${group.id}`)}
+
+
+
+ {group.items.map((technology) => (
+
+ ))}
+
+
+ ))}
+
+
+ );
+}
diff --git a/components/technology-badge.tsx b/components/technology-badge.tsx
new file mode 100644
index 0000000..4253eab
--- /dev/null
+++ b/components/technology-badge.tsx
@@ -0,0 +1,32 @@
+"use client";
+
+import { Icon } from "@iconify/react";
+import { useLocale } from "next-intl";
+import { Badge } from "poyraz-ui/atoms";
+import type { TechnologyStackItem } from "@/data/technology-stack";
+import { getLocalizedValue } from "@/lib/locale";
+
+export function TechnologyBadge({
+ technology,
+}: {
+ technology: TechnologyStackItem;
+}) {
+ const locale = useLocale();
+
+ return (
+
+
+ {getLocalizedValue(technology.label, locale)}
+
+ );
+}
diff --git a/data/technology-stack.ts b/data/technology-stack.ts
index 150be11..0e747c1 100644
--- a/data/technology-stack.ts
+++ b/data/technology-stack.ts
@@ -7,7 +7,7 @@ export type TechnologyStackItem = {
};
export type TechnologyStackGroup = {
- id: "frontend" | "backend" | "languages" | "designTools";
+ id: "frontend" | "backend" | "databases" | "languages" | "designTools";
items: readonly TechnologyStackItem[];
};
@@ -56,7 +56,6 @@ export const TECHNOLOGY_STACK: readonly TechnologyStackGroup[] = [
icon: "simple-icons:jsonwebtokens",
},
{ id: "prisma", label: "Prisma", icon: "simple-icons:prisma" },
- { id: "mongoose", label: "Mongoose", icon: "simple-icons:mongoose" },
{
id: "socket-io",
label: "Socket.io",
@@ -64,6 +63,24 @@ export const TECHNOLOGY_STACK: readonly TechnologyStackGroup[] = [
},
],
},
+ {
+ id: "databases",
+ items: [
+ { id: "mongodb", label: "MongoDB", icon: "simple-icons:mongodb" },
+ { id: "mongoose", label: "Mongoose", icon: "simple-icons:mongoose" },
+ {
+ id: "postgresql",
+ label: "PostgreSQL",
+ icon: "simple-icons:postgresql",
+ },
+ { id: "mysql", label: "MySQL", icon: "simple-icons:mysql" },
+ {
+ id: "mssql",
+ label: "Microsoft SQL Server",
+ icon: "simple-icons:microsoftsqlserver",
+ },
+ ],
+ },
{
id: "languages",
items: [
diff --git a/lib/links.ts b/lib/links.ts
index 7285513..3e2eaa1 100644
--- a/lib/links.ts
+++ b/lib/links.ts
@@ -87,6 +87,21 @@ export const NAV_DROPDOWN_GROUPS = [
external: false,
keywords: ["animasyon", "animation", "kaynak", "resource", "motion"],
},
+ {
+ id: "technologies",
+ label: "Teknolojiler",
+ href: "/technologies",
+ icon: "mdi:layers-triple-outline",
+ external: false,
+ keywords: [
+ "teknolojiler",
+ "technologies",
+ "tech stack",
+ "araçlar",
+ "tools",
+ "skills",
+ ],
+ },
],
},
] as const;
diff --git a/lib/seo.ts b/lib/seo.ts
index 73921a4..c8d6da1 100644
--- a/lib/seo.ts
+++ b/lib/seo.ts
@@ -30,6 +30,7 @@ type StaticSeoPage =
| "projects"
| "content"
| "gallery"
+ | "technologies"
| "links"
| "contact";
diff --git a/messages/en.json b/messages/en.json
index 2590da8..531a9f8 100644
--- a/messages/en.json
+++ b/messages/en.json
@@ -13,6 +13,7 @@
"socialLinks": "Social Links",
"others": "Others",
"animationResources": "Animation Resources",
+ "technologies": "Technologies",
"links": "Links",
"mediaKit": "Media Kit",
"references": "References",
@@ -34,9 +35,11 @@
"reviewsAndReferences": "Reviews & References",
"allReferences": "All references",
"technologiesTitle": "Technologies I use",
+ "allTechnologies": "Explore all technologies",
"technologyCategories": {
"frontend": "Front End",
"backend": "Back End",
+ "databases": "Databases",
"languages": "Programming Languages",
"designTools": "Design & Tools"
},
@@ -216,6 +219,17 @@
"resources": "Resources"
}
},
+ "Technologies": {
+ "title": "Technologies I Use",
+ "description": "The front-end, back-end, database, programming language, design, and development tools I use to build products.",
+ "categories": {
+ "frontend": "Front End",
+ "backend": "Back End",
+ "databases": "Databases",
+ "languages": "Programming Languages",
+ "designTools": "Design & Tools"
+ }
+ },
"Gallery": {
"empty": "No images added to the gallery yet.",
"close": "Close",
@@ -255,6 +269,10 @@
"title": "Gallery",
"description": "Selected images from Poyraz Avsever's events, presentations, projects, and community work."
},
+ "technologies": {
+ "title": "Technologies I Use",
+ "description": "Explore the front-end, back-end, database, programming language, and development tools Poyraz Avsever uses to build products."
+ },
"links": {
"title": "Links",
"description": "Access Poyraz Avsever's social profiles, projects, content, and essential links from one page."
diff --git a/messages/tr.json b/messages/tr.json
index ca62470..c790e80 100644
--- a/messages/tr.json
+++ b/messages/tr.json
@@ -13,6 +13,7 @@
"socialLinks": "Sosyal Bağlantılar",
"others": "Diğerleri",
"animationResources": "Animasyon Kaynakları",
+ "technologies": "Teknolojiler",
"links": "Bağlantılar",
"mediaKit": "Medya Kiti",
"references": "Referanslar",
@@ -34,9 +35,11 @@
"reviewsAndReferences": "Yorumlar & Referanslar",
"allReferences": "Tüm referanslar",
"technologiesTitle": "Ben bu teknolojileri kullanıyorum",
+ "allTechnologies": "Tüm teknolojileri incele",
"technologyCategories": {
"frontend": "Ön Yüz",
"backend": "Arka Yüz",
+ "databases": "Veritabanları",
"languages": "Programlama Dilleri",
"designTools": "Tasarım ve Araçlar"
},
@@ -216,6 +219,17 @@
"resources": "Kaynaklar"
}
},
+ "Technologies": {
+ "title": "Kullandığım Teknolojiler",
+ "description": "Ürün geliştirirken kullandığım ön yüz, arka yüz, veritabanı, programlama dili, tasarım ve geliştirme araçları.",
+ "categories": {
+ "frontend": "Ön Yüz",
+ "backend": "Arka Yüz",
+ "databases": "Veritabanları",
+ "languages": "Programlama Dilleri",
+ "designTools": "Tasarım ve Araçlar"
+ }
+ },
"Gallery": {
"empty": "Henüz galeriye görsel eklenmemiş.",
"close": "Kapat",
@@ -255,6 +269,10 @@
"title": "Galeri",
"description": "Poyraz Avsever'in etkinlik, sunum, proje ve topluluk çalışmalarından seçilmiş görseller."
},
+ "technologies": {
+ "title": "Kullandığım Teknolojiler",
+ "description": "Poyraz Avsever'in ürün geliştirirken kullandığı ön yüz, arka yüz, veritabanı, programlama dili ve geliştirme araçlarını inceleyin."
+ },
"links": {
"title": "Bağlantılar",
"description": "Poyraz Avsever'in sosyal medya hesaplarına, projelerine, içeriklerine ve hızlı erişim bağlantılarına tek sayfadan ulaşın."