Skip to content

4Furki4/Turkce-Sozluk

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

991 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Çağdaş Türkçe Sözlük - Modern Turkish Dictionary

Turkish Dictionary (EN)

Project Aim

  • The world and languages we use to understand the world are always changing, especially in the modern world. My goal is to create an engaging, non-native speaker-friendly, and up-to-date Turkish dictionary, by also consulting with experts in fields such as science.
  • I'll follow the dictionary book that's been used in the Official Turkish Dictionary

Feature Roadmap

Current features

  • Offline word search
  • PWA support to install the app on your devices and use it offline
  • Community contributions
    • Word pronunciations
    • Missing word requests (Detailed and simple word request forms)
    • Word details change suggestions
  • User feedback system
    • Easy feature requests
    • Intuitive feedback submission
  • Save words for later
  • Creating Screenshots of words
  • Sharing word URLs

Future features

  • Minigames to learn or practice Turkish words and grammar
    • Randomized letter puzzles to find words
    • More games coming soon!
  • Community contributions
    • Visual aids and images for words and meanings
  • Personal learning tools
    • Flashcard creation system
    • Quick integration of saved words into learning cards
  • Visual learning support
    • Images for words to enhance understanding
    • Visual context for different word meanings
    • User-contributed image suggestions

Tech Stack

Core Technologies

  • Frontend & Backend
    • Next.js (App Router) with React 19
    • create-t3-app stack
    • tRPC for type-safe API
    • HeroUI for modern UI components
    • next-intl for internationalization
    • PWA support with serwist
    • Uploadthing for file uploads

Database & Authentication

  • PostgreSQL database (using DrizzleORM) hosted on DigitalOcean
  • NextAuth for authentication
    • Multiple OAuth providers (Google, GitHub, Discord)

Getting Started

Prerequisites

  • Node.js
  • Docker and Docker Compose (for local development)
  • PostgreSQL (automatically handled by Docker)

Development Setup

  1. Clone the repository

  2. Copy the .env.example file to .env and fill in the required variables

  3. Start the development environment:

    docker-compose up -d    # Starts PostgreSQL database
    npm install            # Install dependencies
    npm run dev           # Start development server

Environment Variables

# Database
DATABASE_URL=              # PostgreSQL connection URL
DATABASE_SSL_CA=

# Authentication
NEXTAUTH_SECRET=          # See https://next-auth.js.org/configuration/options#secret
NEXTAUTH_URL=             # http://localhost:3000 for local development

# OAuth Providers
AUTH_DISCORD_ID=
AUTH_DISCORD_SECRET=
AUTH_GITHUB_ID=
AUTH_GITHUB_SECRET=
AUTH_GOOGLE_ID=
AUTH_GOOGLE_SECRET=
AUTH_TRUST_HOST=true

# Login via Email (OTP)
RESEND_API_KEY=           # Replace re_xxxxxxxxx with your real Resend API key
RESEND_EMAIL_FROM=        # e.g. "Türkçe Sözlük <no-reply@turkce-sozluk.com>"

# File Upload
UPLOADTHING_SECRET=       # From uploadthing.com
UPLOADTHING_TOKEN=

# Cron secret for scheduled tasks
CRON_SECRET=

# Email
NODEMAIL_PASSWORD=
NODEMAIL_EMAIL=

# Drizzle Studio DB URL
DATABASE_USERNAME=
DATABASE_PASSWORD=
DATABASE_HOST=
DATABASE_PORT=
DATABASE_DATABASE=
DATABASE_SSLMODE=

# Recaptcha
NEXT_PUBLIC_RECAPTCHA_SITE_KEY=
RECAPTCHA_SECRET_KEY=

# Push Notifications
NEXT_PUBLIC_VAPID_PUBLIC_KEY=
VAPID_PRIVATE_KEY=

# Cloudflare R2 for offline db

S3_API_URL=
R2_ACCOUNT_ID=
R2_ACCESS_KEY_ID=
R2_SECRET_ACCESS_KEY=
R2_BUCKET_NAME=
NEXT_PUBLIC_R2_CUSTOM_URL=

Local Postgres Backups (Aiven / Weekly + Boot Catch-Up)

If you're on a free Aiven tier without managed backups, this project includes a local backup automation for macOS:

  • Backs up every Sunday (LaunchAgent calendar trigger)
  • Also runs at every boot/login (RunAtLoad)
  • Before dumping, checks whether the most recent Sunday is already backed up and skips if yes

1. Ensure pg_dump is available

pg_dump --version

If needed on macOS:

brew install libpq
brew link --force libpq

