Genel düzeltmeler

This commit is contained in:
Sedat Öztürk 2025-06-21 00:01:38 +03:00
parent ef309d0e3f
commit ddf2eac23e
7 changed files with 82 additions and 92 deletions

View file

@ -2,7 +2,7 @@
"App": { "App": {
"SelfUrl": "https://kurs-dev-api.sozsoft.com", "SelfUrl": "https://kurs-dev-api.sozsoft.com",
"ClientUrl": "https://kurs-dev.sozsoft.com", "ClientUrl": "https://kurs-dev.sozsoft.com",
"CorsOrigins": "https://kurs-dev.sozsoft.com", "CorsOrigins": "https://sozsoft.com,https://kurs-dev.sozsoft.com",
"RedirectAllowedUrls": "https://kurs-dev.sozsoft.com,https://kurs-dev.sozsoft.com/authentication/callback", "RedirectAllowedUrls": "https://kurs-dev.sozsoft.com,https://kurs-dev.sozsoft.com/authentication/callback",
"AttachmentsPath": "/etc/api/mail-queue/attachments", "AttachmentsPath": "/etc/api/mail-queue/attachments",
"CdnPath": "/etc/api/cdn" "CdnPath": "/etc/api/cdn"

View file

@ -2,7 +2,7 @@
"App": { "App": {
"SelfUrl": "https://kurs-api.sozsoft.com", "SelfUrl": "https://kurs-api.sozsoft.com",
"ClientUrl": "https://kurs.sozsoft.com", "ClientUrl": "https://kurs.sozsoft.com",
"CorsOrigins": "https://kurs.sozsoft.com,https://demo.sozsoft.com", "CorsOrigins": "https://sozsoft.com,https://kurs.sozsoft.com,https://demo.sozsoft.com",
"RedirectAllowedUrls": "https://kurs.sozsoft.com,https://kurs.sozsoft.com/authentication/callback", "RedirectAllowedUrls": "https://kurs.sozsoft.com,https://kurs.sozsoft.com/authentication/callback",
"AttachmentsPath": "/etc/api/mail-queue/attachments", "AttachmentsPath": "/etc/api/mail-queue/attachments",
"CdnPath": "/etc/api/cdn" "CdnPath": "/etc/api/cdn"

View file

@ -798,7 +798,7 @@ const translations = {
"common.message": "Message", "common.message": "Message",
"common.address": "Address", "common.address": "Address",
"common.city": "City", "common.city": "City",
"common.company": "Company Name", "common.company": "Organization Name",
"common.fullName": "Full Name", "common.fullName": "Full Name",
"common.branchCount": "Number of Branches", "common.branchCount": "Number of Branches",
"common.userCount": "Number of Users", "common.userCount": "Number of Users",

View file

@ -1,54 +1,24 @@
export const team = { export const team = {
en: [ en: [
{ {
name: "Özlem Öztürk", name: "Özlem ÖZTÜRK",
title: "Founder", title: "Founder",
imageUrl: "/img/women.png" imageUrl: "/img/women.png"
}, },
{ {
name: "Sefa Öztürk", name: "Burak KATAR",
title: "CTO",
imageUrl: "/img/men.png"
},
{
name: "Ahmet Öztürk",
title: "Sales Director",
imageUrl: "/img/men.png"
},
{
name: "Esra Öztürk",
title: "Project Director",
imageUrl: "/img/women.png"
},
{
name: "Eva Öztürk",
title: "Tech Director", title: "Tech Director",
imageUrl: "/img/women.png" imageUrl: "/img/women.png"
} }
], ],
tr: [ tr: [
{ {
name: "Özlem Öztürk", name: "Özlem ÖZTÜRK",
title: "Kurucu", title: "Kurucu",
imageUrl: "/img/women.png" imageUrl: "/img/women.png"
}, },
{ {
name: "Sefa Öztürk", name: "Burak KATAR",
title: "CTO",
imageUrl: "/img/men.png"
},
{
name: "Ahmet Öztürk",
title: "Satış Direktörü",
imageUrl: "/img/men.png"
},
{
name: "Esra Öztürk",
title: "Proje Direktörü",
imageUrl: "/img/women.png"
},
{
name: "Eva Öztürk",
title: "Teknoloji Direktörü", title: "Teknoloji Direktörü",
imageUrl: "/img/women.png" imageUrl: "/img/women.png"
} }

View file

@ -1,7 +1,7 @@
import React from 'react'; import React from "react";
import { Users, Award, Clock, Globe2 } from 'lucide-react'; import { Users, Award, Clock, Globe2 } from "lucide-react";
import { useLanguage } from '../context/LanguageContext'; import { useLanguage } from "../context/LanguageContext";
import { team } from '../locales/team'; import { team } from "../locales/team";
const About: React.FC = () => { const About: React.FC = () => {
const { t, language } = useLanguage(); const { t, language } = useLanguage();
@ -12,16 +12,18 @@ const About: React.FC = () => {
<div className="min-h-screen bg-gray-50"> <div className="min-h-screen bg-gray-50">
{/* Hero Section */} {/* Hero Section */}
<div className="relative bg-blue-900 text-white py-12"> <div className="relative bg-blue-900 text-white py-12">
<div className="absolute inset-0 opacity-20" style={{ <div
backgroundImage: 'url("https://images.pexels.com/photos/3183183/pexels-photo-3183183.jpeg?auto=compress&cs=tinysrgb&w=1920")', className="absolute inset-0 opacity-20"
backgroundSize: 'cover', style={{
backgroundPosition: 'center', backgroundImage:
}}></div> 'url("https://images.pexels.com/photos/3183183/pexels-photo-3183183.jpeg?auto=compress&cs=tinysrgb&w=1920")',
backgroundSize: "cover",
backgroundPosition: "center",
}}
></div>
<div className="container mx-auto pt-16 px-4 relative"> <div className="container mx-auto pt-16 px-4 relative">
<h1 className="text-5xl font-bold mb-6">{t('about.title')}</h1> <h1 className="text-5xl font-bold mb-6">{t("about.title")}</h1>
<p className="text-xl max-w-3xl"> <p className="text-xl max-w-3xl">{t("about.subtitle")}</p>
{t('about.subtitle')}
</p>
</div> </div>
</div> </div>
@ -32,22 +34,22 @@ const About: React.FC = () => {
<div className="text-center"> <div className="text-center">
<Users className="w-12 h-12 text-blue-600 mx-auto mb-4" /> <Users className="w-12 h-12 text-blue-600 mx-auto mb-4" />
<div className="text-4xl font-bold text-gray-900 mb-2">300+</div> <div className="text-4xl font-bold text-gray-900 mb-2">300+</div>
<div className="text-gray-600">{t('about.stats.clients')}</div> <div className="text-gray-600">{t("about.stats.clients")}</div>
</div> </div>
<div className="text-center"> <div className="text-center">
<Award className="w-12 h-12 text-blue-600 mx-auto mb-4" /> <Award className="w-12 h-12 text-blue-600 mx-auto mb-4" />
<div className="text-4xl font-bold text-gray-900 mb-2">20+</div> <div className="text-4xl font-bold text-gray-900 mb-2">20+</div>
<div className="text-gray-600">{t('about.stats.experience')}</div> <div className="text-gray-600">{t("about.stats.experience")}</div>
</div> </div>
<div className="text-center"> <div className="text-center">
<Clock className="w-12 h-12 text-blue-600 mx-auto mb-4" /> <Clock className="w-12 h-12 text-blue-600 mx-auto mb-4" />
<div className="text-4xl font-bold text-gray-900 mb-2">7/24</div> <div className="text-4xl font-bold text-gray-900 mb-2">7/24</div>
<div className="text-gray-600">{t('about.stats.support')}</div> <div className="text-gray-600">{t("about.stats.support")}</div>
</div> </div>
<div className="text-center"> <div className="text-center">
<Globe2 className="w-12 h-12 text-blue-600 mx-auto mb-4" /> <Globe2 className="w-12 h-12 text-blue-600 mx-auto mb-4" />
<div className="text-4xl font-bold text-gray-900 mb-2">3</div> <div className="text-4xl font-bold text-gray-900 mb-2">3</div>
<div className="text-gray-600">{t('about.stats.countries')}</div> <div className="text-gray-600">{t("about.stats.countries")}</div>
</div> </div>
</div> </div>
</div> </div>
@ -57,31 +59,34 @@ const About: React.FC = () => {
<div className="py-6"> <div className="py-6">
<div className="container mx-auto px-4"> <div className="container mx-auto px-4">
<div className="mb-6"> <div className="mb-6">
<div className="space-y-6 mx-auto mx-auto text-gray-800 text-lg leading-relaxed"> <div className="space-y-6 mx-auto mx-auto text-gray-800 text-lg leading-relaxed">
<p className="bg-white p-5 shadow-md border-l-4 border-blue-600"> <p className="bg-white p-5 shadow-md border-l-4 border-blue-600">
{t('about.description.part1')} {t("about.description.part1")}
</p> </p>
<p className="italic text-center text-blue-700 font-semibold"> <p className="italic text-center text-blue-700 font-semibold">
{t('about.description.motto')} {t("about.description.motto")}
</p> </p>
<p className="bg-white p-5 shadow-md border-l-4 border-blue-600"> <p className="bg-white p-5 shadow-md border-l-4 border-blue-600">
{t('about.description.part2')} {t("about.description.part2")}
</p> </p>
<p className="text-center text-blue-700 font-medium"> <p className="text-center text-blue-700 font-medium">
{t('about.description.closing')} {t("about.description.closing")}
</p> </p>
</div> </div>
</div> </div>
<div className="grid grid-cols-1 lg:grid-cols-2 gap-12"> <div className="grid grid-cols-1 lg:grid-cols-2 gap-12">
<div className="bg-white p-8 rounded-xl shadow-lg"> <div className="bg-white p-8 rounded-xl shadow-lg">
<h3 className="text-2xl font-bold text-gray-900 mb-4">{t('about.mission')}</h3> <h3 className="text-2xl font-bold text-gray-900 mb-4">
<p className="text-gray-700">{t('about.mission.desc')}</p> {t("about.mission")}
</h3>
<p className="text-gray-700">{t("about.mission.desc")}</p>
</div> </div>
<div className="bg-white p-8 rounded-xl shadow-lg"> <div className="bg-white p-8 rounded-xl shadow-lg">
<h3 className="text-2xl font-bold text-gray-900 mb-4">{t('about.vision')}</h3> <h3 className="text-2xl font-bold text-gray-900 mb-4">
<p className="text-gray-700">{t('about.vision.desc')}</p> {t("about.vision")}
</h3>
<p className="text-gray-700">{t("about.vision.desc")}</p>
</div> </div>
</div> </div>
</div> </div>
@ -91,13 +96,19 @@ const About: React.FC = () => {
<div className="py-16 bg-white"> <div className="py-16 bg-white">
<div className="container mx-auto px-4"> <div className="container mx-auto px-4">
<h2 className="text-3xl font-bold text-gray-900 text-center mb-12"> <h2 className="text-3xl font-bold text-gray-900 text-center mb-12">
{t('about.team')} {t("about.team")}
</h2> </h2>
<div className="grid grid-cols-1 md:grid-cols-5 gap-8"> <div className="flex justify-center gap-8 flex-wrap">
{teamData.map((member, index) => ( {teamData.map((member, index) => (
<div key={index} className="text-center"> <div key={index} className="text-center w-60">
<img src={member.imageUrl} alt={member.name} className="w-32 h-32 rounded-full mx-auto mb-4 object-cover" /> <img
<h3 className="text-xl font-semibold text-gray-900">{member.name}</h3> src={member.imageUrl}
alt={member.name}
className="w-32 h-32 rounded-full mx-auto mb-4 object-cover"
/>
<h3 className="text-xl font-semibold text-gray-900">
{member.name}
</h3>
<p className="text-gray-600">{member.title}</p> <p className="text-gray-600">{member.title}</p>
</div> </div>
))} ))}

View file

@ -10,6 +10,7 @@ import {
MessageCircle, MessageCircle,
} from "lucide-react"; } from "lucide-react";
import { useLanguage } from "../context/LanguageContext"; import { useLanguage } from "../context/LanguageContext";
import { demoService } from "../services/api/demo.service";
const Contact: React.FC = () => { const Contact: React.FC = () => {
const { t } = useLanguage(); const { t } = useLanguage();
@ -38,32 +39,20 @@ const Contact: React.FC = () => {
const handleSubmit = async (e: React.FormEvent<HTMLFormElement>) => { const handleSubmit = async (e: React.FormEvent<HTMLFormElement>) => {
e.preventDefault(); e.preventDefault();
const apiUrl = `${import.meta.env.VITE_API_URL}/api/app/demo/demo-form`;
try { try {
const response = await fetch(apiUrl, { await demoService.createDemoForm(formData);
method: "POST",
headers: {
"Content-Type": "application/json",
},
body: JSON.stringify(formData),
});
if (response.ok) { alert("Form başarıyla gönderildi.");
alert("Form başarıyla gönderildi."); setFormData({
setFormData({ company: "",
company: "", fullName: "",
fullName: "", email: "",
email: "", phone: "",
phone: "", address: "",
address: "", branchCount: "",
branchCount: "", userCount: "",
userCount: "", message: "",
message: "", });
});
} else {
alert("Bir hata oluştu. Lütfen tekrar deneyin.");
}
} catch (error) { } catch (error) {
console.error("Gönderim hatası:", error); console.error("Gönderim hatası:", error);
alert("Sunucuya ulaşılamıyor."); alert("Sunucuya ulaşılamıyor.");

View file

@ -0,0 +1,20 @@
import { apiClient } from './config'
export interface DemoFormRequest {
company: string
fullName: string
email: string
phone: string
address: string
branchCount: string
userCount: string
message: string
}
class DemoService {
async createDemoForm(data: DemoFormRequest): Promise<void> {
await apiClient.post('/api/app/demo/demo-form', data)
}
}
export const demoService = new DemoService()