Observer; sunucu yönetimi, veritabanı geçişleri, anahtar üretimi, kullanıcı yönetimi ve geliştirme araçları için bir CLI sağlar.

Kurulum

# Kaynaktan derleme
just build

# Veya doğrudan kurulum
go install github.com/lbrty/observer/cmd/observer@latest

Komutlar

serve

HTTP sunucusunu başlatır.

observer serve [flags]
FlagTypeDefaultAçıklama
--hoststringlocalhostSunucu adresi (SERVER_HOST env değişkenini geçersiz kılar)
--portint9000Sunucu portu (SERVER_PORT env değişkenini geçersiz kılar)

Örnekler:

# Varsayılan ayarlarla başlat (localhost:9000)
observer serve

# Özel adres ve port
observer serve --host 0.0.0.0 --port 8080

# Ortam değişkenleri ile yapılandırma
DATABASE_DSN="postgres://..." REDIS_URL="redis://..." observer serve

Üretim derlemelerinde, gömülü geçişler başlangıçta otomatik olarak uygulanır. Sunucu, SIGINT/SIGTERM sinyallerinde 30 saniyelik bir zaman aşımı ile düzgün bir şekilde kapanır.


migrate

Veritabanı geçiş yönetimi.

migrate up

Bekleyen tüm geçişleri uygular.

observer migrate up [flags]
FlagTypeDefaultAçıklama
--pathstringmigrationsGeçiş dosyaları dizin yolu
# Bekleyen tüm geçişleri uygula
observer migrate up

# Özel geçiş dizini kullan
observer migrate up --path ./db/migrations

migrate create

Yeni bir ileri-yönlü geçiş dosyası oluşturur.

observer migrate create [name] [flags]
FlagTypeDefaultAçıklama
--pathstringmigrationsGeçiş dosyaları dizin yolu
--sequintautoAçık sıra numarası
# Geçiş oluştur (otomatik numaralandırma)
observer migrate create add_audit_log

# Açık sıra numarası ile oluştur
observer migrate create add_audit_log --seq 25

migrate version

Mevcut geçiş sürümünü gösterir.

observer migrate version [flags]
FlagTypeDefaultAçıklama
--pathstringmigrationsGeçiş dosyaları dizin yolu

keygen

JWT imzalama için RSA anahtar çifti üretir.

observer keygen [flags]
FlagTypeDefaultAçıklama
--bitsint4096RSA anahtar boyutu (minimum 4096)
--outputstring.Anahtar dosyaları için çıktı dizini

Örnekler:

# Mevcut dizinde anahtar üret
observer keygen

# keys/ dizininde 8192-bit anahtar üret
observer keygen --bits 8192 --output keys

Çıktı dosyaları: private_key.pem (0600) ve public_key.pem (0644).


create-admin

Platform yönetici hesabı oluşturur.

observer create-admin [flags]
FlagTypeZorunluAçıklama
--emailstringevetYönetici e-posta adresi
--passwordstringevetYönetici parolası (min 8 karakter)
--first-namestringhayırAd
--last-namestringhayırSoyad
--phonestringhayırTelefon numarası

Örnekler:

# Zorunlu alanlarla yönetici oluştur
observer create-admin --email admin@example.com --password "s3cure-p4ss"

# İsteğe bağlı profil alanları ile
observer create-admin \
  --email admin@example.com \
  --password "s3cure-p4ss" \
  --first-name Admin \
  --last-name User \
  --phone "+1234567890"

Veritabanına bağlanır, parolayı Argon2id ile hashler ve kullanıcıyı admin rolüyle ekler (doğrulanmış + aktif). Yinelenen e-posta ve telefon numaralarını reddeder.


seed

Geliştirme için veritabanını gerçekçi test verileriyle doldurur.

observer seed [flags]
FlagTypeDefaultAçıklama
--peopleint50Proje başına kişi sayısı
--projectsint2Proje sayısı
--seedint640Rastgele tohum (0 = rastgele)

Örnekler:

# Varsayılan değerlerle doldur (2 proje, her biri 50 kişi)
observer seed

# Özel sayılar
observer seed --projects 5 --people 200

# Tekrarlanabilir tohum
observer seed --seed 42
Bu komut veri eklemeden önce TÜM tabloları siler. Üretim veritabanında çalıştırmayın.

Referans verileri (ülkeler, bölgeler, yerler, ofisler, kategoriler), bilinen parolalarla (password) kullanıcılar, izinli projeler oluşturur ve kişileri destek kayıtları, göç kayıtları, notlar, evcil hayvanlar ve hanehalkları ile doldurur.


setup

İlk kurulum işlemini etkileşimli olarak çalıştırır.

observer setup

Bu komut:

  1. Makul varsayılanlarla bir .env dosyası oluşturur (üzerine yazmadan önce onay ister)
  2. Gerekli dizinleri oluşturur (keys/, data/uploads/)
  3. JWT imzalama için 4096-bit RSA anahtar çifti üretir
  4. Sonraki adımlar için talimatları yazdırır

Örnek çıktı:

Created .env with default configuration.
Created directory: keys
Created directory: data/uploads
Generating 4096-bit RSA key pair...
Private key written to: keys/private_key.pem
Public key written to: keys/public_key.pem

Setup complete!

Next steps:
  1. Start Postgres and Redis:
     docker compose up -d

  2. Run database migrations:
     observer migrate up

  3. Create an admin user:
     observer create-admin --email admin@example.com --password "your-password"

  4. Start the server:
     observer serve

Yaygın İş Akışları

İlk kurulum

# 1. Etkileşimli kurulumu çalıştır (.env, anahtarlar, dizinler oluşturur)
observer setup

# 2. Postgres ve Redis'i başlat
docker compose up -d

# 3. Geçişleri uygula
observer migrate up

# 4. Yönetici hesabı oluştur
observer create-admin --email admin@example.com --password "your-password"

# 5. Sunucuyu başlat
observer serve

Örnek verilerle tam demo kurulumu için demo kurulum kılavuzuna bakın.

Yeni geçiş ekleme

# Geçiş dosyasını oluştur
observer migrate create add_audit_log

# Oluşturulan SQL dosyasını düzenle
$EDITOR migrations/000025_add_audit_log.up.sql

# Uygula
observer migrate up

Geliştirme verilerini doldurma

# Önce geçişlerin uygulandığından emin ol
observer migrate up

# Varsayılan değerlerle doldur
observer seed

# Giriş bilgileri: admin@example.com / password

Yeni JWT anahtarları üretme

# Yeni anahtarlar üret
observer keygen --output keys

# Yollar varsayılanlardan farklıysa .env dosyasını güncelle
JWT_PRIVATE_KEY_PATH=keys/private_key.pem
JWT_PUBLIC_KEY_PATH=keys/public_key.pem

# Sunucuyu yeniden başlat — mevcut tokenlar geçersiz olacaktır
observer serve