Upkeep is a premium personal asset management app designed to help homeowners track their appliances, manage warranties, and stay on top of maintenance schedules. Built with a focus on design and user experience, it replaces the chaos of paper receipts with a sleek, digital inventory.
- Digital Inventory: specific tracking for ACs, Refrigerators, Washing Machines, and more.
- Detailed Records: Store brand, model, purchase price, location, and purchase dates.
- Visual Cards: Beautiful UI cards for each appliance with status indicators.
- Expiration Tracking: Automatically calculates warranty status.
- Visual Alerts: Color-coded badges (Green for active, Orange for expiring soon) help you prioritize.
- Coverage Details: Keep track of what's covered.
- Service Schedules: Custom reminders for regular maintenance (e.g., "Change Filter every 6 months").
- Overdue Alerts: distinct tracking for "Warranty" vs "Service" needs.
- Push Notifications: (Coming Soon) Get notified when service is due.
- Financial Dashboard: Track total asset value.
- Health Score: Monitor the overall maintenance status of your home.
- Expense Tracking: Log service costs and purchase prices.
- Framework: React Native (v0.76+) via Expo SDK 52
- Routing: Expo Router (File-based routing)
- Backend / DB: Supabase (PostgreSQL)
- Styling:
StyleSheetwith a custom Design System (ThemedText, ThemedView) - Animations:
react-native-reanimated - Storage:
AsyncStorage(Local preferences) + Supabase (Cloud data)
Upkeep/
├── app/ # Expo Router screens
│ ├── (tabs)/ # Main App Tabs (Index, Appliances, Reminders, Profile)
│ ├── auth/ # Login/Register flows
│ ├── appliance/ # Appliance details & add/edit forms
│ └── ...
├── components/ # Reusable UI components (ApplianceCard, etc.)
├── context/ # Global State (ApplianceContext, AuthContext)
├── constants/ # Configuration & Static Data (Categories, Colors)
├── hooks/ # Custom React Hooks
├── lib/ # External services (Supabase client)
└── supabase/ # Database schema and migrationsContributions are welcome! Please fork the repo and submit a PR.