{"id":29079429,"url":"https://github.com/biyonik/foodies","last_synced_at":"2026-04-08T23:33:19.890Z","repository":{"id":298375472,"uuid":"999771617","full_name":"biyonik/foodies","owner":"biyonik","description":"NextJS 15 + React 19 + TypeScript + SQLite Full Stack Web Application","archived":false,"fork":false,"pushed_at":"2025-06-11T13:22:54.000Z","size":2475,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"master","last_synced_at":"2025-06-27T17:05:22.242Z","etag":null,"topics":["css","javascript","nextjs","react","sqlite","typescript","zod"],"latest_commit_sha":null,"homepage":"","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/biyonik.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2025-06-10T19:01:38.000Z","updated_at":"2025-06-11T13:22:57.000Z","dependencies_parsed_at":"2025-06-10T20:44:49.779Z","dependency_job_id":null,"html_url":"https://github.com/biyonik/foodies","commit_stats":null,"previous_names":["biyonik/foodies"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/biyonik/foodies","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/biyonik%2Ffoodies","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/biyonik%2Ffoodies/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/biyonik%2Ffoodies/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/biyonik%2Ffoodies/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/biyonik","download_url":"https://codeload.github.com/biyonik/foodies/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/biyonik%2Ffoodies/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31579054,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-08T14:31:17.711Z","status":"ssl_error","status_checked_at":"2026-04-08T14:31:17.202Z","response_time":54,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["css","javascript","nextjs","react","sqlite","typescript","zod"],"created_at":"2025-06-27T17:02:41.804Z","updated_at":"2026-04-08T23:33:19.867Z","avatar_url":"https://github.com/biyonik.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# 🍽️ NextLevel Food\n\n**Yemek tarifleri paylaşım platformu** - Next.js 15 ve React 19 ile geliştirilmiş modern bir web uygulaması.\n\n![Next.js](https://img.shields.io/badge/Next.js-15.3.3-black?style=for-the-badge\u0026logo=next.js)\n![React](https://img.shields.io/badge/React-19.1.0-blue?style=for-the-badge\u0026logo=react)\n![TypeScript](https://img.shields.io/badge/TypeScript-5.8.3-blue?style=for-the-badge\u0026logo=typescript)\n![SQLite](https://img.shields.io/badge/SQLite-Node%20Built--in-green?style=for-the-badge\u0026logo=sqlite)\n\n## 📋 İçindekiler\n\n- [Özellikler](#-özellikler)\n- [Teknolojiler](#-teknolojiler)\n- [Kurulum](#-kurulum)\n- [Kullanım](#-kullanım)\n- [Proje Yapısı](#-proje-yapısı)\n- [API Endpoints](#-api-endpoints)\n- [Katkıda Bulunma](#-katkıda-bulunma)\n\n## ✨ Özellikler\n\n### 🏠 Ana Sayfa\n- **Dinamik görsel slider** - Yemek fotoğrafları ile çekici anasayfa\n- **Modern tasarım** - Gradient arka planlar ve smooth animasyonlar\n- **Responsive layout** - Tüm cihazlarda mükemmel görünüm\n\n### 🍜 Yemek Yönetimi\n- **Tarif listeleme** - Grid layout ile şık yemek kartları\n- **Detay sayfaları** - Her tarif için kapsamlı bilgiler\n- **Görsel önizleme** - Next.js Image optimizasyonu ile hızlı yükleme\n- **Dinamik routing** - SEO dostu URL yapısı (`/meals/[slug]`)\n\n### ➕ Yemek Ekleme\n- **Interaktif form** - React 19'un useActionState hook'u ile\n- **Görsel yükleme** - \n- **Canlı önizleme** - Yüklenen görselin anında görüntülenmesi\n- **Form validasyonu** - Zod ile güçlü backend validasyonu\n- **XSS koruması** - Güvenli içerik filtreleme\n\n## 🛠️ Teknolojiler\n\n### Frontend\n- **Next.js 15** - React framework with App Router\n- **React 19** - En yeni React versiyonu\n- **TypeScript** - Type safety ve geliştirici deneyimi\n- **CSS Modules** - Scoped styling\n- **Tailwind CSS** - Utility-first CSS framework (kısmi kullanım)\n\n### Backend\n- **Server Actions** - Next.js'in yerleşik backend çözümü\n- **Node.js SQLite** - Yerleşik SQLite modülü (node:sqlite)\n- **Form Handling** - React 19 useActionState hook\n- **File Upload** - Multipart form data işleme\n\n### Validasyon ve Güvenlik\n- **Zod** - Runtime type validation\n- **XSS Protection** - İçerik filtreleme\n- **Slugify** - SEO dostu URL oluşturma\n- **Image Optimization** - Next.js Image component\n\n### Geliştirme Araçları\n- **ESLint** - Code linting\n- **PNPM** - Hızlı paket yöneticisi\n- **CSS Modules** - Modular styling\n\n## 🚀 Kurulum\n\n### Ön Gereksinimler\n- Node.js 18+ (önerilir: 18.20.0)\n- PNPM paket yöneticisi\n\n### Adım Adım Kurulum\n\n1. **Projeyi klonlayın**\n```bash\ngit clone https://github.com/biyonik/nextlevel-food.git\ncd nextlevel-food\n```\n\n2. **Bağımlılıkları yükleyin**\n```bash\npnpm install\n```\n\n3. **Veritabanını başlatın**\n```bash\nnode initdb.js\n```\n\n4. **Geliştirme sunucusunu başlatın**\n```bash\npnpm dev\n```\n\n5. **Uygulamayı açın**\n   Tarayıcınızda [http://localhost:3000](http://localhost:3000) adresine gidin.\n\n## 📖 Kullanım\n\n### Yemek Tarifleri Görüntüleme\n- Ana sayfadan \"Explore Meals\" butonuna tıklayın\n- Yemek kartlarından birine tıklayarak detayları görün\n- Tarif sahibi ile iletişim kurmak için e-posta linkini kullanın\n\n### Yeni Tarif Ekleme\n1. `/meals/share` sayfasına gidin\n2. Formu doldurun:\n    - **İsminiz ve e-postanız**\n    - **Tarif başlığı**\n    - **Kısa açıklama**\n    - **Detaylı talimatlar**\n    - **Yemek fotoğrafı** (PNG, JPEG, JPG)\n3. \"Share Meal\" butonuna tıklayın\n\n### Tarif Arama\n- Yemek listesi sayfasında arama kutusunu kullanın\n- Tarif adı, açıklama veya yaratıcı ismine göre arama yapın\n\n## 📁 Proje Yapısı\n\n```\nnextlevel-food/\n├── 📁 app/                    # Next.js App Router\n│   ├── 📁 community/         # Topluluk sayfası\n│   ├── 📁 meals/             # Yemek sayfaları\n│   │   ├── 📁 [mealSlug]/    # Dinamik tarif sayfası\n│   │   └── 📁 share/         # Tarif ekleme sayfası\n│   ├── globals.css           # Global stiller\n│   ├── layout.tsx            # Ana layout\n│   └── page.tsx              # Ana sayfa\n├── 📁 components/            # React componentleri\n│   ├── 📁 image-slideshow/   # Görsel slider\n│   ├── 📁 main-header/       # Ana başlık\n│   ├── 📁 meals/             # Yemek componentleri\n│   └── 📁 nav-link/          # Navigasyon linki\n├── 📁 lib/                   # Utility fonksiyonlar\n│   ├── 📁 actions/           # Server Actions\n│   ├── 📁 validations/       # Zod şemaları\n│   └── meals.js              # Veritabanı işlemleri\n├── 📁 models/                # TypeScript interfaces\n├── 📁 public/                # Statik dosyalar\n│   └── 📁 images/            # Yemek fotoğrafları\n├── initdb.js                 # Veritabanı başlatma\n├── meals.db                  # SQLite veritabanı\n└── package.json              # Proje konfigürasyonu\n```\n\n### Veri Modeli\n\n```typescript\ninterface MealModel {\n  id?: string;\n  title: string;\n  summary: string;\n  slug?: string;\n  image: string;\n  creator: string;\n  creator_email?: string;\n  instructions: string;\n}\n```\n\n## 🎨 Özelleştirme\n\n### Tema Renkleri\nProje özel CSS değişkenleri kullanıyor. `globals.css` dosyasından renkleri değiştirebilirsiniz:\n\n```css\n:root {\n  --primary-color: #f9572a;\n  --secondary-color: #ff8a05;\n  --background-color: #282c34;\n  --text-color: #ddd6cb;\n}\n```\n\n### Yeni Sayfalar Ekleme\n1. `app/` dizinine yeni klasör oluşturun\n2. `page.tsx` dosyası ekleyin\n3. İhtiyaç duyulursa `layout.tsx` ekleyin\n\n## 🔧 Veritabanı\n\nProje Node.js'in yerleşik SQLite modülünü (`node:sqlite`) kullanıyor. Bu sayede:\n- ✅ Ek bağımlılık yok\n- ✅ Native compilation sorunu yok\n- ✅ Hızlı performans\n- ✅ Cross-platform uyumluluk\n\n### Veritabanı Şeması\n\n```sql\nCREATE TABLE meals (\n    id INTEGER PRIMARY KEY AUTOINCREMENT,\n    slug TEXT NOT NULL UNIQUE,\n    title TEXT NOT NULL,\n    image TEXT NOT NULL,\n    summary TEXT NOT NULL,\n    instructions TEXT NOT NULL,\n    creator TEXT NOT NULL,\n    creator_email TEXT NOT NULL\n);\n```\n\n## 🤝 Katkıda Bulunma\n\n1. Projeyi fork edin\n2. Feature branch oluşturun (`git checkout -b feature/amazing-feature`)\n3. Değişikliklerinizi commit edin (`git commit -m 'Add some amazing feature'`)\n4. Branch'inizi push edin (`git push origin feature/amazing-feature`)\n5. Pull Request oluşturun\n\n### Geliştirme Kuralları\n- ESLint kurallarına uyun\n- TypeScript tiplerini kullanın\n- CSS Modules ile stil yazın\n- Server Actions için proper error handling\n\n## 📝 Lisans\n\nBu proje MIT lisansı altında lisanslanmıştır. Detaylar için `LICENSE` dosyasına bakın.\n\n## 👨‍💻 Geliştirici\n\n**[Ahmet ALTUN]** - *Full Stack Developer*\n- GitHub: [@biyonik](https://github.com/biyonik)\n- LinkedIn: [Ahmet ALTUN](https://linkedin.com/in/biyonik)\n\n---\n\n⭐ Bu projeyi beğendiyseniz yıldız vermeyi unutmayın!\n\n**Next.js 15 ile moderne web geliştirme** 🚀\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbiyonik%2Ffoodies","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fbiyonik%2Ffoodies","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbiyonik%2Ffoodies/lists"}