Ecommerce Template
Modern ecommerce template built with Next.js 16, React 19, Drizzle, Better Auth, Supabase, and Stripe.
Chat with an AI pharmacy assistant to find medicines, manage your cart, and place orders
AI summary · website content
CommerceJavaScript · CSSGitHub @Rytsense-TechnologiesOnlineOwner unconfirmed
Have you tried it? One tap is enough. No sign-in needed.
No updates detected yet. GitHub releases will appear here.
Owners of public repositories under a personal GitHub account can sign in to verify ownership and manage the introduction themselves. No administrator approval is needed.
Sign in, generate a verification file, and commit it to this repository’s default branch within 30 minutes. Files on other branches or forks do not count. Then check the file below to manage the project without administrator approval. Keep the file to retain your access.
If needed, you will go to sign-in. After signing in, return here and press your chosen verification button again.
Run /nomorevibe verify in your project folder to verify ownership and manage the introduction yourself.
Verify in one minuteAsk about other verification options
Loading the full README. The saved excerpt is shown below.
The Siru web app: plain HTML, CSS and JavaScript - no framework, no bundler,
no npm dependencies. It talks only to the Siru backend API
(Siru-ai-service, a separate repository, run locally); it never
connects to a database, Redis or any AI provider itself, and holds no
secret. Voice goes through LiveKit with a short-lived room token the backend
issues (POST /v1/voice/token); the LiveKit browser SDK is loaded from
jsDelivr.
config.js is the one place the backend's address is set:Read the full README ↗The Siru web app: plain HTML, CSS and JavaScript - no framework, no bundler,
no npm dependencies. It talks only to the Siru backend API
(Siru-ai-service, a separate repository, run locally); it never
connects to a database, Redis or any AI provider itself, and holds no
secret. Voice goes through LiveKit with a short-lived room token the backend
issues (POST /v1/voice/token); the LiveKit browser SDK is loaded from
jsDelivr.
config.jsconfig.js is the one place the backend's address is set:
| Where | apiBaseUrl | Result |
|---|---|---|
| production (Vercel) | 'https://13-205-123-198.sslip.io' (as committed) | the production backend |
local development (dev/serve.py) | '' - answered by dev/serve.py, the committed file is not changed | the address saved under Server settings on the sign-in page, else http://<this host>:8010 (the local backend) |
dev/serve.py --api-base <url> points a local page at another backend;
--api-base committed serves the committed config.js (the production
backend) - only when that is really what you want to test.
Only public values belong in config.js - every browser downloads it.
Start the backend (Siru-ai-service) on port 8010 - from the backend
checkout, scripts\dev-start.cmd --loopback-db --only api (and
scripts\dev-start.cmd --loopback-db --only voice for the voice worker) -
then from this folder:
python dev/serve.py --port 5500
The page then calls the local backend (dev/serve.py answers /config.js
with it; see above).
Open http://localhost:5500. --bind 0.0.0.0 serves it to the LAN (add the
page's origin to the backend's CORS_ALLOW_ORIGINS). dev/serve.py is a
development convenience only: like python -m http.server, but with
Cache-Control: no-cache so edits show up on a normal reload, and it never
serves dotfiles or dev/. Its test:
python -m unittest discover -s dev -p "test_*.py"
images/generate.py regenerates the product illustrations (development only).