# SmartHome Web Application A modern smart home management system built with Svelte frontend and Node.js/Express backend with MongoDB integration. ## 📁 Proje Yapısı ``` smarthome/ ├── src/ # Svelte frontend kaynak kodları ├── api/ # Node.js backend API │ ├── models/ # MongoDB veri modelleri │ ├── controllers/ # API kontrolörleri │ ├── routes/ # API route'ları │ ├── configs/ # Yapılandırma dosyaları │ └── library/ # Yardımcı kütüphaneler ├── public/ # Statik dosyalar ├── scripts/ # Build script'leri └── .env.* # Environment dosyaları ``` ## 🚀 Özellikler - **Frontend**: Svelte + Vite modern, hızlı arayüz - **Backend**: Express.js RESTful API - **Veritabanı**: MongoDB ile entegre - **Gerçek Zamanlı**: Socket.io ile real-time iletişim - **Docker Destekli**: Kolay deployment - **Responsive**: Mobil uyumlu tasarım ## 🛠️ Kurulum ### Gereksinimler - Node.js (v16 veya üzeri) - MongoDB (yönelimli) - npm veya yarn ### Adımlar 1. **Projeyi klonlayın:** ```bash git clone [repository-url] cd smarthome ``` 2. **Frontend bağımlılıkları:** ```bash npm install ``` 3. **Backend bağımlılıkları:** ```bash cd api npm install cd .. ``` 4. **Environment konfigürasyonu:** ```bash # Mevcut .env dosyalarını kopyalayın cp .env.example .env.local cp api/.env.example api/.env ``` 5. **Uygulamayı çalıştırın:** ```bash # Frontend (terminal 1) npm run dev # Backend (terminal 2) cd api npm start ``` ## 🔧 Environment Değişkenleri ### Frontend Environment Dosyaları Proje dizininde bulunan environment dosyaları: #### `.env.dev` (Geliştirme Ortamı) ```env VITE_API_URL="http://localhost:3000" ``` #### `.env.prod` (Production Ortamı) ```env VITE_API_URL="https://smarthome.wisecolt-panda.net" ``` #### `api/.env.mongo` (MongoDB Konfigürasyonu) ```env # Bu dosya boş veya MongoDB connection string içerir # Örnek: # MONGODB_URI="mongodb://localhost:27017/smarthome" # veya # MONGODB_URI="mongodb+srv://username:password@cluster.mongodb.net/smarthome" ``` ### Yeni Proje Kurulumu için Environment Şablonu Yeni bir proje kurarken şu dosyaları oluşturun: #### `.env.local` (Frontend için) ```env # API URL konfigürasyonu VITE_API_URL="http://localhost:3000" # Opsiyonel: Diğer frontend ayarları # VITE_APP_NAME="SmartHome" # VITE_APP_VERSION="1.0.0" ``` #### `api/.env` (Backend için) ```env # Port ayarları PORT=3000 # MongoDB bağlantısı MONGODB_URI="mongodb://localhost:27017/smarthome" # JWT Secret (production'da güçlü bir değer kullanın) JWT_SECRET="your-secret-key-here" # CORS ayarları CORS_ORIGIN="http://localhost:5173" # Socket.io ayarları SOCKET_CORS_ORIGIN="http://localhost:5173" ``` ## 📝 Environment Dosyalarının Listesi Proje içinde mevcut olan tüm environment dosyaları: 1. **`.env.dev`** - Geliştirme ortamı frontend konfigürasyonu 2. **`.env.prod`** - Production ortamı frontend konfigürasyonu 3. **`api/.env.mongo`** - MongoDB veritabanı bağlantı ayarları ## 🐳 Docker ile Deployment ```bash # Backend API'yi build et cd api docker build -t smarthome-api . # Docker Compose ile çalıştır docker-compose up -d ``` ## 🌐 API Endpoint'leri - `GET /api/devices` - Cihazları listele - `POST /api/devices` - Yeni cihaz ekle - `PUT /api/devices/:id` - Cihaz güncelle - `GET /api/devices/:id/logs` - Cihaz log'larını getir ## 📚 Kullanılan Teknolojiler ### Frontend - [Svelte](https://svelte.dev/) - Modern UI kütüphanesi - [Vite](https://vitejs.dev/) - Hızlı build tool - [Svelte Routing](https://github.com/EmilTholin/svelte-routing) - Client-side routing ### Backend - [Express.js](https://expressjs.com/) - Web framework - [MongoDB](https://www.mongodb.com/) - NoSQL veritabanı - [Mongoose](https://mongoosejs.com/) - MongoDB ODM - [Socket.io](https://socket.io/) - Real-time iletişim - [Helmet](https://helmetjs.github.io/) - Security middleware - [Morgan](https://github.com/expressjs/morgan) - HTTP request logger ## 🤝 Katkıda Bulunma 1. Fork yapın 2. Feature branch oluşturun (`git checkout -b feature/amazing-feature`) 3. Commit yapın (`git commit -m 'Add some amazing feature'`) 4. Push yapın (`git push origin feature/amazing-feature`) 5. Pull Request açın ## 📄 Lisans Bu proje ISC lisansı altında lisanslanmıştır.