Unified marketplace search across Kijiji, eBay, and Facebook Marketplace.
Marketly aggregates and normalizes listings from multiple online marketplaces into a single, unified interface. Instead of manually browsing Kijiji, eBay, and Facebook Marketplace separately, you can search across supported platforms simultaneously and compare results in one feed.
Why Marketly:
- Multi-source search, one workflow
- Image-first unified grid for fast scanning
- Per-user saved searches with re-run plus batch run
- Filters, sorting, and infinite scroll loading
| Feature | Description |
|---|---|
| Multi-source search | Query Kijiji, eBay, and Facebook Marketplace in one request. |
| Normalized results | Consistent listing cards (title, price, images, location) across sources. |
| Saved searches | Save queries per user and re-run instantly (single or batch). |
| Client-side filters | Location filtering, distance helpers, and sort controls in the search UI. |
| Supabase authentication | Sign-in via Supabase Auth; backend verifies Supabase JWT for API access. |
- Node.js 18+ (or current LTS)
- Python 3.10+
- (Optional) Docker Desktop (for local Postgres)
git clone https://github.com/jhadenn/Marketly.git
cd MarketlyCreate backend/.env (see Environment Variables below), then:
cd backend
python -m venv .venvWindows:
.venv\Scripts\activate
pip install -e ".[dev]"
python -m playwright install chromium
uvicorn app.main:app --reload --port 8000Create frontend/.env.local (see Environment Variables below), then:
cd ../frontend
npm install
npm run devOpen http://localhost:3000.
Required:
DATABASE_URL=postgresql+psycopg2://USER:PASSWORD@HOST:5432/DBNAMEAuth verification (pick one approach):
# Option A (HS JWT): provide the Supabase JWT secret
SUPABASE_JWT_SECRET=YOUR_SUPABASE_JWT_SECRET
# Option B (JWKS): provide project URL (and optionally anon key) for key discovery
SUPABASE_URL=https://YOUR_PROJECT.supabase.co
SUPABASE_ANON_KEY=YOUR_SUPABASE_ANON_KEYOptional:
MARKETLY_ENABLE_FACEBOOK=false
MARKETLY_FACEBOOK_AUTH_MODE=guest
MARKETLY_FACEBOOK_COOKIE_PATH=secrets/fb_cookies.jsonNEXT_PUBLIC_SUPABASE_URL=https://YOUR_PROJECT.supabase.co
NEXT_PUBLIC_SUPABASE_ANON_KEY=YOUR_SUPABASE_ANON_KEY
NEXT_PUBLIC_API_BASE=http://127.0.0.1:8000This repo includes a Postgres service in backend/docker-compose.yml, but it is currently commented out. If you want a local database:
-
Uncomment the
dbservice inbackend/docker-compose.yml. -
Start Postgres:
cd backend
docker compose up -d db- Set:
DATABASE_URL=postgresql+psycopg2://marketly:marketly@localhost:5432/marketlyMarketly/
backend/ # FastAPI + connectors + DB models
app/
connectors/
core/
models/
schemas/
services/
alembic/
docker-compose.yml
pyproject.toml
frontend/ # Next.js App Router UI
app/
components/
lib/
styles/
imgs/ # Screenshots
scripts/ # Smoke scripts
- Multi-source search (Kijiji, eBay, Facebook)
- Saved searches (per user)
- Filters, sorting, infinite scroll
- Edit saved searches
- Deploy
- Rate limiting and caching
- Notifications
See https://github.com/jhadenn/Marketly/issues for open items.
MIT - see LICENSE.
Built by Jhaden Goy.

