· Proje  · 5 min read

Momtur Travel Bodrum Projesi: Modern Web Teknolojileri ile Turizm Deneyimi

Next.js, Clerk Auth, TypeScript ve Tailwind CSS kullanarak geliştirdiğim Momtur Travel Bodrum projesinin teknik detayları ve süreç deneyimlerimi paylaşıyorum.

Next.js, Clerk Auth, TypeScript ve Tailwind CSS kullanarak geliştirdiğim Momtur Travel Bodrum projesinin teknik detayları ve süreç deneyimlerimi paylaşıyorum.

Momtur Travel Bodrum Projesi

Bodrum’un eşsiz güzelliklerini ve turizm potansiyelini modern web teknolojileri ile buluşturan Momtur Travel Bodrum projesi, hem teknik açıdan hem de kullanıcı deneyimi açısından önemli kazanımlar sağladı. Bu yazıda, Vibe Coding yaklaşımıyla geliştirdiğim projenin sürecini, kullanılan teknolojileri ve karşılaşılan zorlukları detaylı olarak paylaşacağım.

Vibe Coding ile Geliştirme Yaklaşımı

Momtur Travel Bodrum projesini geliştirirken benimsediğim Vibe Coding yaklaşımı, geleneksel yazılım geliştirme metodolojilerinden farklı olarak yaratıcılık, işbirliği ve geliştiricinin refahını merkeze alan bir süreç oldu. Bu yaklaşım sayesinde:

  • Zihinsel olarak net, odaklanmış ve enerjik olduğum zamanlarda kod yazarak daha temiz ve yaratıcı çözümler ürettim
  • Uzun saatler boyunca zorla çalışmak yerine, ilham ve üretkenliğin zirve yaptığı anlarda geliştirme yaparak verimliliği artırdım
  • Kod estetiğine ve organizasyonuna önem vererek daha sürdürülebilir ve anlaşılır bir kod tabanı oluşturdum
  • Takım içi işbirliğini ve pozitif enerjiyi teşvik ederek projenin amacına daha iyi bağlandım

Bu yaklaşım, özellikle turizm gibi yaratıcı ve kullanıcı deneyiminin ön planda olduğu bir sektörde, teknik mükemmellik ile kullanıcı odaklı tasarımı dengeli bir şekilde bir araya getirmemi sağladı.

Proje Hakkında

Momtur Travel Bodrum, Bodrum’daki turizm hizmetlerini dijital ortama taşıyan, kullanıcıların kolay ve hızlı bir şekilde rezervasyon yapabilmelerini sağlayan modern bir web platformudur. Proje, şu özellikleri içermektedir:

  • Otel ve villa rezervasyonları
  • Tur ve etkinlik planlaması
  • Özel transfer hizmetleri
  • Kullanıcı hesap yönetimi
  • Çok dilli destek (Türkçe, İngilizce, Rusça)
  • Ödeme entegrasyonu

Kullanılan Teknolojiler

Next.js ile Hızlı ve SEO Dostu Yapı

Projenin temelini Next.js oluşturuyor. Next.js’in sunduğu avantajlar:

  • Server-side rendering ile hızlı sayfa yüklemeleri
  • SEO optimizasyonu
  • API route’ları ile backend entegrasyonu
  • Kolay routing sistemi
// pages/index.tsx
import type { NextPage } from 'next'
import Head from 'next/head'
import { Hero } from '../bilesenler/anasayfa/Hero'
import { PopulerTurlar } from '../bilesenler/anasayfa/PopulerTurlar'
import { Hizmetler } from '../bilesenler/anasayfa/Hizmetler'

const Anasayfa: NextPage = () => {
  return (
    <>
      <Head>
        <title>Momtur Travel Bodrum - Eşsiz Tatil Deneyimi</title>
        <meta name="description" content="Bodrum'da unutulmaz bir tatil için tüm hizmetler" />
      </Head>
      <Hero />
      <PopulerTurlar />
      <Hizmetler />
    </>
  )
}

