Aplikasi IoT Device Management untuk Sistem Pemberi Pakan Otomatis
Features • Tech Stack • Getting Started • Project Structure • Documentation
QR Device Manager adalah aplikasi mobile React Native untuk monitoring dan kontrol perangkat IoT, khususnya sistem automatic feeder untuk aquarium, pet feeder, atau peternakan.
- 📷 Scan QR Code untuk claim/register perangkat baru
- 📋 List Devices dengan info real-time (status, baterai, feed level)
- 🔄 Share Device ke user lain (collaborative ownership)
- 🗑️ Delete Device dari akun
- ⚡ Power On/Off - Kontrol nyala/mati perangkat
- 🍽️ Motor Pakan - Set durasi pemberian pakan otomatis
- 📊 Monitor Feed Level - Cek sisa pakan (%)
- 📡 WiFi Configuration - Set SSID & password perangkat
- 🗺️ Maps View - Lokasi perangkat dengan Google Maps/MapLibre
- 🌤️ Weather Integration - Cuaca real-time berdasarkan lokasi
- 📈 Telemetry Charts - Grafik baterai & tegangan
- 📜 Activity Logs - History lengkap dengan telemetry data
- 📊 Dashboard - Statistik perangkat (active, offline, error)
- 🔐 Authentication (Login, Register, Forgot Password)
- 👤 Profile Management
- 🔔 Push Notifications
- ⚙️ Settings
- ⚛️ React Native 0.82 - Cross-platform mobile framework
- 📘 TypeScript 5.8 - Type-safe development
- 🧭 React Navigation 7 - Navigation solution
- 🔌 Axios - HTTP client untuk REST API
- 🔐 JWT Authentication - Token-based auth
- 📡 MQTT - Real-time IoT communication (optional)
- 🎨 React Native Paper 5 - Material Design components
- 📊 React Native Chart Kit - Data visualization
- 🎬 Lottie - Smooth animations
- 🎭 React Native Modal - Beautiful modals
- 🔔 Toast Message - User notifications
- 📷 React Native Vision Camera 4 - QR code scanning
- 🗺️ MapLibre / React Native Maps - Interactive maps
- 📍 Geolocation - Location tracking
- 🖼️ Image Picker - Photo selection
- 🔐 Permissions - Runtime permissions handler
- 🎯 ESLint - Code linting
- 💅 Prettier - Code formatting
- 🧪 Jest - Unit testing
- 🔥 Hot Reloading - Fast development
Pastikan Anda sudah install:
- ✅ Node.js >= 20
- ✅ React Native CLI
- ✅ Android Studio (untuk Android)
- ✅ Xcode (untuk iOS, Mac only)
git clone <repository-url>
cd QRDeviceManagerMobilenpm install# Copy template environment
cp .env.example .envEdit file .env dan isi konfigurasi Anda:
API_URL=http://your-api-server:8085/api/v1📖 Detailed Guide: Lihat SETUP_ENV.md untuk panduan lengkap
cd ios
bundle install # Install Ruby dependencies
bundle exec pod install # Install CocoaPods
cd ..npm startBuka terminal baru dan jalankan:
npm run androidnpm run ios# Debug build (default)
npm run android
# Release build
npm run android:releaseQRDeviceManagerMobile/
├── src/
│ ├── app/ # App initialization & providers
│ │ ├── navigation/ # Navigation configuration
│ │ └── providers/ # Context providers (Auth, Theme, etc)
│ ├── features/ # Feature-based modules
│ │ ├── auth/ # Authentication (Login, Register)
│ │ ├── dashboard/ # Dashboard & statistics
│ │ ├── devices/ # Device management
│ │ ├── notifications/ # Notifications
│ │ ├── profile/ # User profile & settings
│ │ └── qr/ # QR scanner
│ ├── services/ # API & business logic
│ │ ├── api.ts # Axios configuration
│ │ ├── route_api.ts # API endpoints
│ │ └── repositories/ # Data repositories
│ ├── shared/ # Shared resources
│ │ ├── components/ # Reusable components
│ │ ├── constants/ # Constants & config
│ │ ├── lib/ # Utilities & helpers
│ │ ├── styles/ # Themes & styling
│ │ └── types/ # TypeScript types
│ └── assets/ # Images, fonts, animations
├── android/ # Android native code
├── ios/ # iOS native code
└── ...
| File | Purpose |
|---|---|
.env |
Environment variables (API URL, keys) - NOT in Git |
.env.example |
Template untuk .env |
babel.config.js |
Babel configuration + dotenv plugin |
metro.config.js |
Metro bundler configuration |
tsconfig.json |
TypeScript configuration |
react-native.config.js |
React Native CLI config |
- 📖 SETUP_ENV.md - Environment variables setup guide
- 🔄 CHANGELOG_ENV_SECURITY.md - Security updates & migration
- 🚀 QUICKSTART_AFTER_PULL.md - Quick setup after git pull
- 🗺️ MAPLIBRE_SETUP.md - MapLibre integration guide
- 🗺️ GOOGLE_MAPS_SETUP.md - Google Maps setup
# Run tests
npm test
# Run tests with coverage
npm test -- --coverage
# Run linter
npm run lint# Build APK (debug)
cd android
./gradlew assembleDebug
# Build APK (release)
./gradlew assembleRelease
# Build AAB (for Play Store)
./gradlew bundleReleaseOutput: android/app/build/outputs/
# Open in Xcode
open ios/QRDeviceManagerMobile.xcworkspace
# Then: Product > Archive# Clear cache and restart
npm start -- --reset-cachecd android
./gradlew clean
cd ..
npm run androidcd ios
bundle exec pod install --repo-update
cd ..
npm run ios# Make sure .env file exists
ls -la .env
# Restart Metro with cache clear
npm start -- --reset-cache
# Rebuild app
npm run android📖 More Help: See SETUP_ENV.md for detailed troubleshooting
Contributions are welcome! Please follow these steps:
- Fork the repository
- Create a feature branch (
git checkout -b feature/AmazingFeature) - Commit your changes (
git commit -m 'Add some AmazingFeature') - Push to the branch (
git push origin feature/AmazingFeature) - Open a Pull Request
- Follow TypeScript best practices
- Use ESLint & Prettier for formatting
- Write meaningful commit messages
- Add comments for complex logic
This project is licensed under the MIT License - see the LICENSE file for details.
Developed with ❤️ by the QR Device Manager Team
- React Native - Amazing framework
- React Navigation - Navigation solution
- React Native Paper - UI components
- MapLibre - Open-source maps
- All open-source contributors
- 📧 Email: support@qrdevicemanager.com
- 🐛 Issues: GitHub Issues
- 💬 Discussions: GitHub Discussions
⭐ Star this repo if you find it helpful!
Made with ❤️ using React Native