A smart cat feeder management system that helps you create, manage, and schedule feeding for your cats through connected smart feeders.
nibbleMate is a comprehensive mobile and web application that allows you to:
- Create and manage smart feeders with different food brands
- Add cats to your household with detailed profiles
- Link cats to specific feeders for personalized feeding
- Schedule automatic feeding based on your cats' needs
- Monitor feeding history and track your cats' health
- Manually trigger feeding when needed
Start by creating a smart feeder in your account:
- Choose from a variety of food brands (Purina, Royal Canin, Science Diet, etc.)
- The system automatically generates a unique name for your feeder
- Each feeder gets a unique hardware ID for physical device connection
- Feeders can be linked to specific cats or remain unassigned
Navigation: Main Page β "Create Feeder" button
Create detailed profiles for each cat in your household:
- Basic Information: Name, breed, age, weight, length, sex
- Feeder Assignment: Link to a specific smart feeder (optional)
- Health Tracking: Monitor weight and feeding patterns over time
- Microchip Integration: Automatic microchip detection when available
Navigation: Main Page β "Add Cat" button
Connect your cats to their designated feeders:
- One-to-One Relationship: Each cat can be linked to one feeder
- Hardware ID Linking: Enter the 12-digit hardware ID from your physical feeder
- Automatic Detection: System validates hardware IDs and prevents duplicates
- Easy Management: Unlink and reassign feeders as needed
Navigation: Profile Page β "Link Feeder" section
Set up automated feeding schedules for each cat:
- Custom Schedules: Set multiple feeding times per day
- Portion Control: Specify exact calorie amounts per feeding
- Flexible Timing: Different schedules for weekdays vs weekends
- Manual Override: Trigger immediate feeding when needed
Navigation: Main Page β Select a feeder β "Schedule" button
Keep track of your cats' feeding and health:
- Feeding History: View detailed logs of all feeding events
- Health Charts: Track weight changes and feeding patterns
- Feeder Status: Monitor battery levels and connectivity
- Quick Actions: Manual feeding, schedule adjustments, and more
- User registration and login system
- Session management with automatic token refresh
- Secure API communication with your smart feeders
- Mobile Apps: iOS and Android via React Native
- Web Interface: Full-featured web application
- Responsive Design: Optimized for all screen sizes
- Support for multiple feeder brands and models
- Real-time connectivity monitoring
- Automatic feeder discovery and setup
- Hardware ID validation and management
- Detailed health and feeding information
- Breed-specific recommendations
- Weight and growth tracking
- Microchip integration support
- Multiple daily feeding times
- Custom portion sizes
- Weekend vs weekday schedules
- Manual feeding override
- Feeding history and patterns
- Health trend analysis
- Feeder performance metrics
- Export capabilities for veterinary records
- Node.js (v16 or higher)
- npm or yarn package manager
- Expo CLI (for mobile development)
- Smart feeder hardware with 12-digit hardware ID
-
Clone the repository
git clone <repository-url> cd nibbleMate
-
Install dependencies
npm install
-
Start the development server
npx expo start
-
Run on your preferred platform
- Web: Press
win the terminal or visit the provided URL - iOS Simulator: Press
iin the terminal - Android Emulator: Press
ain the terminal - Physical Device: Scan the QR code with Expo Go app
- Web: Press
NibbleMate requires a backend server for full functionality. See the /server directory for backend setup instructions.
Create a .env file in the root directory with your production settings:
# Supabase Configuration
SUPABASE_URL=your_supabase_project_url
SUPABASE_ANON_KEY=your_supabase_anon_key
# API Configuration
API_BASE_URL=your_backend_api_url# Install dependencies (if not already done)
npm install
# Build for web production
npx expo export:web
# The built files will be in the `web-build/` directory
# Deploy this directory to your web hosting service (Netlify, Vercel, etc.)For iOS:
# Build for iOS
npx expo build:ios
# Or for development builds
npx expo run:iosFor Android:
# Build for Android
npx expo build:android
# Or for development builds
npx expo run:androidInstall EAS CLI:
npm install -g @expo/eas-cliLogin to your Expo account:
eas loginConfigure EAS Build:
eas build:configureBuild for production:
# Build for iOS App Store
eas build --platform ios
# Build for Google Play Store
eas build --platform android
# Build for both platforms
eas build --platform allFor over-the-air updates (without app store submission):
# Publish update
npx expo publish
# Or with EAS
eas update --branch production --message "Bug fixes and improvements"- Netlify: Connect your GitHub repo and set build command to
npx expo export:web - Vercel: Import your project and configure for static export
- Firebase Hosting: Deploy the
web-build/directory
- iOS App Store: Use EAS Build to generate
.ipafiles - Google Play Store: Use EAS Build to generate
.aabfiles - TestFlight/Internal Testing: Use EAS Build with appropriate profiles
- Development: Uses local backend and development Supabase project
- Production: Uses production backend and production Supabase project
Update app.json for production:
{
"expo": {
"name": "NibbleMate",
"slug": "nibblemate",
"version": "1.0.0",
"platforms": ["ios", "android", "web"],
"ios": {
"bundleIdentifier": "com.yourcompany.nibblemate"
},
"android": {
"package": "com.yourcompany.nibblemate"
}
}
}nibbleMate/
βββ app/ # Main application code
β βββ (auth)/ # Authentication screens
β βββ (home)/ # Home and navigation
β βββ screens/ # Main application screens
β β βββ MainPage.tsx # Dashboard with feeders
β β βββ CreateFeeder.tsx
β β βββ CreateCatPage.tsx
β β βββ ProfilePage.tsx
β β βββ Scheduler.tsx
β β βββ ...
β βββ components/ # Reusable UI components
β βββ utils/ # Utilities and API hooks
βββ assets/ # Images, fonts, and static files
βββ server/ # Backend API server
- Frontend: React Native with Expo
- Backend: FastAPI (Python)
- Database: Supabase (PostgreSQL)
- Authentication: Supabase Auth
- Real-time: WebSocket connections
- Deployment: Cross-platform (iOS, Android, Web)
- Fork the repository
- Create a feature branch (
git checkout -b feature/amazing-feature) - Commit your changes (
git commit -m 'Add amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
This project is licensed under the MIT License - see the LICENSE file for details.
For support and questions:
- Check the documentation in the
/serverdirectory - Review the DEBUG.md file for troubleshooting
- Open an issue on GitHub
NibbleMate - Making cat care smarter, one feeding at a time! π±β€οΈ