export default Anasayfa

Clerk Auth ile Güvenli Kimlik Doğrulama

Kullanıcı yönetimi ve kimlik doğrulama için Clerk Auth tercih ettim. Bu sayede:

  • Güvenli oturum yönetimi
  • Sosyal medya hesaplarıyla giriş
  • İki faktörlü doğrulama
  • GDPR uyumlu veri yönetimi
// bilesenler/Header.tsx
import { SignedIn, SignedOut, UserButton, SignInButton } from "@clerk/nextjs";

export const Header = () => {
  return (
    <header className="bg-white shadow-sm">
      <div className="container mx-auto px-4 py-3 flex justify-between items-center">
        <Logo />
        <nav className="flex items-center gap-6">
          {/* Navigasyon linkleri */}
          <SignedIn>
            <UserButton afterSignOutUrl="/" />
          </SignedIn>
          <SignedOut>
            <SignInButton mode="modal">
              <button className="btn-primary">Giriş Yap</button>
            </SignInButton>
          </SignedOut>
        </nav>
      </div>
    </header>
  );
};

TypeScript ile Tip Güvenliği

Projenin tamamında TypeScript kullanarak, daha güvenli ve sürdürülebilir bir kod tabanı oluşturdum:

  • Derleme zamanında hata tespiti
  • Daha iyi kod tamamlama ve IDE desteği
  • Daha kolay refactoring
  • Ekip çalışmasında daha iyi iletişim
// tipler/rezervasyon.ts
export interface Rezervasyon {
  id: string;
  kullaniciId: string;
  hizmetTipi: 'otel' | 'tur' | 'transfer' | 'villa';
  hizmetId: string;
  baslangicTarihi: Date;
  bitisTarihi: Date;
  kisiSayisi: number;
  toplamFiyat: number;
  odemeDurumu: 'beklemede' | 'tamamlandi' | 'iptal';
  olusturmaTarihi: Date;
  guncellemeTarihi: Date;
}

Tailwind CSS ile Modern ve Responsive Tasarım

Kullanıcı arayüzü için Tailwind CSS kullandım:

  • Hızlı geliştirme süreci
  • Responsive tasarım kolaylığı
  • Özelleştirilebilir tema
  • Küçük CSS dosya boyutu
// bilesenler/TurKarti.tsx
interface TurKartiProps {
  tur: Tur;
}

export const TurKarti = ({ tur }: TurKartiProps) => {
  return (
    <div className="bg-white rounded-lg shadow-md overflow-hidden hover:shadow-lg transition-shadow duration-300">
      <div className="relative h-48">
        <Image 
          src={tur.resimUrl} 
          alt={tur.baslik} 
          layout="fill" 
          objectFit="cover" 
        />
      </div>
      <div className="p-4">
        <h3 className="text-xl font-semibold text-gray-800">{tur.baslik}</h3>
        <p className="text-gray-600 mt-2">{tur.kisaAciklama}</p>
        <div className="flex justify-between items-center mt-4">
          <span className="text-primary-600 font-bold">{tur.fiyat} TL</span>
          <button className="bg-primary-500 hover:bg-primary-600 text-white px-4 py-2 rounded-md">
            Detaylar
          </button>
        </div>
      </div>
    </div>
  );
};

MongoDB ve Prisma ile Veritabanı Yönetimi

Veritabanı olarak MongoDB tercih ettim ve Prisma ORM ile entegre ettim:

  • Esnek şema yapısı
  • Hızlı sorgu performansı
  • Kolay ölçeklenebilirlik
  • Prisma ile tip güvenliği
// prisma/schema.prisma
generator client {
  provider = "prisma-client-js"
}

datasource db {
  provider = "mongodb"
  url      = env("DATABASE_URL")
}

