Grocify is a full-stack, cross-platform mobile application designed to simplify grocery shopping and meal planning. Built on top of React Native and Expo, the app delivers an optimized mobile interface backed by a modern, type-safe cloud data layer.
- User Authentication: Secure sign-in and session management powered by Clerk Architecture.
- Global State Architecture: Clean, predictable data rendering managed through Redux Toolkit.
- Relational Database: Real-time grocery management powered by a serverless Neon PostgreSQL backend.
- Type-Safe ORM: High-performance database operations executed through Drizzle ORM with local schema migrations.
- File-Based Routing: Seamless mobile layout transitions via Expo Router navigation stacks.
- Serverless API Endpoints: Integrated full-stack API request handlers routing data securely down to database schemas.
Grocify/
├── src/
│ ├── app/ # Expo Router pages, tabs, and Serverless API routes (+api.ts)
│ ├── components/ # Reusable presentation layout UI blocks
│ ├── lib/
│ │ └── server/
│ │ └── db/ # Drizzle ORM configuration and database schema files
│ ├── store/ # Redux/Zustand global data states (grocery-store.ts)
│ └── styles/ # Unified design system and layout stylesheets
├── scripts/ # Custom database seed engines (seed-grocery.cjs)
├── drizzle.config.ts # Drizzle migration and connection orchestrator
├── eas.json # Expo Application Services configuration profiles
└── tsconfig.json # Strict type-checking rules configuration
- Frontend Framework: React Native (Expo SDK 57)
- Language Layer: TypeScript (Strict compiler validation)
- Database Driver:
@neondatabase/serverless(PostgreSQL) - Object Relational Mapper: Drizzle ORM / Drizzle-Kit
- State Operations: Redux Toolkit / Client Side Store Handlers
Follow these steps to run the development environment locally:
git clone https://github.com
cd Grocifynpm installCreate a .env file in your root folder and map out your development keys:
DATABASE_URL=your_neon_postgres_string
EXPO_PUBLIC_CLERK_PUBLISHABLE_KEY=your_clerk_keySync your tables with Neon and seed the database using Drizzle-Kit and cross-env:
npx drizzle-kit push
npx cross-env DATABASE_URL="YOUR_NEON_STRING" node ./scripts/seed-grocery.cjsLaunch the Metro Bundler on your machine:
npx expo startPress a to run on an Android device emulator, or use the Expo Go app to test over your local network connection.
This project is open-source and available under the MIT License.