A trusted digital ecosystem for original artwork, artists and collectors.
CommerceTypeScript · DartGitHub @Shaurya07devOnlineOwner 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.
A marketplace for original artwork, built around one idea: every piece carries a
verifiable identity — who made it, who owns it now, and everywhere it has been.
Three portals run on the same catalogue: artists list and price their work,
aggregators take pieces on display in real galleries, and collectors buy,
own and resell them. A QR code on each piece resolves to its public passport.
This repository is the website and its API.
One env file for everything: copy .env.example to .env at the repo root and
fill it in (Firebase web config, the Admin SDK key path). Both apps read it.Read the full README ↗A marketplace for original artwork, built around one idea: every piece carries a verifiable identity — who made it, who owns it now, and everywhere it has been. Three portals run on the same catalogue: artists list and price their work, aggregators take pieces on display in real galleries, and collectors buy, own and resell them. A QR code on each piece resolves to its public passport.
This repository is all of it: the website, its API and the mobile app.
| Folder | What it is |
|---|---|
frontend-web/ | Next.js 16 site (App Router). Deployed on Vercel. |
backend/ | NestJS API on Firestore (Firebase Admin SDK is the only writer). npm-workspaces monorepo: apps/api, packages/{domain,db,contracts,config}. |
mobile/ | Flutter app (Android and iOS) for artists, aggregators and collectors. Talks to the same API. See mobile/README.md. |
docs/ | Design notes, the backend master plan, audits. |
One env file for everything: a .env at the repo root (Firebase web config, the
Admin SDK key path). It is never committed, so ask a maintainer for the values.
Both apps read it.
# API → http://localhost:8080
cd backend && npm ci && npm run dev
# website → http://localhost:3000
cd frontend-web && npm ci && npm run dev
npm run check in backend/ runs the verification suite (contract tests,
state machines, pricing replay, type-check, build). npm run build in
frontend-web/ must pass before a push; npm run test:smoke drives it with
Playwright.
frontend-web.
Set the NEXT_PUBLIC_* variables in the project's
Environment Variables (NEXT_PUBLIC_SITE_URL = the production domain — it is
baked into QR codes; NEXT_PUBLIC_API_URL = where the API is hosted).CORS_ORIGINS. Build with npm run build, run
with node --experimental-strip-types apps/api/dist/main.js.cd backend && npx firebase-tools deploy --only firestore.Money is integer paise. Every API error is RFC 7807 ({type,title,status,code}).
Every route carries @Roles() or @Public(). Authorization is always re-read
from users/{uid} in Firestore, never from the ID token's claims. Small,
verified commits, pushed to main.