Skip to content

tornidomaroc-web/scan-and-action

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

243 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation


Live Launch App Gemini Vision React License

Upload a receipt or invoice. Get structured data and a decision in seconds.

What it does

  1. Upload a receipt or invoice (JPEG/PNG/WebP/PDF, ≤10 MB).
  2. Extract — Gemini Vision pulls merchant, total, date, and currency, in Arabic, French, or English.
  3. Decide — built-in business rules return one of three verdicts:
Status Meaning
APPROVED Data complete, rules passed
⚠️ NEEDS_REVIEW Partial data or ambiguous fields
🚫 FLAGGED Rule violation (high amount, food expense over limit, possible duplicate)
  1. Act — review queue with a fix panel (correct amount, justify, re-evaluate), natural-language search (EN/FR/AR keywords), CSV export.

The UI is localized in English, French, and Arabic with automatic RTL switching.

Pricing: free tier (10 scans) · PRO at $9/month or $59/year via Paddle.

Stack

Layer Technology
Frontend React 18 · Vite · Tailwind CSS · react-router
Backend Express 5 · Prisma · PostgreSQL
Auth & storage Supabase (JWT auth, private file bucket)
Extraction Gemini Flash (vision, JSON mode)
Billing Paddle (webhook-driven plan upgrades)
Hosting Vercel (frontend) · Railway (backend)

Structure

apps/
  backend/    Express API — auth, upload pipeline, rule engine, search, webhook
  frontend/   React SPA — dashboard, review queue, document detail, settings

Run locally

# Backend (apps/backend)
npm install
cp ../../.env.example .env   # fill in real values
npx prisma migrate deploy
npm run dev                  # http://localhost:3001

# Frontend (apps/frontend)
npm install                  # set VITE_ vars in .env
npm run dev                  # http://localhost:5173

See .env.example for every required variable.

Built by

AboJad — Full Stack AI Engineer, Marrakesh 🇲🇦