model Kullanici {
  id        String   @id @default(auto()) @map("_id") @db.ObjectId
  clerkId   String   @unique
  ad        String
  soyad     String
  email     String   @unique
  telefon   String?
  rezervasyonlar Rezervasyon[]
  createdAt DateTime @default(now())
  updatedAt DateTime @updatedAt
}

model Tur {
  id          String   @id @default(auto()) @map("_id") @db.ObjectId
  baslik      String
  aciklama    String
  kisaAciklama String
  resimUrl    String
  fiyat       Float
  sureSaat    Float
  kapasite    Int
  kategori    String
  rezervasyonlar Rezervasyon[]
  createdAt   DateTime @default(now())
  updatedAt   DateTime @updatedAt
}

Geliştirme Süreci ve Zorluklar

Planlama ve Tasarım

Projeye başlamadan önce kapsamlı bir planlama süreci gerçekleştirdim:

  1. Kullanıcı hikayeleri ve gereksinimler
  2. Veritabanı şeması tasarımı
  3. UI/UX wireframe’leri
  4. API endpoint’leri planlaması

Karşılaşılan Zorluklar

Proje sürecinde bazı zorluklarla karşılaştım:

1. Çoklu Dil Desteği

Farklı dillerde içerik yönetimi için next-i18next kütüphanesini kullandım. Dinamik içeriklerin çevirilerini veritabanında saklayarak esnek bir yapı oluşturdum.

2. Ödeme Entegrasyonu

Farklı ödeme yöntemlerini entegre etmek için modüler bir yapı tasarladım. Bu sayede yeni ödeme yöntemleri kolayca eklenebiliyor.

3. Performans Optimizasyonu

Büyük resim dosyaları ve karmaşık sayfalar için:

  • Cloudinary ile görsel optimizasyonu
  • Lazy loading ve code splitting
  • Önbelleğe alma stratejileri

Sonuç ve Öğrenimler

Momtur Travel Bodrum projesi, modern web teknolojilerinin turizm sektöründe nasıl etkili bir şekilde kullanılabileceğini gösterdi. Proje sürecinde edindiğim bazı önemli öğrenimler:

  1. Kullanıcı Odaklı Tasarım: Hedef kitlenin ihtiyaçlarını anlamak ve buna göre tasarım yapmak başarının anahtarı.

  2. Teknoloji Seçimi: Projenin gereksinimlerine uygun teknolojileri seçmek, geliştirme sürecini hızlandırıyor ve bakım maliyetlerini düşürüyor.

  3. Modüler Yapı: Kodun modüler ve yeniden kullanılabilir parçalara ayrılması, projenin büyümesini ve bakımını kolaylaştırıyor.

  4. Sürekli Test: Geliştirme sürecinde düzenli testler yapmak, hataları erken aşamada tespit etmeyi sağlıyor.

Gelecek Planları

Momtur Travel Bodrum projesi için gelecek planlarım:

  • Mobil uygulama geliştirme
  • AI destekli kişiselleştirilmiş öneriler
  • Sanal gerçeklik turları
  • Blockchain tabanlı sadakat programı

Bu proje, modern web teknolojilerinin turizm sektöründe nasıl değer yaratabileceğini göstermesi açısından önemli bir örnek oldu. Benzer projelerde bu deneyimlerden faydalanarak daha da gelişmiş çözümler üretmeyi hedefliyorum.


Eğer siz de turizm sektöründe dijital dönüşüm projesi geliştirmek istiyorsanız, benimle iletişime geçebilirsiniz. Deneyimlerimi paylaşmaktan ve işbirliği yapmaktan mutluluk duyarım.

Back to Blog

Related Posts

View All Posts »
Windsurf ile Olan Tecrübem

Windsurf ile Olan Tecrübem

Windsurf ile geçirdiğim süreçte edindiğim deneyimleri, öğrendiklerimi ve bu yolculuğun bana kattıklarını paylaşıyorum.