Skip to content

yairabf/KithchenHub

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

624 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

Kitchen Hub 🏠

A full-stack household management application for shopping lists, recipes, and chores

iOS Android Web TypeScript NestJS Expo

What is Kitchen Hub?

Kitchen Hub is a comprehensive full-stack application for household management. It consists of:

  • Mobile App: React Native/Expo cross-platform mobile application (iOS, Android, Web)
  • Backend API: NestJS REST API with PostgreSQL database

The app helps families organize shopping lists with a comprehensive 111-item grocery catalog, discover and create recipes, track chores, and get a unified dashboard viewβ€”all with support for Google sign-in or guest mode, and intelligent offline capabilities with mock data seeding for development.

Screenshots

Dashboard Shopping Lists Recipes

Features

Core Features

  • πŸ›’ Shopping Lists - Multi-list management with comprehensive grocery catalog, smart search, category browsing with images, and frequently added items
  • 🍳 Recipes - Discover, create, and organize recipes with ingredient-to-shopping list integration, step tracking, and category filtering
  • βœ… Chores - Task tracking with animated progress visualization, assignee management, and due date tracking
  • 🏠 Dashboard - Quick overview with time-based personalized greeting, action widgets, and household statistics
  • πŸ‘€ Authentication - Email/password registration and login with email verification, Google sign-in with OAuth, and guest mode for local-only usage with data import/export
  • βš™οΈ Settings - Profile management, household member management, notification preferences, and app configuration

Advanced Features

  • πŸ”„ Offline Support - Intelligent fallback strategy: API β†’ Cache β†’ Mock data for seamless offline experience
  • πŸ‘₯ Multi-User - Household management with member invitations and shared data synchronization
  • πŸ“¦ Public Grocery Catalog - Centralized catalog service with 111+ categorized items, automatic category image assignment, and smart caching
  • 🎨 Category Images - Visual category browsing with automatic image assignment from grocery items and graceful fallback rendering
  • πŸ§ͺ Mock Data Mode - Development mode with automatic seeding of mock shopping lists, recipes, and grocery catalog when storage is empty
  • πŸ”„ Real-time Sync - Automatic data synchronization for signed-in users with conflict resolution
  • πŸ“± Responsive Design - Optimized layouts for phones and tablets with adaptive UI components

Project Structure

Kitchen Hub is organized as a monorepo with two main applications:

kitchen-hub/
β”œβ”€β”€ mobile/              # React Native/Expo mobile application
β”‚   β”œβ”€β”€ src/            # Mobile app source code
β”‚   β”œβ”€β”€ app.json        # Expo configuration
β”‚   └── package.json    # Mobile dependencies
β”œβ”€β”€ backend/             # NestJS REST API
β”‚   β”œβ”€β”€ src/            # Backend source code
β”‚   └── package.json    # Backend dependencies
β”œβ”€β”€ docs/                # Documentation
β”‚   β”œβ”€β”€ features/       # Feature documentation
β”‚   β”œβ”€β”€ guides/         # How-to and configuration guides
β”‚   β”œβ”€β”€ architecture/   # Architecture docs
β”‚   └── screenshots/    # App screenshots
β”œβ”€β”€ .cursor/            # Cursor IDE configuration
β”œβ”€β”€ version.json        # Product version (bump only for store releases; OTA does not change it)
β”œβ”€β”€ README.md           # This file
β”œβ”€β”€ README-DETAILED.md  # Comprehensive documentation
└── CLAUDE.md          # AI assistant guidance

Product version: The canonical app version lives in version.json at the repo root. Bump it only when cutting a store release; over-the-air (OTA) updates do not change this version. The mobile app reads it via app.config.js.

Tech Stack

Mobile App

  • Framework: React Native 0.81.5 with Expo SDK 54
  • Language: TypeScript (strict mode)
  • Navigation: React Navigation (tabs, native stack)
  • State Management: React Context, AsyncStorage
  • UI: React Native Paper, Expo Vector Icons
  • Animation: React Native Reanimated, Gesture Handler
  • Backend Integration: Supabase client

