Skip to content

A production-ready full-stack e-commerce solution featuring a high-performance cross-platform mobile app (iOS/Android), a web-based admin dashboard, and a robust Node.js backend. Implements secure payment processing with Stripe, unified authentication with Clerk, background jobs with Inngest, and Sentry monitoring.

Notifications You must be signed in to change notification settings

codersjj/expo-ecommerce

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

95 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

✨ Full-Stack E-Commerce App (Mobile + Admin + API) ✨

Demo App

Highlights:

  • 📱 Fully Functional E-Commerce Mobile App (React Native + Expo)
  • 🔐 Secure Authentication with Clerk (Google & Apple sign-in)
  • 🛒 Cart, Favorites, Checkout & Orders Flow
  • 💳 Stripe-Powered Payments
  • 🗺️ Addresses System
  • 🏪 Admin Dashboard — Products, Orders, Customers & Stats
  • ⚙️ Complete REST API (Node.js + Express) with Auth & Roles
  • 🛂 Admin-Only Protected Routes
  • 📦 Background Jobs with Inngest
  • 🧭 Dashboard with Live Analytics
  • 🛠️ Product Management (CRUD, image handling, pricing, etc.)
  • 📦 Order Management
  • 👥 Customer Management Page
  • 🛡️ Sentry Integration for monitoring & error tracking
  • 🚀 Deployment on Sevalla (API + Admin Dashboard)
  • 🖼️ Product Image Slider
  • ⚡ Data Fetching & Caching with TanStack Query
  • 🧰 End-to-End Git & GitHub Workflow (branches, commits, PRs, code reviews)
  • 🤖 CodeRabbit PR Analysis (security, quality, optimization)

🧪 .env Setup

🟦 Backend (/backend)

NODE_ENV=development
PORT=3000

DB_URL=<YOUR_DB_URL>

CLERK_PUBLISHABLE_KEY=<YOUR_CLERK_PUBLISHABLE_KEY>
CLERK_SECRET_KEY=<YOUR_CLERK_SECRET_KEY>

INNGEST_SIGNING_KEY=<YOUR_INNGEST_SIGNING_KEY>

CLOUDINARY_API_KEY=<YOUR_CLOUDINARY_API_KEY>
CLOUDINARY_API_SECRET=<YOUR_CLOUDINARY_API_SECRET>
CLOUDINARY_CLOUD_NAME=<YOUR_CLOUDINARY_CLOUD_NAME>

ADMIN_EMAIL=<YOUR_ADMIN_EMAIL>

CLIENT_URL=http://localhost:5173

STRIPE_PUBLISHABLE_KEY=<YOUR_STRIPE_PUBLISHABLE_KEY>
STRIPE_SECRET_KEY=<YOUR_STRIPE_SECRET_KEY>

STRIPE_WEBHOOK_SECRET=<YOUR_STRIPE_WEBHOOK_SECRET>

🟩 Admin Dashboard (/admin)

VITE_CLERK_PUBLISHABLE_KEY=<YOUR_CLERK_PUBLISHABLE_KEY>
VITE_API_URL=http://localhost:3000/api

VITE_SENTRY_DSN=<YOUR_SENTRY_DSN>

🟧 Mobile App (/mobile)

EXPO_PUBLIC_CLERK_PUBLISHABLE_KEY= <YOUR_CLERK_PUBLISHABLE_KEY>

SENTRY_AUTH_TOKEN=<YOUR_SENTRY_DSN>

EXPO_PUBLIC_STRIPE_PUBLISHABLE_KEY=<YOUR_STRIPE_PUBLISHABLE_KEY>

🔧 Run the Backend

cd backend
npm install
npm run dev

🔧 Run the Admin

bash
cd admin
npm install
npm run dev

🔧 Run the Mobile

bash
cd mobile
npm install
npx expo start
*And then scan the QR Code from your phone*

localhost will work in simulator:

const API_URL = "http://localhost:3000/api";

if it doesn't work on Android emulator, try using ADB Reverse Port Forwarding:

Action: Open your terminal or command prompt and run the following command:

adb reverse tcp:<port_on_emulator> tcp:<port_on_host>

for example, if your API runs on port 3000, you would run:

adb reverse tcp:3000 tcp:3000

About

A production-ready full-stack e-commerce solution featuring a high-performance cross-platform mobile app (iOS/Android), a web-based admin dashboard, and a robust Node.js backend. Implements secure payment processing with Stripe, unified authentication with Clerk, background jobs with Inngest, and Sentry monitoring.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published