ferdigokdemir / go-starter-kit

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

go-starter-kit

Starter kit'lerin en büyük faydası her proje için proje altyapısı kurmakla uğraşmazsınız. Elinizin altında en çok kullanacağınız eklentiler modüller ve proje dizaynı hazırdır.

Projeyi bilgisayarınıza indirin, ayarları projenize uygun şekilde değiştirin ve geliştirmeye başlayın :)

Projede neler var?

  • Yüksek performanslı ve express.js'in Go diline uyarlanması olan Fiber çatısını kullandım.
  • Environment varible configurasyonu için popüler Viper eklentisini kullandım.
  • Cache kullanımı için redis
  • Veritabanı yönetimi için popüler orm eklentisi Gorm
  • Rate limit için Fiber Limiter
  • Gzip, Brotli sıkıştırma için Fiber Compression
  • Cors enable/disable için Fiber Cors
  • config.json dosyası üzerinden proje configurasyonu
  • Favicon disable/cache için Fiber Favicon Middleware. Performans artışı için kullanmanızı öneririm.
  • Public klasörü ile html ve statik dosyalarınızı sunma imkanı.

Kurulum için gerekli araçlar

  • golang
  • Çalışan bir redis server. Eğer config dosyanızdan redis cache'yi disable ediyorsanız kurmanıza gerek yok.

Proje Dizaynı

config
└── database
    └── database.go
└── middlewares
    └── redis.go
└── providers
    └── redis
        └── redis.go 
└── routes
    └── routes.go 
└── config.json
controllers
└── todos.go
└── users.go
models
└── todo.go
└── user.go
public
└── index.html
└── favicon.go
.gitignore
go.mod
go.sum
main.go
README.md

Kurulum

$ git clone git@github.com:ferdigokdemir/go-starter-kit.git
$ cd go-starter-kit

Ayarlar

config/config.json dosyasını açın. Veritabanı ve redis host ve port configurasyonlarını ayarlayın. Eğer redisCache enabled: false ise redis ayarları yapmanız gerek yok.

{
  "app": {
    "name": "go-starter-kit",
    "domain": "localhost",
    "port": 4141,
    "dev": true
  },
  "database": {
    "enabled": true,
    "mongodb": {
      "database": "icindenevar",
      "uri": "mongodb://luc4y:mJCAbT3Vd4c6I7bj0@icindenevar-shard-00-00.iby7b.mongodb.net:27017,icindenevar-shard-00-01.iby7b.mongodb.net:27017,icindenevar-shard-00-02.iby7b.mongodb.net:27017/icindenevar?ssl=true&replicaSet=atlas-6y38ji-shard-0&authSource=admin&retryWrites=true&w=majority"
    },
    "mysql": {
      "host": "localhost:3306",
      "user": "",
      "password": "",
      "database": ""
    },
    "redis": {
      "uri": "redis://h:pe64481c1f5f9a56da6cdd147661fd344189e2f81cc756d640f2a7a4ce6bc769a6@ec2-54-158-192-49.compute-1.amazonaws.com:22079"
    }
  },
  "compression": {
    "enabled": false // gzip compress default olarak kapalıdır açmak için true yapın
  },
  "cors": {
    "enabled": false // cors güvenlik için default kapalıdır. Production ortamında false yapın.
  },
  "prefork": {
    "enabled": false // Yüksek performans için açabilirsiniz.
  },
  "helmet": {
    "enabled": true // Http güvenliği için default değeri açıktır.
  },
  "logger": {
    "enabled": false // Api'ye gelen requestleri console'da görmek için true yapın
  },
  "ratelimit": {
    "enabled": false // Brute force ataklarına karşı enable yapabilirsiniz.
  },
  "redisCache": {
    "enabled": true // Veritabanından çektiğiniz verileri daha hızlı sunmak için redis'e kaydedin.
  },
  "favicon": {
    "ignore": false, // Tarayıcıdan apinize gelen requestlerde, extra favicon isteğide atılır. Buda gereksiz disk okuması demektir. Ignore true yaparsanız performans artışı sağlar. Veya cache true yapın.
    "cache": true
  }
}

Çalıştır

go run main.go

Build

go build main.go

License

MIT

About


Languages

Language:Go 99.2%Language:HTML 0.8%