Overview
A ready-to-launch classifieds marketplace with crypto payments that you rebrand and run as your own. Users pay with USDT and GRAM straight to your wallet, with no payment processor in between; every paying wallet is checked for risk (AML) first; deals between users can go through a crypto safe deal (escrow) on TON and TRON smart contracts. It runs as a website that installs as an app on Android and iOS and as a Telegram Mini App, with shops for professional sellers and internal credits.
Who it is for: an entrepreneur or a team that wants to launch a local or niche marketplace (a city, a country, a vertical such as cars, real estate, electronics or services) without building it from scratch, especially where Telegram is the main messenger and crypto payments are allowed.
What you get
The full source code: front end (HTML, CSS, JavaScript, no build step), back end (Supabase Edge Functions in TypeScript), the database schema with security policies, a Cloudflare Worker for link previews and SEO, and the escrow smart contracts with their tests and build scripts.
A brand-neutral English interface: name, website, currency, language format, time zone and the name of the credits are set in one file,
config.js.Documentation:
README.md(start here),INSTALL.md(installation step by step),ECONOMICS.md(prices, limits, fees and where to change each number),DEVELOPER-GUIDE.md(how the code is organized: every feature mapped to its code section, server actions and database tables),escrow/README.md(the safe deal),LICENSE.mdandTHIRD-PARTY-NOTICES.md, demo banners and a demo account script.Automated checks of the whole installation: 55 real scenarios (listings and moderation, chat, fake-review and bot protection, credits, bans, database access, the demo account), all passed on the demo — see the report below. The test function is included, so your developer can rerun them on your own test project after any change.
Estimated value: 5,000 USDT, paid in crypto. Included: the complete code with full rights to use it, change any part of it and run it as your own marketplace, with no royalties; help with installation, if you want it; help with connecting every feature from the "Connected with your keys" section. Developing new features is not included. The one restriction: the source code itself may not be resold or published (LICENSE.md). The same code is also offered to other buyers.
Contact: spotgram.support@gmail.com
Try the live demo
Open the demo with one click, no registration: you enter a shared account that is also an administrator, so you can try both sides of the marketplace.
| What | Link |
|---|---|
| Demo with the shared account (website and admin panel) | marketplace-test-3sx.pages.dev/?demo=… |
| The Telegram Mini App | @Market_demo_app_bot — open the bot and tap Open |
| The website as a guest | marketplace-test-3sx.pages.dev |
What you can do in the demo
Post a listing with photos and a link to an external marketplace, then approve it yourself in the admin panel.
Promote a listing, open a shop, pay its subscription, publish shop listings: the account has 1,000 Coins on its personal balance and in its shop.
Submit an ad banner and approve it with your own price and term.
Look at the admin panel: moderation, reports, banners, hidden listings, removed by AI, user cards and statistics.
Install the site as an app (see the user guide below).
Restricted on the shared demo account (you will see "This action is turned off for the shared demo account"): bans, roles and positions, deleting banners, changing other users' listings and banners, reading other people's chats, two-factor setup for the admin panel, linking an e-mail, Telegram or wallet, money operations. Other users' e-mail addresses are hidden.
Many people use this account at the same time and see each other's actions: don't enter personal data. The demo is reset from time to time.
Off on the demo (they need the operator's own keys, wallets or domain; see "Connected with your keys" below): the Cloudflare Turnstile check (the demo runs it with Cloudflare's test keys, which let everyone through), AI moderation (the demo works in manual mode: you approve new listings yourself), buying credits with crypto, the safe deal, push notifications, sign-in with Google, link previews and search indexing.
What works in the demo
Everything in this section is connected on the demo and works right after installation; it needs only Supabase and the site hosting. Features that need your own keys are in the next section, together with what each was tested with.
For buyers and visitors
A feed of listings with photos, 327 categories in 8 sections (Goods, Services, Transport, Real estate, Online, Jobs, Business, Travel), full-text search, filters and sorting.
A listing card with a photo gallery, price in your currency or in USDT, city, seller rating, similar listings and a "Buy on Amazon / eBay / …" button when the seller adds a link to an external marketplace.
Favorites, subscriptions to sellers and shops (a notice when they post something new), a stories strip with promoted listings.
Chat with sellers in real time: photos and files, payment links from trusted payment services, orders right in the chat.
Reviews with photos and ratings, reports about listings and sellers, a support chat.
Accounts without passwords: automatic sign-in in Telegram, a one-time code sent to e-mail on the website (it needs your e-mail sender), browsing as a guest without an account.
The same marketplace as a Telegram Mini App: automatic sign-in, sharing listings into Telegram chats. It needs only a free bot from @BotFather.
Notifications in the app (the bell) and a referral link that rewards inviting friends.
For sellers
Posting in a few steps: up to 10 photos, title, category, description, price and currency, city, tags.
Three kinds of listings: a physical product, a service with booking (links to booking services, a schedule of time slots, import of busy time from Google, Outlook or iCloud calendars) and a digital product.
A link to the same item on Amazon, eBay, Etsy, AliExpress, Walmart and other approved marketplaces; link shorteners are blocked.
Orders: the buyer sends an order, the seller confirms, marks it paid, ships it with a tracking number and completes it; stock with reserved quantities.
Free and paid promotion, renewal of listings, view statistics.
30 free listings per month for private sellers (adjustable).
For shops
A storefront with its own address, logo, banner, colors, contacts and pinned listings; up to 100 listings per month included.
Staff: an owner, a deputy and managers with their own rights; the shop speaks in chat under its own name, staff personal data stays hidden.
Broadcasts to subscribers, shop advertising cards in the feed, a shop referral link, promo codes, statistics, reviews.
A seller API with tokens and signed webhooks to sync prices, stock and orders with the shop's own system.
For you, the operator
An admin panel: moderation queue, listings hidden by users' reports, listings removed by AI, reports, review disputes, ad banners with your own price and term, user cards with their history, credit history, shop statistics, the support inbox.
Moderation in manual mode: word lists remove obviously prohibited listings and catch duplicates automatically, every other new or changed listing waits for a moderator's approval. With an OpenAI key it switches to automatic mode (see the next section).
Content strikes and automatic temporary freezes for repeat offenders, bans and "shadow" bans, a verified-seller badge.
Roles: managers with their own referral links and commissions, exclusive partners, arbiters for safe deal disputes.
Monetization built in: credits, paid promotion, shop subscriptions, ad banners, shop ads (details in "Business model" and
ECONOMICS.md).26 scheduled jobs that clean up and expire data by themselves: listings, banners, stories, orders, old chats, logs.
Security
Row-level security on every table; the browser never writes to the database directly, every action goes through one server gateway that checks rights and limits.
Two-factor login (Google Authenticator) for administrators and arbiters; money operations require it.
Protection against bots: a device fingerprint notices accounts switched too fast or five and more accounts on one device and freezes that device for 24 hours (a repeat means a permanent block); limits on how often listings can be posted. The invisible Cloudflare Turnstile check is added with your keys (next section).
Protection against fake reviews: a review can be left only after real contact (the buyer has written to the seller or opened their contact); one review per buyer for each seller or shop, editable once; no reviews of yourself; the seller can dispute a review and an administrator decides to keep, correct or remove it; reviews can be reported.
Protection against bad listings: word lists and optional AI checks, content strikes with automatic freezes for repeat offenders, listings hidden after users' reports until a moderator decides.
An allow-list of external marketplaces, payment services and booking services; link shorteners are blocked.
Automated checks: 55 of 55 passed
Run on 23 October 2026 on the demo installation, the same code as in the package. Every check signs in as real test users, calls the deployed backend the way the app does and checks the result in the database; the test users and their data are deleted after each run. The test function comes with the package, so your developer can rerun all checks on a test project after any change.
Settings during the run: AI moderation off (manual mode), Cloudflare Turnstile with Cloudflare's test keys, Telegram bot connected, shared demo account on.
Listings and moderation16 / 16
- Test users sign in and the server knows them
- A seller publishes a listing
- The free monthly quota is counted
- Without AI the listing waits for a moderator and is hidden from buyers
- A regular user can't approve listings
- A moderator approves it and it appears in the feed
- An edited listing is checked again
- Another user can't edit someone else's listing
- Links in the description are refused
- A link to an approved marketplace is accepted
- A link shortener is refused
- Prohibited content is rejected automatically and gives a strike
- Editing a listing to prohibited text is refused and gives a strike
- A photo added to a published listing is checked too
- A new account can post at most 3 listings an hour
- The owner deletes the listing
Chat and reviews14 / 14
- A published listing for the checks (setup)
- A buyer writes to a seller
- Both sides see the message
- A third user can't read the conversation (neither through the backend nor directly in the database)
- Links to other sites in messages are refused
- You can't message yourself
- No review without contacting the seller first
- No review of yourself
- After writing to the seller the buyer can leave a review
- One review per seller: a second one edits it, and only once
- Opening the seller's contact also counts as contact
- The seller disputes a review, only once at a time
- Only the reviewed seller can dispute
- An administrator resolves the dispute
Favorites, reports, credits, database access14 / 14
- A published listing for the checks (setup)
- Add to favorites and remove
- Follow a seller
- Report a seller, once
- The report reaches the moderators and is resolved
- Free promotion works, and only once
- Paid promotion needs credits
- Paid promotion charges 1 credit and writes the history
- A promo code adds credits once per user and respects its limit
- A user can't add credits to himself through the database
- A guest can't write to the database
- A guest can't read e-mails of users
- A guest can't read payments and credit history
- A signed-in user can't change someone else's listing directly
Administration, bots, demo account11 / 11
- A published listing for the checks (setup)
- Admin tools are closed to regular users
- An administrator opens a user card
- A banned user can't act but can still write to support
- Unban returns access
- Five accounts on one device freeze the device and the accounts
- Administrators are not frozen by the device check
- The demo link signs in
- The demo account can't ban users
- The demo account can't hide other people's listings
- The demo account doesn't see other users' e-mails
Crypto payments, the safe deal, push notifications, AI moderation with an OpenAI key and Google sign-in need keys and wallets that the demo doesn't have; they were tested separately with the services named in the description. The escrow smart contracts have their own tests in escrow/.
Connected with your keys: what each was tested with
The code for each of these is in the package and is switched on by your own keys, wallets or domain. INSTALL.md describes every step, and the author helps you connect them (included in the price). The "Tested with" column names the service or network each feature was tested with.
| Feature | What it gives | Tested with | What you need |
|---|---|---|---|
| Anti-bot check | An invisible check on sign-up and on posting that stops scripts | Cloudflare Turnstile. On the demo it runs with Cloudflare's test keys | Free Cloudflare keys; set up together with you after purchase, about 5 minutes |
| AI moderation | Automatic mode: the text and photos of every new listing are checked, violations are removed, only doubtful listings reach a moderator | OpenAI: Moderation API (free) and GPT-4o-mini. Without a key the marketplace works in manual mode, as on the demo | An OpenAI key |
| Crypto payments for credits | Users buy credits with USDT or GRAM on TON and USDT on TRON; the money goes straight to your wallet, no payment processor | TON: TON Connect wallets (Tonkeeper, Telegram Wallet) on the main network. TRON: TronLink, TokenPocket, Bitget Wallet, OKX Wallet and WalletConnect, on a local TRON network with the real USDT contract | Your wallet addresses, TonAPI and TronGrid keys |
| AML wallet check | Every paying wallet is screened before any money is sent; risky wallets are refused | MistTrack API (pay per check; the payer covers it with 0.5 USDT) | A MistTrack key |
| Crypto payment gateway (optional) | An alternative to direct payments: invoices and payment notifications through a gateway | NOWPayments: the connector is built for its API | A NOWPayments account |
| Safe deal (escrow) | Buyers pay into a smart contract; the seller is paid on confirmation; claims, an arbiter, automatic payout by deadline | TON: contract tests in a sandbox and deals on the TON main network. TRON: 57 scenarios in Hardhat, 71 checks on a local TRON node with the real USDT contract, the Nile test network; not yet deployed on the TRON main network | Service wallets and keys (escrow/README.md); deploying the TRON contract costs about 390 TRX |
| Push notifications | Messages, orders, reviews and moderation results on the phone's lock screen | The standard Web Push protocol (VAPID keys), no third-party service | Keys made with one command, about 5 minutes |
| Sign in with Google | One-tap sign-in on the website | Google OAuth through Supabase Auth | A Google Cloud OAuth client (free) |
| E-mail sign-in codes | A one-time code instead of a password | Supabase Auth with an SMTP sender | Your SMTP sender (Resend, Postmark, Amazon SES or similar) |
| Your domain and the Cloudflare Worker | Link previews in Telegram, WhatsApp and Facebook; listing pages for Google, Bing and AI search with phone numbers, e-mails and links stripped; a sitemap; images through your domain | Cloudflare Workers (free plan) | A domain on Cloudflare |
| Card payments | Credit purchases by card in your country | Not included: depends on the country; the code has a neutral connector to adapt | Custom work by separate agreement |
Sending sign-in codes needs your own e-mail sender (SMTP: Resend, Postmark, Amazon SES or similar); it is part of the basic installation.
The safe deal contracts are covered by automated tests but have not had an independent audit; keep the deal limit low until you order one.
Why credits are not sold inside Telegram
Credits are bought only on the website or in the installed app, because Telegram's rules forbid selling digital services inside a Mini App for anything except Telegram Stars.
Telegram requires that payments for digital goods and services in bots and Mini Apps be made "exclusively in Telegram Stars"; cryptocurrency and outside payment providers are not allowed for them (Bot Payments API for Digital Goods).
Breaking this rule can get a Mini App hidden from the App Store and Google Play versions of Telegram, removed from the platform, or marked as a scam (Bot Developer Terms, section 6.2).
Credits pay for listings, promotion and shop subscriptions, which are digital services, so the purchase stays on the website. Inside Telegram users see their balance and spend it as usual.
Deals between users for real goods and services are a different case: Telegram allows other payment methods for physical goods, and the safe deal is a payment from the buyer's own wallet into a smart contract, not a purchase from the marketplace.
Accepting Telegram Stars for credits can be added later as custom work.
User guide: the website and the app
The same marketplace opens in a browser, as an installed app (PWA) and inside Telegram; the screens and buttons are the same everywhere.
Install it as an app
Android: open the site in Google Chrome and tap Install app (or Chrome menu → Install app).
iPhone and iPad: open the site in Safari, tap Share and choose Add to Home Screen.
Computer: in Chrome or Edge, click the install icon at the right of the address bar.
The app opens full screen from its own icon and can show push notifications. The same guide is inside the app: More → Install the app.
If you first signed in through Telegram, add an e-mail in Profile → Settings before installing: on the website you sign in with a code sent to that e-mail.
Find something
Feed shows the newest listings; the chips under the search line (Goods, Services, Transport…) open categories and subcategories.
Type in Search to look by words, city or a listing number; the arrows button next to Post changes the sorting.
Tap a card to open it: photos, price, description, the seller's rating and reviews, similar listings.
From the card you can write to the seller (Message), place an Order, open the same item on another marketplace, add it to Favorites (the heart), share it or Report it.
Sell something
Tap Post and choose what you are selling: a product, a service or a digital product.
Fill in the title, category, main photo and gallery (up to 10 photos), description, price and currency, city, tags and, if you like, a link to the same item on Amazon, eBay or another approved marketplace.
Tap Publish. The listing is checked and appears in the feed; if a moderator has to look at it, you get a notification with the result.
In Profile → My listings you edit, renew, promote or remove your listings.
Your profile
The balance under your name ("1000 Coins"): tap it to buy credits or enter a promo code.
My listings, Reviews, Referrals, Statistics, Settings, My shop — the buttons on the profile page.
Settings: name, photo and "about" text, Telegram contact, notifications, e-mail, wallets for the safe deal.
More: installing the app, FAQ, marketplace rules, support chat, log out (it ends the session only on this device).
Chat and notifications
Chat lists your conversations; orders have their own filter. Photos and files can be sent in a chat.
The bell at the top shows notifications: new messages, orders, reviews, moderation results, promotions ending.
Your shop
Profile → My shop opens the shop dashboard (it needs the verified-seller badge from an administrator).
Top up the shop balance, pay the subscription, then set up the storefront: name, address, logo, banner, contacts.
Inside the dashboard: shop listings and drafts, staff, broadcasts to subscribers, shop ads, statistics, reviews, the referral link, and integrations (API tokens and webhooks).
For administrators
More → Admin panel unlocks the admin tools; the first time it offers to protect them with Google Authenticator.
In Chat a pinned item Moderation center opens the work tabs: Requests (support), Reports, Banners, Disputes, Search (a user card by ID), Hidden (listings waiting for a decision), Removed by AI.
In a user card you see their listings, chats, credit history and moderation history, and you can verify, ban or restore.
Business model
The marketplace earns from internal credits: 1 credit = 1 USDT, users and shops buy them and spend them on services. All numbers below are defaults you can change; ECONOMICS.md lists every one and where it lives in the code.
| Source of income | Default price |
|---|---|
| Listings beyond the free limit (30 per month, 30 active) | 1 credit each |
| Paid promotion: 24 hours at the top of the stories feed and a highlighted card | 1 credit |
| Shop subscription (100 listings per month included) | 25 credits per month |
| Shop advertising card in the feed | 1 credit per day |
| Home-page ad banner | Your price, set when you approve the banner |
| Safe deal disputes | Arbitration fee: 5 % of the price, at least 10 USDT, paid by the losing side |
The safe deal takes no percentage of ordinary deals: the buyer pays the price, the network fee and 0.5 USDT for the wallet check. Referral rewards, manager commissions and promo codes help you grow the audience; manager commissions are tracked in their dashboard and paid by you outside the system.
Technology, installation and what is not included
Stack: a static front end (HTML, CSS, JavaScript, no build step) · Supabase (Postgres, Auth, Storage, Edge Functions, scheduled jobs) · Cloudflare (Pages, one Worker, Turnstile) · smart contracts in Tact (TON) and Solidity (TRON).
To run it you need: a Supabase project (the Pro plan is recommended in production), a Cloudflare account, a domain, and an e-mail sender (SMTP). A test installation fits in the free plans.
Installation follows INSTALL.md: run three SQL files, deploy three Edge Functions, set the secrets, fill in config.js, upload the site. A person comfortable with web dashboards does it in an afternoon; nothing has to be compiled.
Not included
Your keys, wallets and accounts with third-party services (OpenAI, MistTrack, TonAPI, Google, Telegram bot).
A card payment provider (custom work per country).
Developing new features (help with installation and with connecting the features above is included).
An independent audit of the safe deal contracts.
Legal texts reviewed for your country: the Terms of Service and Privacy Policy are templates for your lawyer.
Hosting and running costs (Supabase, domain, e-mail, AI and AML checks).
FAQ
Can I change the name, colors and language? Name, website, currency, number format, time zone and the credits name are in config.js; colors are variables at the top of style.css. The interface is in English; translating it means editing the texts in the code.
Will my programmer understand the code? Yes: plain JavaScript and TypeScript, no framework and no build step, comments in English throughout. The main files are large (the app is about 37,000 lines, the back end about 25,000), so DEVELOPER-GUIDE.md maps every feature to its section in the code, its server actions and its tables, and shows how to add a new one. 55 automated checks of the whole installation come with the package (report).
Which currency do listings use? Your fiat currency (USD by default) or USDT, chosen by the seller. Another currency is added with one SQL command (INSTALL.md, §4).
Do I need Telegram? No. The website and the installed app work on their own; the Telegram Mini App is an extra channel.
Can users pay by card? Not out of the box. Card payments depend on the country and the bank; the code has a neutral connector that is adapted to your provider.
Is the safe deal safe for real money? The contracts hold the money, and their rules (claims, arbiter, deadlines) are covered by automated tests on both networks. They have not had an independent audit, so keep the deal limit low until you order one.
Where are the users' data stored? In your own Supabase project. The code contains no analytics or tracking of third parties.
What happens after I pay? You receive the full code package with the documentation and can start the installation the same day.
What license do I get? LICENSE.md: permanent rights to use, change, rebrand and run the code as your own marketplace, with no royalties. The one restriction: the source code itself may not be resold, given away or published. The bundled third-party libraries keep their own licenses (THIRD-PARTY-NOTICES.md); the only one with limits is WalletConnect, which is optional and free up to 500 connected wallets a month.
Is help with installation included? Yes. The price includes help with installation, if you want it, and with connecting every feature from the "Connected with your keys" section. Developing new features is not included; card payments for your country are custom work by separate agreement.