2. Ensure database URL is configured

The backup script reads DATABASE_URL (or AIVEN_DATABASE_URL) from:

  • current shell environment, or
  • .env.production.local by default

You can override the env file:

ENV_FILE=/absolute/path/to/.env.production.local npm run db:backup

3. Run a manual backup test

npm run db:backup

Output dumps are written under backups/postgres/.

4. Install weekly + boot automation (macOS)

By default this schedules Sundays at 09:00 and runs on every boot/login:

npm run db:backup:install

Optional custom time:

BACKUP_HOUR=3 BACKUP_MINUTE=30 npm run db:backup:install

5. Verify the LaunchAgent

launchctl print gui/$(id -u)/com.turkishdictionary.postgres.backup

6. Disable automation later

npm run db:backup:uninstall

Contributing

I welcome contributions! Please check my issues page for current tasks or bug reports. A detailed contribution guide will be added soon.

License

This project is licensed under the GNU Affero General Public License v3.0 (AGPL-3.0). This means:

  • You can use, modify, and distribute this software.
  • If you modify and use this software in a network service (like a web application), you must make the complete source code available to users.
  • Any modifications must also be licensed under AGPL-3.0.
  • Full license terms can be found in the LICENSE file.

Contact

You can contact me at muhammedfurkancengiz@gmail.com

Türkçe Sözlük (TR)

Projenin Amacı

  • Dünya ve onu anlamlandırmak için kullandığımız diller sürekli değişiyor — özellikle de modern dünyada. Amacım, alanında uzman kişilerle (örneğin bilim insanlarıyla) da görüşerek, güncel, ilgi çekici ve ana dili Türkçe olmayan kullanıcılar için de erişilebilir bir Türkçe sözlük oluşturmaktır.
  • Resmî Türkçe Sözlük'teki sözlük yapısı esas alınacaktır.

Özellik Yol Haritası

Mevcut Özellikler

  • Çevrimdışı kelime arama
  • Uygulama olarak indirip çevrimdışı kullanılabilen PWA desteği
  • Topluluk katkıları
    • Kelime telaffuzları
    • Eksik kelime bildirme (Detaylı ve basit formlar)
    • Kelime detaylarında öneri/değişiklik sistemi
  • Kullanıcı geri bildirim sistemi
    • Kolay özellik önerileri
    • Anlaşılır geri bildirim gönderimi
  • Kelimeleri kaydetme
  • Kelime ekran görüntüsü oluşturma
  • Kelime bağlantılarını paylaşma

Gelecek Özellikler

  • Türkçe kelimeleri ve dil bilgisini öğrenmeye yönelik mini oyunlar
    • Harf karıştırmaca türü kelime bulmaca oyunları
    • Yeni oyunlar yolda!
  • Topluluk katkıları
    • Kelimeler için görsel destek / çizimler
  • Kişisel öğrenme araçları
    • Flashcard (kart destesi) oluşturma sistemi
    • Kaydedilen kelimeleri hızlıca karta dönüştürme
  • Görsel öğrenme desteği
    • Anlamı pekiştiren kelime görselleri
    • Kelimelerin farklı anlamlarına görsel bağlam ekleme
    • Kullanıcı katkılı görsel öneri sistemi

Teknoloji Yığını

Temel Teknolojiler

  • Frontend & Backend
    • Next.js (App Router) ve React 19
    • create-t3-app altyapısı
    • tRPC ile tür güvenli API
    • HeroUI ile modern arayüz bileşenleri
    • next-intl ile çok dilli destek
    • serwist ile PWA desteği
    • Uploadthing ile dosya yükleme sistemi

Veritabanı & Kimlik Doğrulama

  • PostgreSQL veritabanı (DrizzleORM kullanılarak) DigitalOcean üzerinde barındırılıyor
  • NextAuth ile kimlik doğrulama
    • Birden fazla OAuth sağlayıcı (Google, GitHub, Discord)

Başlarken

Gereklilikler

  • Node.js
  • Docker ve Docker Compose (yerel geliştirme için)
  • PostgreSQL (Docker tarafından otomatik kurulur)

Geliştirme Ortamı Kurulumu

  1. Depoyu klonlayın

  2. .env.example dosyasını .env olarak kopyalayın ve gerekli alanları doldurun

  3. Geliştirme ortamını başlatın:

    docker-compose up -d    # PostgreSQL veritabanını başlatır
    npm install             # Bağımlılıkları kurar
    npm run dev             # Geliştirme sunucusunu çalıştırır

Releases

No releases published

Packages

 
 
 

Contributors

Languages