{"id":29542455,"url":"https://github.com/elfctn/mini-crm","last_synced_at":"2026-04-11T12:37:33.037Z","repository":{"id":303815704,"uuid":"1016631291","full_name":"elfctn/mini-crm","owner":"elfctn","description":"A modern Mini CRM built with Next.js 14 and TypeScript for small businesses. Features JWT authentication, customer CRUD operations with tags, note management, and search/filtering, profile update. Uses MongoDB Atlas and TailwindCSS - ready to deploy on Vercel.","archived":false,"fork":false,"pushed_at":"2025-07-10T14:50:34.000Z","size":1816,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-04-11T12:37:15.849Z","etag":null,"topics":["api","context-api","crm-platform","crud","fullstack","jest","jwt","mongodb-atlas","mongoose","next-auth","nextjs14","postman-collection","react18","reacttestinglibrary","supertest","tailwindcss","typescript"],"latest_commit_sha":null,"homepage":"https://mini-crm-elfctns-projects.vercel.app/","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/elfctn.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-07-09T09:44:13.000Z","updated_at":"2025-07-10T14:50:37.000Z","dependencies_parsed_at":"2025-07-09T15:46:11.685Z","dependency_job_id":"333f31c8-78da-4b0a-a812-bffdb1ef4755","html_url":"https://github.com/elfctn/mini-crm","commit_stats":null,"previous_names":["elfctn/mini-crm"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/elfctn/mini-crm","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/elfctn%2Fmini-crm","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/elfctn%2Fmini-crm/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/elfctn%2Fmini-crm/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/elfctn%2Fmini-crm/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/elfctn","download_url":"https://codeload.github.com/elfctn/mini-crm/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/elfctn%2Fmini-crm/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31681201,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-11T08:18:19.405Z","status":"ssl_error","status_checked_at":"2026-04-11T08:17:08.892Z","response_time":54,"last_error":"SSL_read: 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":["api","context-api","crm-platform","crud","fullstack","jest","jwt","mongodb-atlas","mongoose","next-auth","nextjs14","postman-collection","react18","reacttestinglibrary","supertest","tailwindcss","typescript"],"created_at":"2025-07-17T11:02:37.894Z","updated_at":"2026-04-11T12:37:33.007Z","avatar_url":"https://github.com/elfctn.png","language":"TypeScript","readme":"# Mini CRM - Müşteri Takip Uygulaması\n\n## 🌐 Canlı Demo\n\n[mini-crm-elfctns-projects.vercel.app](https://mini-crm-elfctns-projects.vercel.app/)\n\nKüçük işletmeler için basit ve etkili müşteri takip sistemi. Next.js 14, MongoDB Atlas, Mongoose, JWT authentication, Cloudinary ve TailwindCSS ile geliştirilmiştir.\n\n## 🚀 Özellikler\n\n- **Kullanıcı Yönetimi**: JWT tabanlı güvenli authentication\n- **Profil Yönetimi**: Kullanıcı bilgilerini güncelleme ve şifre değiştirme\n- **Profil Fotoğrafı**: Cloudinary ile avatar yükleme ve yönetimi\n- **Müşteri Yönetimi**: Tam CRUD operasyonları (Ekleme, Okuma, Güncelleme, Silme)\n- **Not Sistemi**: Müşteriler için not ekleme ve yönetimi\n- **Arama ve Filtreleme**: Müşteri arama ve etiket bazlı filtreleme\n- **Responsive Tasarım**: Mobil uyumlu modern arayüz\n- **Canlı Ortam Desteği**: Production-ready yapılandırma\n\n## 🛠️ Teknolojiler\n\n- **Frontend**: Next.js 14, React 18, TypeScript\n- **Styling**: TailwindCSS\n- **Backend**: Next.js API Routes\n- **Veritabanı**: MongoDB Atlas, Mongoose\n- **Authentication**: JWT (JSON Web Tokens)\n- **Password Hashing**: bcryptjs\n- **File Upload**: Cloudinary\n- **Deployment**: Vercel (önerilen)\n\n## 📋 Gereksinimler\n\n- Node.js 18+ \n- npm veya yarn\n\n## 🚀 Kurulum\n\n### 1. Projeyi Klonlayın\n\n```bash\ngit clone \u003crepository-url\u003e\ncd mini-crm\n```\n\n### 2. Bağımlılıkları Yükleyin\n\n```bash\nnpm install\n```\n\n### 3. Environment Variables Ayarlayın\n\n`.env.local` dosyası oluşturun:\n\n```bash\ncp env.example .env.local\n```\n\n`.env.local` dosyasını düzenleyin:\n\n```env\n# jwt secret - canlı ortamda mutlaka değiştirin!\nJWT_SECRET=your-super-secret-jwt-key-here-change-this-in-production\n\n# mongodb atlas connection string\nMONGODB_URI=mongodb+srv://username:password@cluster.mongodb.net/mini-crm?retryWrites=true\u0026w=majority\n\n# cloudinary configuration\nCLOUDINARY_CLOUD_NAME=your-cloud-name\nCLOUDINARY_API_KEY=your-api-key\nCLOUDINARY_API_SECRET=your-api-secret\n\n# development settings\nNODE_ENV=development\n```\n\n#### Cloudinary Hesabı Oluşturma\n\n1. [cloudinary.com](https://cloudinary.com) adresine gidin\n2. Ücretsiz hesap oluşturun\n3. Dashboard'dan bilgileri alın:\n   - **Cloud Name**\n   - **API Key**\n   - **API Secret**\n4. Bu bilgileri `.env.local` dosyasına ekleyin\n\n### 4. Veritabanını Başlatın\n\n```bash\nnpm run seed\n```\n\n### 5. Geliştirme Sunucusunu Başlatın\n\n```bash\nnpm run dev\n```\n\nUygulama [http://localhost:3000](http://localhost:3000) adresinde çalışacaktır.\n\n## 🔐 Demo Hesap\n\nUygulama ilk çalıştırıldığında otomatik olarak demo hesap oluşturulur:\n\n- **Email**: `admin@minicrm.com`\n- **Şifre**: `admin123`\n\nBu hesap ile sistemi test edebilirsiniz.\n\n## 🧪 Test\n\n### Test Çalıştırma\n\n```bash\nnpm test\n```\n\n### Test Kategorileri\n\n- **`src/__tests__/auth.test.ts`** - Kimlik doğrulama testleri\n  - Kullanıcı kayıt işlemleri\n  - Giriş işlemleri\n  - JWT token doğrulama\n  - Şifre hashleme testleri\n\n- **`src/__tests__/customers.test.ts`** - Müşteri CRUD testleri\n  - Müşteri ekleme işlemleri\n  - Müşteri güncelleme işlemleri\n  - Müşteri silme işlemleri\n  - Müşteri listeleme işlemleri\n  - Arama ve filtreleme testleri\n\n- **`src/__tests__/notes.test.ts`** - Not CRUD testleri\n  - Not ekleme işlemleri\n  - Not güncelleme işlemleri\n  - Not silme işlemleri\n  - Müşteri bazlı not listeleme\n  - Tüm notları listeleme\n\n- **`src/__tests__/components.test.tsx`** - React bileşen testleri\n  - AuthProvider render testleri\n  - Component wrapper testleri\n  - Next.js router mock testleri\n\n## 📄 Dokümantasyon\n\n### API Testleri (Postman)\n\nPostman collection'ı kullanarak API'leri manuel olarak test edebilirsiniz:\n\n#### Kurulum\n\n1. **Postman Collection Import**\n   - `MiniCRM.postman_collection.json` dosyasını Postman'e import edin\n   - Collection'da tüm endpointler ve örnek veriler hazır\n\n2. **Environment Variables Ayarlayın**\n   ```\n   base_url: http://localhost:3000\n   token: (login endpoint'inden alınan JWT token)\n   customerId: (müşteri ekledikten sonra dönen ObjectId)\n   noteId: (not ekledikten sonra dönen ObjectId)\n   ```\n\n3. **Test Sırası**\n   - Önce `authentication/kullanıcı girişi` endpoint'ini çalıştırın\n   - Dönen token'ı environment variable'a kaydedin\n   - Diğer endpointleri test edin\n\n#### Endpoint Kategorileri\n\n- **Authentication**: Register, Login\n- **Customers**: CRUD işlemleri, Arama, Filtreleme\n- **Notes**: CRUD işlemleri, Müşteri bazlı listeleme\n\n### Manuel Test Senaryoları\n\n1. **Authentication Test**\n   - Login/Register işlemleri\n   - Token expiration kontrolü\n   - Protected route access\n\n2. **CRUD Testleri**\n   - Müşteri ekleme/düzenleme/silme\n   - Not ekleme/düzenleme/silme\n   - Arama ve filtreleme\n\n3. **Canlı Ortam Testleri**\n   - Production deployment kontrolü\n   - Database persistence\n   - Environment variable kontrolü\n\n## 📁 Proje Yapısı\n\n```\nmini-crm/\n├── src/\n│   ├── app/\n│   │   ├── api/           # API routes\n│   │   │   ├── auth/      # Authentication endpoints\n│   │   │   ├── customers/ # Customer CRUD endpoints\n│   │   │   └── notes/     # Note CRUD endpoints\n│   │   ├── customers/     # Customer pages\n│   │   ├── notes/         # Notes page\n│   │   ├── login/         # Login page\n│   │   └── register/      # Register page\n│   ├── lib/               # Utility functions\n│   │   ├── auth.ts        # Authentication helpers\n│   │   ├── jwt.ts         # JWT utilities\n│   │   ├── mongodb.ts     # MongoDB connection\n│   │   ├── models/        # Mongoose modelleri\n│   │   └── seed-mongodb.ts# MongoDB seed script\n│   ├── providers/         # React context providers\n│   │   └── AuthProvider.tsx\n│   ├── types/             # TypeScript type definitions\n│   └── __tests__/         # Test dosyaları\n│       ├── auth.test.ts   # Authentication testleri\n│       ├── customers.test.ts # Customer CRUD testleri\n│       ├── notes.test.ts  # Note CRUD testleri\n│       └── components.test.tsx # React bileşen testleri\n├── public/                # Static assets\n├── .env.example           # Environment variables template\n├── jest.config.js         # Jest configuration\n├── next.config.js         # Next.js configuration\n├── package.json           # Dependencies and scripts\n├── README.md              # Project documentation\n├── tailwind.config.js     # TailwindCSS configuration\n└── tsconfig.json          # TypeScript configuration\n```\n\n## 🚀 Deployment\n\n### Vercel (Önerilen)\n\n1. [Vercel](https://vercel.com) hesabı oluşturun\n2. GitHub repository'nizi bağlayın\n3. Environment variables'ları ayarlayın:\n   - `JWT_SECRET`\n   - `MONGODB_URI`\n   - `CLOUDINARY_CLOUD_NAME`\n   - `CLOUDINARY_API_KEY`\n   - `CLOUDINARY_API_SECRET`\n4. Deploy edin!\n\n### Diğer Platformlar\n\n- **Netlify**: Static export ile\n- **Railway**: Full-stack deployment\n- **Heroku**: Container deployment\n\n## 🤝 Katkıda Bulunma\n\n1. Fork yapın\n2. Feature branch oluşturun (`git checkout -b feature/amazing-feature`)\n3. Commit yapın (`git commit -m 'feat: add amazing feature'`)\n4. Push yapın (`git push origin feature/amazing-feature`)\n5. Pull Request oluşturun\n\n## 👨‍💻 Geliştirici\n\n**Elif Çetin** - [@elfctn](https://github.com/elfctn)\n\n---\n\n**Not**: Bu proje eğitim amaçlı geliştirilmiştir. Production kullanımı için güvenlik önlemlerini artırmanız önerilir.\n\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Felfctn%2Fmini-crm","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Felfctn%2Fmini-crm","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Felfctn%2Fmini-crm/lists"}