• 14-07-2025, 18:45:48
    #1
    https://github.com/grandtheftcode/yaks-nodejs
    Türkiye'nin Açık Kaynak Node.js Tabanlı CMS Sistemi
    YAKS CMS (Yusuf Akıllı Kolay Site), modern web siteleri için tasarlanmış, kullanıcı dostu, hafif ve esnek bir içerik yönetim sistemidir. Summernote editörüyle zengin içerikler oluşturabilir, tema motoruyla siteni özelleştirebilir ve kullanıcı yönetimiyle kontrolü elinde tutabilirsin.
    �� Özellikler
    • �� Blog ve Sayfa Editörü
      • Summernote tabanlı WYSIWYG editör
      • Taslak / yayın / silinmiş içerik yönetimi
      • Zengin medya desteği (resim, video, bağlantı)
    • �� Tema Motoru
      • Tema klasörlerinden dinamik tema seçimi
      • EJS tabanlı şablon sistemi
      • Kolayca özelleştirilebilir HTML/CSS yapısı
    • �� Kullanıcı Editörü
      • Profil bilgilerini güncelleme
      • Şifre değiştirme sistemi (��️ geliştirme aşamasında)
      • Basit yetkilendirme (admin / yazar)
    • �� Sayfa Yönetimi
      • Statik sayfa oluşturma (Hakkımızda, İletişim vb.)
      • SEO dostu URL yapısı (slug desteği)
    ��️ Kullanılan Teknolojiler
    • Sunucu: Node.js + Express.js
    • Veritabanı: MongoDB + Mongoose
    • Editör: Summernote
    • Şablonlama: EJS
    • Kimlik Doğrulama: Passport.js / JWT
    ⚙️ Kurulum

    İlk baş
    git clone https://github.com/grandtheftcode/yaks-nodejs.git
    cd yaks-nodejs
    yazarak proje çekilir
    knexfile.js düzenlenerek veritabanınızın bilgileri ile değiştirilir
    Daha Sonra
    npm install
    npm start
    komutları kullanılarak proje aktif edilir
    Varsayılan olarak: http://localhost:3000
    ��️ Yol Haritası
    • Summernote destekli içerik düzenleme
    • Temel tema motoru
    • Şifre değiştirme arayüzü
    • Tema pazarı ve yükleme arayüzü
    • Eklenti desteği (plugin sistemi)
    �� Demo / Ekran Görüntüsü









    �� Katkıda Bulunun

    Pull request’ler, hata bildirimleri ve geliştirme önerileri için katkıda bulunabilirsiniz.
    Yeni geliştiriciler için dost canlısı bir ortam sunmayı hedefliyoruz.
    �� Lisans

    GNU Lisansı
    Geliştirici: Grand Theft Code (Yusuf CANSEVER)

    Indirme Linki: https://github.com/grandtheftcode/yaks-nodejs
  • 14-07-2025, 18:52:49
    #2
    Başarınızın devamını dilerim.
    Başarı sağlanan test verileri var mı?



    Bir de konu içeriğini iki kez yazmışsınız.
  • 14-07-2025, 18:57:43
    #3
    MaSTeK1 adlı üyeden alıntı: mesajı görüntüle
    Başarınızın devamını dilerim.
    Başarı sağlanan test verileri var mı?



    Bir de konu içeriğini iki kez yazmışsınız.
    Hocam haklısınız test konusunda cms olarak yazdığım ilk yazılımım normalde bu yazılımı ajanslara pazarlayacaktım ama maalesef nodejsin potansiyelini bilmiyorlar ve genellikle php istiyorlar o sebeple laravel versiyonunuda yazıyorum şuan ve testlerini kurumsal anlamda yapamadım sonuçta bunu ücretsiz açık kaynaklı yayınladım bi hatam olursa bana github üzerinden issue atın ben çözerim
  • 14-07-2025, 19:52:31
    #4
    forumda yazılımla ugrasanlar arasında env kullanan nadir birisin tebrikler.
    nacizane fikirlerimi yazmak isterim.


    genel olarak klasörleme ve dosya yapıları importlar güzel mvc kullanmışız.
    fakat aşırı güvenlik açıkları var. sessionları ramde tutuyorsun. redis yok, rate limit yok, helmet yok, cors yok,
    çok fazla acıklama satırı var,
    app.js parçalamak gerekir çok kalabalık görünüyor.
    merkezi logging error handling yok, database bağlantı loglama eksik,

    try catchler güzel retry eklenebilir,

    frontend için ejs görüyorum ama express js yerine next e geçip react yada vue çakılabilir. shadcn tailwindcss gömebilirsin.
    ayrıca orm için knex yerine sequelize düşünülebilir.
    lint için ise eslint eklenmesi lazım.
    model dosyalarını typescript tipleri ile değiştirip interface basıp repositoryler ile iletişim kurarsanız daha kurumsal olur bakımı kolaylaşır. elzem olan async fonksiyonları da eklemen şart.

    örnek usermodel yapısı:
    import db from '../config/database';
    import { ROLES } from '../config/roles';
    import bcrypt from 'bcrypt';
    
    // Kullanıcı tipini tanımla
    export interface IUser {
      id?: number;
      username: string;
      email: string;
      password: string;
      role: number;
      created_at?: Date;
      updated_at?: Date;
    }
    
    // Şifresiz kullanıcı tipi (ör. session için)
    export interface IUserSafe {
      id: number;
      username: string;
      email: string;
      role: number;
      created_at?: Date;
      updated_at?: Date;
    }
    
    const UserModel = {
      async getAll(): Promise<IUserSafe[]> {
        return db('users')
          .select('id', 'username', 'email', 'role', 'created_at', 'updated_at')
          .orderBy('created_at', 'desc');
      },
    
      async findById(id: number): Promise<IUserSafe | undefined> {
        return db('users')
          .where({ id })
          .select('id', 'username', 'email', 'role', 'created_at', 'updated_at')
          .first();
      },
    
      async findByEmailWithPassword(email: string): Promise<IUser | undefined> {
        return db('users').where({ email }).first();
      },
    
      async create(userData: IUser): Promise<number[]> {
        const saltRounds = 10;
        const hashedPassword = await bcrypt.hash(userData.password, saltRounds);
        const newUser = { ...userData, password: hashedPassword };
        return db('users').insert(newUser);
      },
    
      async update(id: number, userData: Partial<IUser>): Promise<number> {
        userData.updated_at = db.fn.now();
        return db('users').where({ id }).update(userData);
      },
    
      async delete(id: number): Promise<number> {
        return db('users').where({ id }).del();
      }
    };
    
    export default UserModel;
  • 14-07-2025, 22:39:26
    #5
    println adlı üyeden alıntı: mesajı görüntüle
    forumda yazılımla ugrasanlar arasında env kullanan nadir birisin tebrikler.
    nacizane fikirlerimi yazmak isterim.


    genel olarak klasörleme ve dosya yapıları importlar güzel mvc kullanmışız.
    fakat aşırı güvenlik açıkları var. sessionları ramde tutuyorsun. redis yok, rate limit yok, helmet yok, cors yok,
    çok fazla acıklama satırı var,
    app.js parçalamak gerekir çok kalabalık görünüyor.
    merkezi logging error handling yok, database bağlantı loglama eksik,

    try catchler güzel retry eklenebilir,

    frontend için ejs görüyorum ama express js yerine next e geçip react yada vue çakılabilir. shadcn tailwindcss gömebilirsin.
    ayrıca orm için knex yerine sequelize düşünülebilir.
    lint için ise eslint eklenmesi lazım.
    model dosyalarını typescript tipleri ile değiştirip interface basıp repositoryler ile iletişim kurarsanız daha kurumsal olur bakımı kolaylaşır. elzem olan async fonksiyonları da eklemen şart.

    örnek usermodel yapısı:
    import db from '../config/database';
    import { ROLES } from '../config/roles';
    import bcrypt from 'bcrypt';
    
    // Kullanıcı tipini tanımla
    export interface IUser {
      id?: number;
      username: string;
      email: string;
      password: string;
      role: number;
      created_at?: Date;
      updated_at?: Date;
    }
    
    // Şifresiz kullanıcı tipi (ör. session için)
    export interface IUserSafe {
      id: number;
      username: string;
      email: string;
      role: number;
      created_at?: Date;
      updated_at?: Date;
    }
    
    const UserModel = {
      async getAll(): Promise<IUserSafe[]> {
        return db('users')
          .select('id', 'username', 'email', 'role', 'created_at', 'updated_at')
          .orderBy('created_at', 'desc');
      },
    
      async findById(id: number): Promise<IUserSafe | undefined> {
        return db('users')
          .where({ id })
          .select('id', 'username', 'email', 'role', 'created_at', 'updated_at')
          .first();
      },
    
      async findByEmailWithPassword(email: string): Promise<IUser | undefined> {
        return db('users').where({ email }).first();
      },
    
      async create(userData: IUser): Promise<number[]> {
        const saltRounds = 10;
        const hashedPassword = await bcrypt.hash(userData.password, saltRounds);
        const newUser = { ...userData, password: hashedPassword };
        return db('users').insert(newUser);
      },
    
      async update(id: number, userData: Partial<IUser>): Promise<number> {
        userData.updated_at = db.fn.now();
        return db('users').where({ id }).update(userData);
      },
    
      async delete(id: number): Promise<number> {
        return db('users').where({ id }).del();
      }
    };
    
    export default UserModel;
    Hocam çok teşekkür ederim iyiki açık kaynağa çıkardım mutlaka yaptıklarınızı yapacağım şimdi anladım neden meta llama nın chatgpt den daha iyi bır model olduğunu seviliyorsunuz bende diyorum hostingde neden bu kadar çok ram tüketiyor diye redis yerine ram kullanırsam olacağı bu
  • 14-07-2025, 22:47:20
    #6
    yusufcansever adlı üyeden alıntı: mesajı görüntüle
    Hocam çok teşekkür ederim iyiki açık kaynağa çıkardım mutlaka yaptıklarınızı yapacağım şimdi anladım neden meta llama nın chatgpt den daha iyi bır model olduğunu seviliyorsunuz
    rica ederim.
    yapay zekalarin hepsi bir arac, ogrenirken sana hiz kazandirir. neyi istedigini soylersen hepsi hemen hemen ayni sonucu verir.
    temel kavramlari bildikten sonra modellerin pek farki yok,
    geliştirici olarak kariyer yapmak istiyorsan teknolojileri, dillerin nasıl çalıştığını, mimarileri, database, api cesitlerini bilmen gerekli. bu diller ust seviye diller, kaynak cok oldugu icin ogrenmesi kolay ve goze hitap ediyor
    bide donanim seviyesi öğrendiğini düşün c, c++ gibi deli olursun.
    bu arada javascript unut, typescript gec. php isteyen musterileri de bence sil. php mi kaldi.
    bol sanslar.
  • 14-07-2025, 22:59:53
    #7
    println adlı üyeden alıntı: mesajı görüntüle
    rica ederim.
    yapay zekalarin hepsi bir arac, ogrenirken sana hiz kazandirir. neyi istedigini soylersen hepsi hemen hemen ayni sonucu verir.
    temel kavramlari bildikten sonra modellerin pek farki yok,
    geliştirici olarak kariyer yapmak istiyorsan teknolojileri, dillerin nasıl çalıştığını, mimarileri, database, api cesitlerini bilmen gerekli. bu diller ust seviye diller, kaynak cok oldugu icin ogrenmesi kolay ve goze hitap ediyor
    bide donanim seviyesi öğrendiğini düşün c, c++ gibi deli olursun.
    bu arada javascript unut, typescript gec. php isteyen musterileri de bence sil. php mi kaldi.
    bol sanslar.
    Sağolun değerli vaktinizi ayırdığınız için iyki varsınız hayırlı formlar