Backend API

  • Framework: NestJS 10.0.0 with Fastify adapter
  • Language: TypeScript 5.1.3
  • Database: PostgreSQL with Prisma ORM
  • Authentication: JWT with email/password authentication (with email verification) and Google OAuth (Supabase)
  • Documentation: Swagger/OpenAPI
  • Infrastructure: Supabase (Auth, Storage, RLS)

Quick Start

Prerequisites

  • Node.js: Version 18 or higher
  • npm: Package manager
  • PostgreSQL: Database (or use Supabase)
  • Expo CLI: npm install -g expo-cli (for mobile development)

Mobile App

# Navigate to mobile directory
cd mobile

# Install dependencies
npm install

# Set up environment variables (optional)
# Create .env file with:
# EXPO_PUBLIC_SUPABASE_URL=your-supabase-url
# EXPO_PUBLIC_SUPABASE_ANON_KEY=your-anon-key
# EXPO_PUBLIC_USE_MOCK_DATA=true  # Enable mock data mode for development

# Start development server
npm start

# Run on specific platform
npm run ios       # iOS simulator
npm run android   # Android emulator
npm run web       # Web browser

# Run tests
npm test

Mock Data Mode: Set EXPO_PUBLIC_USE_MOCK_DATA=true in .env to enable mock data mode. This will:

  • Use local mock grocery catalog instead of API calls
  • Automatically seed mock shopping lists and recipes when storage is empty
  • Skip API calls for faster development

Note: Restart the development server after changing environment variables for changes to take effect.

See Mobile README for detailed mobile app documentation.

Backend API

# Navigate to backend directory
cd backend

# Install dependencies
npm install

# Set up environment variables
cp .env.example .env
# Edit .env with your configuration

# Generate Prisma client
npm run prisma:generate

# Run database migrations
npm run prisma:migrate

# Start development server
npm run start:dev

The API will be available at:

  • API: http://localhost:3000/api/v1
  • Swagger Docs: http://localhost:3000/api/docs

See Backend README for detailed backend documentation.

Architecture Overview

Mobile App Architecture

The mobile app follows a feature-based architecture:

  • Features: Self-contained modules (shopping, recipes, chores, auth, dashboard, settings)
  • Common: Shared components, hooks, utilities, and repositories
  • Navigation: Tab-based navigation with conditional auth flow
  • State Management: React Context for global state, local state for features
  • Data Persistence: AsyncStorage with cache-aware repositories
  • Offline Support: Intelligent fallback strategy (API β†’ Cache β†’ Mock) with local caching and sync queue
  • Catalog Service: Centralized grocery catalog with automatic category building, image assignment, and fallback rendering
  • Mock Data Seeding: Automatic seeding of mock data in development mode when storage is empty

Backend API Architecture

The backend follows NestJS module-based architecture:

  • Modules: Feature modules mirroring mobile features (auth, households, shopping, recipes, chores, dashboard, import)
  • Common: Shared guards, interceptors, filters, decorators, and utilities
  • Infrastructure: Database (Prisma), Supabase integration, caching
  • Security: JWT authentication, Row Level Security (RLS), guest mode protection
  • Data Patterns: Soft deletes, automatic timestamps, master grocery catalog

Data Flow

Mobile App (React Native)
    ↓
API Client (Supabase)
    ↓
Backend API (NestJS)
    ↓
Database (PostgreSQL via Prisma)

Documentation

Development

Mobile Development

See Mobile README for:

  • Feature-based structure rules
  • Component organization
  • Import path conventions
  • Theme system usage
  • Testing guidelines

Backend Development

See Backend README for:

  • Module structure patterns
  • Database patterns (soft-delete, timestamps)
  • API endpoint conventions
  • Testing guidelines
  • Security patterns

Code Organization

Both mobile and backend follow consistent patterns:

  • Feature-based organization: Related code grouped by feature
  • TypeScript strict mode: Maximum type safety
  • Comprehensive testing: Unit tests with parameterized test cases
  • Documentation: Inline documentation and README files

Contributing

This is a private repository. For development guidelines, see:

License

Private repository - All rights reserved.


Built with ❀️ using React Native, Expo, NestJS, and PostgreSQL

About

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors 4

  •  
  •  
  •  
  •  

Languages