Wocart
Wocart runs the whole cash-on-delivery business for Algerian stores: an Arabic-first checkout, phone verification, Yalidine, ZR Express, NOEST, Guepex and 82 EcoTrack couriers, your own drivers, and M
Dine nettbutikker samlet – søk i mange butikker samtidig.
Translation pending
CommerceGitHub @paalisOnlineOwner unconfirmed
Have you tried it? One tap is enough. No sign-in needed.
Repository information has not been collected yet.
No updates detected yet. GitHub releases will appear here.
The maker's introduction consists of the line above. Read the repository README for more details. Repository README ↗
Loading the full README.
Read the full README ↗En «nettleser for nettbutikker». Du legger selv inn butikkene, grupperer dem i kategorier og søker etter varer i mange butikker samtidig.
/ fokuserer søkefeltet.Next.js 16 (App Router), TypeScript, Tailwind CSS v4 og cheerio (HTML-parsing på serveren).
Lagring: alt lagres i nettleserens localStorage. Dataene ligger altså bare på enheten du bruker. Bruk eksport/import for backup eller for å flytte data mellom enheter. Lagringen ligger bak grensesnittet Repository i src/lib/storage.ts, så en Supabase-backend kan kobles på senere uten endringer i UI-et.
Krever Node.js 20.9 eller nyere.
npm install
npm run dev
Åpne http://localhost:3000. Første gang lastes fem eksempelbutikker inn (Brando, Volt, Retro, NLY Man og Decades). Søkemalene deres er beste gjetning og er ikke verifisert. Bruk «Test mal» i redigeringsvinduet og juster ved behov.
Andre kommandoer:
npm run build
npm run lint
Ingen er påkrevd. Alle er valgfrie og gjelder bare server-API-ene.
| Variabel | Standard | Beskrivelse |
|---|---|---|
SCRAPER_USER_AGENT | Butikkbrowser/1.0 (...) | User-Agent ved henting av butikksider. Legg gjerne inn en kontaktadresse. |
SEARCH_CACHE_TTL_SEC | 300 | Hvor lenge produktresultater caches (sekunder). |
SEARCH_RATE_LIMIT_PER_MIN | 20 | Maks antall «Hent produkter»-søk per klient-IP per minutt. |
SCRAPER_HOST_INTERVAL_MS | 1500 | Minste tid mellom forespørsler mot samme butikk. |
SCRAPER_ALLOW_PRIVATE | – | Bare for lokal testing (1) mot butikker på localhost. Har ingen effekt i produksjon. |
Eller fra kommandolinjen:
npx vercel --prod
Etter deploy kan du installere appen fra nettleseren («Legg til på Hjem-skjerm» på iPhone, eller installer-ikonet i Chrome).
En mal er en adresse der {query} byttes ut med søkeordet, f.eks. https://butikk.no/search?q={query}. Når du legger inn en ny butikk, gjør GET /api/template?url=… dette:
<form> med søkefelt),/search?q=, /sok?q=, /?s=, /catalogsearch/result/?q= …) og godtar bare mønstre der testordet faktisk vises på resultatsiden.«Test mal» (GET /api/template?test=…) sjekker en mal på samme måte. Noen butikker laster resultatene med JavaScript. Da kan testen ikke bekrefte malen, så åpne testsøket og sjekk selv.
POST /api/search)Nettleseren sender søkeordet og de valgte butikkene (med maler og selektorer, siden dataene ligger i nettleseren). Serveren svarer med en NDJSON-strøm, én linje per butikk så snart den er ferdig:
*/$ støttes, egen User-agent: butikkbrowser-gruppe går foran *, stier normaliseres (æ/ø/å, prosentkoding), og innhold etter 500 KiB ignoreres. Filen huskes i 24 timer. Søkesider som er sperret, hentes ikke. Kan ikke robots.txt leses (nettverksfeil, 5xx eller 429), hentes ingenting, og appen prøver igjen etter ett minutt.Product/ItemList), deretter OpenGraph, og til slutt CSS-selektorer du legger inn under «Avansert» i butikkinnstillingene.Mange butikker viser søkeresultatene med JavaScript, så HTML-en inneholder ingen produkter. Butikkens eget søke-API gir da raske og rene data. Du velger det under «Avansert → Produkt-API»:
| Type | Endepunkt | Eksempel |
|---|---|---|
| Shopify | /search/suggest.json?q=… | Shopify-butikker |
| WooCommerce | /wp-json/wc/store/v1/products?search=… | Kleins |
| Egendefinert JSON | Din egen URL-mal med {query}, pluss stier som data.products, name, price.amount og images.0.url | Retro (/api/navigation/product?query=…), Decades (Voyado Elevate: /publicapi/esales/search?q=…) |
This is the beginning of the README. Read the rest at the original. Read the full README ↗