diff --git a/.claude/agents/ai-engineer.md b/.agent/agents/ai-engineer.md similarity index 100% rename from .claude/agents/ai-engineer.md rename to .agent/agents/ai-engineer.md diff --git a/.claude/agents/api-documenter.md b/.agent/agents/api-documenter.md similarity index 100% rename from .claude/agents/api-documenter.md rename to .agent/agents/api-documenter.md diff --git a/.claude/agents/api-security-audit.md b/.agent/agents/api-security-audit.md similarity index 100% rename from .claude/agents/api-security-audit.md rename to .agent/agents/api-security-audit.md diff --git a/.claude/agents/code-reviewer.md b/.agent/agents/code-reviewer.md similarity index 100% rename from .claude/agents/code-reviewer.md rename to .agent/agents/code-reviewer.md diff --git a/.claude/agents/data-scientist.md b/.agent/agents/data-scientist.md similarity index 100% rename from .claude/agents/data-scientist.md rename to .agent/agents/data-scientist.md diff --git a/.claude/agents/database-optimizer.md b/.agent/agents/database-optimizer.md similarity index 100% rename from .claude/agents/database-optimizer.md rename to .agent/agents/database-optimizer.md diff --git a/.claude/agents/debugger.md b/.agent/agents/debugger.md similarity index 100% rename from .claude/agents/debugger.md rename to .agent/agents/debugger.md diff --git a/.claude/agents/security-engineer.md b/.agent/agents/security-engineer.md similarity index 100% rename from .claude/agents/security-engineer.md rename to .agent/agents/security-engineer.md diff --git a/.claude/agents/typescript-pro.md b/.agent/agents/typescript-pro.md similarity index 100% rename from .claude/agents/typescript-pro.md rename to .agent/agents/typescript-pro.md diff --git a/.claude/skills/code-reviewer/SKILL.md b/.agent/skills/code-reviewer/SKILL.md similarity index 100% rename from .claude/skills/code-reviewer/SKILL.md rename to .agent/skills/code-reviewer/SKILL.md diff --git a/.claude/skills/code-reviewer/references/code_review_checklist.md b/.agent/skills/code-reviewer/references/code_review_checklist.md similarity index 100% rename from .claude/skills/code-reviewer/references/code_review_checklist.md rename to .agent/skills/code-reviewer/references/code_review_checklist.md diff --git a/.claude/skills/code-reviewer/references/coding_standards.md b/.agent/skills/code-reviewer/references/coding_standards.md similarity index 100% rename from .claude/skills/code-reviewer/references/coding_standards.md rename to .agent/skills/code-reviewer/references/coding_standards.md diff --git a/.claude/skills/code-reviewer/references/common_antipatterns.md b/.agent/skills/code-reviewer/references/common_antipatterns.md similarity index 100% rename from .claude/skills/code-reviewer/references/common_antipatterns.md rename to .agent/skills/code-reviewer/references/common_antipatterns.md diff --git a/.claude/skills/code-reviewer/scripts/code_quality_checker.py b/.agent/skills/code-reviewer/scripts/code_quality_checker.py similarity index 100% rename from .claude/skills/code-reviewer/scripts/code_quality_checker.py rename to .agent/skills/code-reviewer/scripts/code_quality_checker.py diff --git a/.claude/skills/code-reviewer/scripts/pr_analyzer.py b/.agent/skills/code-reviewer/scripts/pr_analyzer.py similarity index 100% rename from .claude/skills/code-reviewer/scripts/pr_analyzer.py rename to .agent/skills/code-reviewer/scripts/pr_analyzer.py diff --git a/.claude/skills/code-reviewer/scripts/review_report_generator.py b/.agent/skills/code-reviewer/scripts/review_report_generator.py similarity index 100% rename from .claude/skills/code-reviewer/scripts/review_report_generator.py rename to .agent/skills/code-reviewer/scripts/review_report_generator.py diff --git a/.claude/skills/receiving-code-review/SKILL.md b/.agent/skills/receiving-code-review/SKILL.md similarity index 100% rename from .claude/skills/receiving-code-review/SKILL.md rename to .agent/skills/receiving-code-review/SKILL.md diff --git a/.claude/skills/senior-backend/SKILL.md b/.agent/skills/senior-backend/SKILL.md similarity index 100% rename from .claude/skills/senior-backend/SKILL.md rename to .agent/skills/senior-backend/SKILL.md diff --git a/.claude/skills/senior-backend/references/api_design_patterns.md b/.agent/skills/senior-backend/references/api_design_patterns.md similarity index 100% rename from .claude/skills/senior-backend/references/api_design_patterns.md rename to .agent/skills/senior-backend/references/api_design_patterns.md diff --git a/.claude/skills/senior-backend/references/backend_security_practices.md b/.agent/skills/senior-backend/references/backend_security_practices.md similarity index 100% rename from .claude/skills/senior-backend/references/backend_security_practices.md rename to .agent/skills/senior-backend/references/backend_security_practices.md diff --git a/.claude/skills/senior-backend/references/database_optimization_guide.md b/.agent/skills/senior-backend/references/database_optimization_guide.md similarity index 100% rename from .claude/skills/senior-backend/references/database_optimization_guide.md rename to .agent/skills/senior-backend/references/database_optimization_guide.md diff --git a/.claude/skills/senior-backend/scripts/api_load_tester.py b/.agent/skills/senior-backend/scripts/api_load_tester.py similarity index 100% rename from .claude/skills/senior-backend/scripts/api_load_tester.py rename to .agent/skills/senior-backend/scripts/api_load_tester.py diff --git a/.claude/skills/senior-backend/scripts/api_scaffolder.py b/.agent/skills/senior-backend/scripts/api_scaffolder.py similarity index 100% rename from .claude/skills/senior-backend/scripts/api_scaffolder.py rename to .agent/skills/senior-backend/scripts/api_scaffolder.py diff --git a/.claude/skills/senior-backend/scripts/database_migration_tool.py b/.agent/skills/senior-backend/scripts/database_migration_tool.py similarity index 100% rename from .claude/skills/senior-backend/scripts/database_migration_tool.py rename to .agent/skills/senior-backend/scripts/database_migration_tool.py diff --git a/.claude/skills/senior-fullstack/SKILL.md b/.agent/skills/senior-fullstack/SKILL.md similarity index 100% rename from .claude/skills/senior-fullstack/SKILL.md rename to .agent/skills/senior-fullstack/SKILL.md diff --git a/.claude/skills/senior-fullstack/references/architecture_patterns.md b/.agent/skills/senior-fullstack/references/architecture_patterns.md similarity index 100% rename from .claude/skills/senior-fullstack/references/architecture_patterns.md rename to .agent/skills/senior-fullstack/references/architecture_patterns.md diff --git a/.claude/skills/senior-fullstack/references/development_workflows.md b/.agent/skills/senior-fullstack/references/development_workflows.md similarity index 100% rename from .claude/skills/senior-fullstack/references/development_workflows.md rename to .agent/skills/senior-fullstack/references/development_workflows.md diff --git a/.claude/skills/senior-fullstack/references/tech_stack_guide.md b/.agent/skills/senior-fullstack/references/tech_stack_guide.md similarity index 100% rename from .claude/skills/senior-fullstack/references/tech_stack_guide.md rename to .agent/skills/senior-fullstack/references/tech_stack_guide.md diff --git a/.claude/skills/senior-fullstack/scripts/code_quality_analyzer.py b/.agent/skills/senior-fullstack/scripts/code_quality_analyzer.py similarity index 100% rename from .claude/skills/senior-fullstack/scripts/code_quality_analyzer.py rename to .agent/skills/senior-fullstack/scripts/code_quality_analyzer.py diff --git a/.claude/skills/senior-fullstack/scripts/fullstack_scaffolder.py b/.agent/skills/senior-fullstack/scripts/fullstack_scaffolder.py similarity index 100% rename from .claude/skills/senior-fullstack/scripts/fullstack_scaffolder.py rename to .agent/skills/senior-fullstack/scripts/fullstack_scaffolder.py diff --git a/.claude/skills/senior-fullstack/scripts/project_scaffolder.py b/.agent/skills/senior-fullstack/scripts/project_scaffolder.py similarity index 100% rename from .claude/skills/senior-fullstack/scripts/project_scaffolder.py rename to .agent/skills/senior-fullstack/scripts/project_scaffolder.py diff --git a/.claude/skills/senior-ml-engineer/SKILL.md b/.agent/skills/senior-ml-engineer/SKILL.md similarity index 100% rename from .claude/skills/senior-ml-engineer/SKILL.md rename to .agent/skills/senior-ml-engineer/SKILL.md diff --git a/.claude/skills/senior-ml-engineer/references/llm_integration_guide.md b/.agent/skills/senior-ml-engineer/references/llm_integration_guide.md similarity index 100% rename from .claude/skills/senior-ml-engineer/references/llm_integration_guide.md rename to .agent/skills/senior-ml-engineer/references/llm_integration_guide.md diff --git a/.claude/skills/senior-ml-engineer/references/mlops_production_patterns.md b/.agent/skills/senior-ml-engineer/references/mlops_production_patterns.md similarity index 100% rename from .claude/skills/senior-ml-engineer/references/mlops_production_patterns.md rename to .agent/skills/senior-ml-engineer/references/mlops_production_patterns.md diff --git a/.claude/skills/senior-ml-engineer/references/rag_system_architecture.md b/.agent/skills/senior-ml-engineer/references/rag_system_architecture.md similarity index 100% rename from .claude/skills/senior-ml-engineer/references/rag_system_architecture.md rename to .agent/skills/senior-ml-engineer/references/rag_system_architecture.md diff --git a/.claude/skills/senior-ml-engineer/scripts/ml_monitoring_suite.py b/.agent/skills/senior-ml-engineer/scripts/ml_monitoring_suite.py similarity index 100% rename from .claude/skills/senior-ml-engineer/scripts/ml_monitoring_suite.py rename to .agent/skills/senior-ml-engineer/scripts/ml_monitoring_suite.py diff --git a/.claude/skills/senior-ml-engineer/scripts/model_deployment_pipeline.py b/.agent/skills/senior-ml-engineer/scripts/model_deployment_pipeline.py similarity index 100% rename from .claude/skills/senior-ml-engineer/scripts/model_deployment_pipeline.py rename to .agent/skills/senior-ml-engineer/scripts/model_deployment_pipeline.py diff --git a/.claude/skills/senior-ml-engineer/scripts/rag_system_builder.py b/.agent/skills/senior-ml-engineer/scripts/rag_system_builder.py similarity index 100% rename from .claude/skills/senior-ml-engineer/scripts/rag_system_builder.py rename to .agent/skills/senior-ml-engineer/scripts/rag_system_builder.py diff --git a/.claude/skills/senior-prompt-engineer/SKILL.md b/.agent/skills/senior-prompt-engineer/SKILL.md similarity index 100% rename from .claude/skills/senior-prompt-engineer/SKILL.md rename to .agent/skills/senior-prompt-engineer/SKILL.md diff --git a/.claude/skills/senior-prompt-engineer/references/agentic_system_design.md b/.agent/skills/senior-prompt-engineer/references/agentic_system_design.md similarity index 100% rename from .claude/skills/senior-prompt-engineer/references/agentic_system_design.md rename to .agent/skills/senior-prompt-engineer/references/agentic_system_design.md diff --git a/.claude/skills/senior-prompt-engineer/references/llm_evaluation_frameworks.md b/.agent/skills/senior-prompt-engineer/references/llm_evaluation_frameworks.md similarity index 100% rename from .claude/skills/senior-prompt-engineer/references/llm_evaluation_frameworks.md rename to .agent/skills/senior-prompt-engineer/references/llm_evaluation_frameworks.md diff --git a/.claude/skills/senior-prompt-engineer/references/prompt_engineering_patterns.md b/.agent/skills/senior-prompt-engineer/references/prompt_engineering_patterns.md similarity index 100% rename from .claude/skills/senior-prompt-engineer/references/prompt_engineering_patterns.md rename to .agent/skills/senior-prompt-engineer/references/prompt_engineering_patterns.md diff --git a/.claude/skills/senior-prompt-engineer/scripts/agent_orchestrator.py b/.agent/skills/senior-prompt-engineer/scripts/agent_orchestrator.py similarity index 100% rename from .claude/skills/senior-prompt-engineer/scripts/agent_orchestrator.py rename to .agent/skills/senior-prompt-engineer/scripts/agent_orchestrator.py diff --git a/.claude/skills/senior-prompt-engineer/scripts/prompt_optimizer.py b/.agent/skills/senior-prompt-engineer/scripts/prompt_optimizer.py similarity index 100% rename from .claude/skills/senior-prompt-engineer/scripts/prompt_optimizer.py rename to .agent/skills/senior-prompt-engineer/scripts/prompt_optimizer.py diff --git a/.claude/skills/senior-prompt-engineer/scripts/rag_evaluator.py b/.agent/skills/senior-prompt-engineer/scripts/rag_evaluator.py similarity index 100% rename from .claude/skills/senior-prompt-engineer/scripts/rag_evaluator.py rename to .agent/skills/senior-prompt-engineer/scripts/rag_evaluator.py diff --git a/mds/deploy.md b/mds/deploy.md index 3aa55f7..72ac9f5 100644 --- a/mds/deploy.md +++ b/mds/deploy.md @@ -1,76 +1,81 @@ -🏗️ Backend Altyapı Kurulum Rehberi (Database & Redis) -Bu doküman, Raspberry Pi üzerinde yeni bir Backend projesi için gerekli olan kalıcı veritabanı ve Redis servislerinin nasıl kurulacağını anlatır. - -⚠️ Mantık: Bu servisler deploy sürecine dahil EDİLMEZ. Sunucuda bir kere kurulur, verileri kalıcı olarak saklar ve Backend projesi buraya bağlanır. - -1. Hazırlık: Docker Ağı Kontrolü -Tüm servislerin (Gitea, App, DB, Redis) birbirini görebilmesi için ortak bir ağda olmaları gerekir. - +🚀 Raspberry Pi Proje Dağıtım Rehberi (Checklist) +Bu rehber, mevcut merkezi altyapıyı (Gitea, Runner, Central Database, Nginx) kullanarak yeni NestJS (Backend) ve Next.js (Frontend) projelerini nasıl ayağa kaldıracağını adım adım açıklar. +🏗 1. Altyapı Hazırlığı (Infrastructure) +A. Veritabanı Oluşturma +Her yeni proje için merkezi PostgreSQL konteynerinde yeni bir veritabanı açılmalıdır. +code Bash -# Ağ var mı kontrol et (Listede 'gitea' yazmalı) -docker network ls - -# Yoksa oluştur: -docker network create gitea -2. PostgreSQL Veritabanı Kurulumu (Kalıcı) -Her yeni proje için port çakışması yaşamamak adına konteyner ismini ve volume ismini projeye özel değiştir. - -Değiştirilecek Yerler: proje-db-ismi, DB_KULLANICI, DB_SIFRE, DB_ADI - +# PROJE_ADI kısmını küçük harf ve boşluksuz yaz (örn: e_ticaret_db) +docker exec -it backend_db createdb -U 'Rub1c0N-UseR.!' PROJE_ADI_db +B. DNS Ayarları +Domain panelinden (Cloudflare vb.) yeni subdomain'leri Raspberry Pi'nin dış IP'sine yönlendir: +api-proje.bilgich.com -> Raspberry Pi IP +ui-proje.bilgich.com -> Raspberry Pi IP +🔐 2. Gitea Secret Ayarları +Gitea reponuzda Settings > Actions > Secrets yolunu izleyerek aşağıdaki anahtarları tanımlayın. +Backend İçin: +Key Value Örneği +DATABASE_URL postgresql://Rub1c0N-UseR.%21:SIFRE%3D@backend_db:5432/PROJE_ADI_db?schema=public +JWT_SECRET en_az_32_karakterli_rastgele_string +Frontend İçin: +Key Value Örneği +NEXT_PUBLIC_API_URL http://api-proje.bilgich.com/api +NEXTAUTH_URL http://ui-proje.bilgich.com +NEXTAUTH_SECRET openssl_rand_base64_32_cikti +Not: DATABASE_URL içinde özel karakter varsa: ! -> %21, = -> %3D kullanmayı unutma. +🛠 3. Backend (NestJS) Proje Ayarları +main.ts: Global prefix ve Swagger yollarını kontrol et. +Dockerfile: Mevcut çalışan NestJS Dockerfile'ı kullan. +deploy.yml Değişiklikleri: +--name backend-PROJE-container (Unique isim) +-p 150X:3000 (Sıradaki boş port: 1502, 1503...) +--network gitea-server_gitea (Doğru network adı) +🎨 4. Frontend (Next.js) Proje Ayarları +next.config.js: output: 'standalone' satırını ekle. +Dockerfile: ARG ve ENV satırlarına NEXT_PUBLIC_ değişkenlerini ekle. +deploy-ui.yml Değişiklikleri: +--build-arg ile tüm Gitea secret'larını build aşamasına geç. +--name ui-PROJE-container (Unique isim) +-p 180X:3000 (Sıradaki boş port: 1801, 1802...) +-e NEXTAUTH_URL ve NEXTAUTH_SECRET runtime değişkenlerini ekle. +🚦 5. Nginx Yönlendirmesi +Her servis için yeni bir Nginx konfigürasyonu oluşturulmalıdır. +Dosya Oluştur: +code Bash -docker run -d \ - --name proje-adi-postgres \ - --restart always \ - --network gitea \ - -e POSTGRES_USER=db_kullanici \ - -e POSTGRES_PASSWORD=cok_guclu_sifre \ - -e POSTGRES_DB=proje_db_adi \ - -v proje_adi_db_data:/var/lib/postgresql/data \ - postgres:16-alpine -Not: -p (Port) parametresi eklemedik. Çünkü dış dünyaya kapalı olsun, sadece bizim uygulamamız (aynı ağdaki) erişebilsin istiyoruz. Güvenlik için en iyisi budur. - -3. Redis Kurulumu (Kalıcı) -Redis için de projeye özel bir isim veriyoruz. - +sudo nano /etc/nginx/sites-available/proje-api # Backend için +sudo nano /etc/nginx/sites-available/proje-ui # Frontend için +Config İçeriği (Örnek): +code +Nginx +server { + listen 80; + server_name api-proje.bilgich.com; + location / { + proxy_pass http://127.0.0.1:150X; # Uygulamanın dış portu + include proxy_params; # Veya standart proxy headerları + } +} +Aktif Et ve Reload: +code Bash -docker run -d \ - --name proje-adi-redis \ - --restart always \ - --network gitea \ - -v proje_adi_redis_data:/data \ - redis:7-alpine -4. Gitea Secrets Ayarları (Bağlantı) -Veritabanlarını kurduktan sonra Gitea'da Ayarlar -> Actions -> Secrets kısmına gidip aşağıdaki bilgileri ekle. - -🔑 Secret 1: DATABASE_URL -Uygulamanın veritabanını bulması için gerekli bağlantı cümlesi. - -Format: postgresql://KULLANICI:SIFRE@KONTEYNER_ADI:5432/DB_ADI?schema=public - -Örnek (Yukarıdaki kuruluma göre): postgresql://db_kullanici:cok_guclu_sifre@proje-adi-postgres:5432/proje_db_adi?schema=public - -Dikkat: localhost veya IP yerine direkt kurduğun konteyner ismini (proje-adi-postgres) yazıyoruz. Docker isimden tanır. - -🔑 Secret 2: REDIS_HOST -Uygulamanın Redis'i bulması için. - -Değer: proje-adi-redis - - -5. Sorun Giderme (Debug) -Eğer bağlantı hatası alırsan şu komutlarla kontrol et: - -Veritabanı ayakta mı? - +sudo ln -s /etc/nginx/sites-available/proje-api /etc/nginx/sites-enabled/ +sudo nginx -t && sudo systemctl reload nginx +💡 "Senior" İpuçları & Bakım +Port Yönetimi: Kullandığın portları bir yere not et: +1501: Test BE, 1502: Proje2 BE... +1800: Test UI, 1801: Proje2 UI... +Disk Temizliği: Raspberry Pi diski dolmaması için haftalık temizlik yap: +code Bash -docker ps | grep postgres -Veritabanı loglarını incele: - +docker system prune -f +Performans İzleme: RAM ve CPU durumunu kontrol et: +code Bash -docker logs --tail 50 proje-adi-postgres -Veritabanını sıfırlamak (Silip baştan kurmak) istersen: - +htop +docker stats +Log Takibi: Bir sorun olduğunda ilk buraya bak: +code Bash -# DİKKAT: TÜM VERİ SİLİNİR! -docker rm -f proje-adi-postgres -docker volume rm proje_adi_db_data \ No newline at end of file +docker logs -f KONTEYNER_ADI +Bu sistem, Raspberry Pi'nin kaynaklarını en verimli şekilde kullanacak şekilde tasarlanmıştır. 🚀 \ No newline at end of file diff --git a/mds/learned_protocols.md b/mds/learned_protocols.md new file mode 100644 index 0000000..83326e9 --- /dev/null +++ b/mds/learned_protocols.md @@ -0,0 +1,65 @@ +# Learned Protocols & Standards + +This document serves as the persistent memory of the protocols, standards, and personas learned from the `skript-be` and `skript-ui` repositories. + +## 1. Frontend Standards (skript-ui) + +### Design & Aesthetics (`frontend-design`) +- **Anti-AI Slop:** Avoid generic, cookie-cutter "AI" aesthetics (e.g., standard purple gradients, predictable layouts). +- **Boldness:** Commit to a specific aesthetic direction (Minimalist, Brutalist, Magazine, etc.). +- **Typography:** Use distinctive fonts; avoid system defaults like Arial/Inter unless intentional. +- **Micro-interactions:** Prioritize one or two high-impact animations over scattered noise. +- **Creativity:** Use noise textures, gradient meshes, asymmetry, and overlapping elements. + +### Architecture (`senior-frontend` & `nextjs-architecture-expert`) +- **Next.js App Router:** STRICT adherence to App Router patterns (layouts, error.tsx, loading.tsx). +- **Server Components (RSC):** Default to Server Components. Use Client Components ('use client') only when interactivity is required. +- **State Management:** component-first thinking; use Context/Zustand for global state, local state for UI. +- **Performance:** Aim for sub-3s load times. Use `next/image`, code splitting, and lazy loading. +- **Tailwind CSS:** Use correctly; avoid long string pollution where possible (use utils/cva). + +### Quality Assurance (`senior-qa`) +- **E2E Testing:** Critical flows must be tested. +- **Coverage:** High unit test coverage for utilities and complex logic. + +## 2. Backend Standards (skript-be) + +### Code Quality (`code-reviewer`) +- **Review:** Verify BEFORE implementing. +- **Simplicity:** No over-engineering. +- **Security:** No secrets in code. Input validation is mandatory. +- **YAGNI:** "You Aren't Gonna Need It" - don't build features "just in case". + +### Security (`security-engineer` & `api-security-audit`) +- **Zero Trust:** Verify every request. +- **OWASP:** Check against Top 10 (Injection, Broken Auth, etc.). +- **Data:** Validate all inputs using libraries (e.g., Zod, Joi). +- **Logging:** Sanitize logs (no PII/secrets). + +### Database (`database-optimizer`) +- **N+1:** Watch out for N+1 queries in loops/ORMs. +- **Indexing:** Index foreign keys and search columns. +- **Explain:** Check execution plans for complex queries. + +### General Engineering +- **TypeScript:** Strict mode enabled. No `any`. Use generics and utility types (`typescript-pro`). +- **Feedback:** "Receive Code Review" protocol – technical correctness > polite agreement. Verify suggestions before applying. + +### TypeScript Expertise (`typescript-pro`) +- **Seniority:** I write *Senior-level* code. This means focusing on maintainability, scalability, and robustness, not just "making it work". +- **Modern Techniques:** I utilize the latest TypeScript features: + - **Advanced Types:** Conditional types, Template Literal Types, Mapped Types. + - **Utility Types:** `Pick`, `Omit`, `Partial`, `Readonly`, `ReturnType`, `Parameters`, etc. + - **Generics:** Proper constraints (`T extends ...`) and defaults. + - **Type Inference:** Leveraging inference where clean, explicit typing where necessary for clarity. +- **Strictness:** + - `noImplicitAny` is law. + - Avoid `any` at all costs; use `unknown` with type narrowing/guards if dynamic typing is truly needed. + - Strict null checks always on. +- **Architecture:** Value objects, opaque types, and branded types for domain safety. + +## 3. Operational Protocols + +- **Agent Persona:** I act as the specific specialist required for the task (e.g., if debugging, I am `debugger`; if designing, I am `frontend-developer`). +- **Proactiveness:** I do not wait for permission to fix obvious bugs or improve clear performace bottlenecks if they are within scope. +- **Persistence:** These rules apply to ALL future tasks in this session.