Logo Lanfrica

ajekiigbenathanael-dot/PricePilot

Domain:

socioeconomic

Record type:

software
Creator:
aje
Host:
A price comparison app for Nigerian e-commerce platforms Jumia, Konga, Slot, PayPorte, Temu # PricePilot > Compare prices. Shop smarter. A calm, trustworthy price-comparison platform for students — find the best price on everything students buy — electronics, textbooks, backpacks, dorm gear, wearables and more — across stores, and get alerted when prices drop. Built to feel like the love-child of a clean banking app and a well-designed shopping app: airy, card-based, mobile-first, with color used **functionally** (green = savings, amber = price up, red = destructive only) so the numbers do the talking. ## Tech stack | Layer | Choice | | --- | --- | | Frontend | React 18 + Vite + TypeScript | | Styling | Tailwind CSS v3 (design tokens in `tailwind.config.ts`) | | Routing | React Router v6 | | API | Vercel serverless functions under `api/` (same-origin `/api`) | | Database | MongoDB (official Node driver) | | Prices | Node ingest scraping Jumia (sitemap + JSON-LD) — `scripts/` | MongoDB has no browser SDK, so — unlike a Supabase-style setup — the React app never touches the database directly. Every read/write goes through the app's own **same-origin `/api`**, which holds the MongoDB connection server-side. In production Vercel runs each file in `api/` as a serverless function; in dev a small Vite plugin mounts the same handlers in-process (`npm run dev` just works). ## Getting started ### 1. Install dependencies ```bash npm install ``` ### 2. Set up MongoDB & environment variables 1. Provision a **MongoDB** database — a free **MongoDB Atlas** cluster (`mongodb+srv://…`) for production, or a local one for dev (`mongodb://localhost:27017`, e.g. `docker run -p 27017:27017 mongo:7`). 2. Copy your values into a `.env` file (copy from `.env.example`): ```bash cp .env.example .env ``` | Env var | Purpose | | --- | --- | | `MONGODB_URI` | Connection string (Atlas `mongodb+srv://…` or `mongodb://localhost:27017`) | | `MONGODB_DB` *(optional)* | Database name (defaults to `pricepilot`) | | `SCRAPER_CONTACT` *(recommended)* | Real email/URL for the scraper …