Skip to content

Commit ac9ebb9

Browse files
committed
feat(extension): publishing kit — privacy policy page, homepage_url, store guide
Adds /legal/extension-privacy (required by the Chrome Web Store), homepage_url in the manifest, and PUBLISHING.md with paste-ready listing copy + permission justifications + submission steps. The upload zip is built locally (gitignored).
1 parent 0950197 commit ac9ebb9

4 files changed

Lines changed: 163 additions & 0 deletions

File tree

extension/.gitignore

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,4 @@
11
node_modules/
22
dist/
3+
4+
*.zip

extension/PUBLISHING.md

Lines changed: 89 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,89 @@
1+
# Publishing the shoplit extension to the Chrome Web Store
2+
3+
Everything you upload is in this folder. The packaged file is
4+
`shoplit-extension-v<version>.zip` (rebuild with `npm run build` then re-zip —
5+
see bottom). Below is the exact copy to paste into the Developer Dashboard.
6+
7+
## 0. One-time setup
8+
1. Go to **https://chrome.google.com/webstore/devconsole**.
9+
2. Sign in with the Google account you want to own the listing.
10+
3. Pay the **one-time $5 registration fee** and complete the account/identity
11+
verification (Chrome requires a verified publisher).
12+
13+
## 1. Create the item
14+
1. Dashboard → **Add new item** → upload `shoplit-extension-v0.1.0.zip`.
15+
2. It parses the manifest; fill in the listing fields below.
16+
17+
## 2. Store listing (copy/paste)
18+
19+
**Name:** `shoplit — add to cart`
20+
21+
**Summary (≤132 chars):**
22+
`Add products to your shoplit cart in one click from Amazon, Myntra, Nykaa, Flipkart & AJIO — right from the product page.`
23+
24+
**Description:**
25+
```
26+
shoplit lets creators build a shoppable, link-in-bio cart of products they love
27+
and share it with a short link. This extension is the fastest way to fill it.
28+
29+
On any product page at Amazon, Myntra, Nykaa, Flipkart or AJIO, click "Add to
30+
shoplit" (it appears under the product title) or the toolbar icon. shoplit reads
31+
the product — title, image, price, link — and you pick which cart to drop it in.
32+
Done. You can also paste your own affiliate or short link for the product.
33+
34+
• One-click add from the product page
35+
• Works across the major Indian shopping sites
36+
• Edit the title, price, image or link before saving
37+
• Connects securely to your shoplit account
38+
39+
Free, like the rest of shoplit. Sign up at https://shoplit.in
40+
```
41+
42+
**Category:** Shopping
43+
**Language:** English
44+
45+
## 3. Privacy tab (required)
46+
47+
**Single purpose:**
48+
`Add a product from a supported retailer's page to the user's shoplit cart.`
49+
50+
**Permission justifications:**
51+
- **activeTab** — Read the product on the page the user is currently viewing, only when they click the extension.
52+
- **scripting** — Extract the product details (title, image, price, link) from the active product page when invoked.
53+
- **storage** — Store the user's shoplit connection token locally so they stay signed in.
54+
- **host permission — retailer sites** (amazon, myntra, nykaa, flipkart, ajio) — Show the "Add to shoplit" button and read the product on supported shopping sites.
55+
- **host permission — shoplit.in** — Call the shoplit API to list the user's carts and add the product.
56+
- **Remote code:** No — all code is bundled in the package.
57+
58+
**Data usage** (check these): collects *Authentication information* (the connection token) and *User activity* (the product the user chooses to add). Certify: not sold to third parties, not used for unrelated purposes, not used for creditworthiness/lending.
59+
60+
**Privacy policy URL:** `https://shoplit.in/legal/extension-privacy`
61+
62+
## 4. Graphics
63+
- **Store icon (128×128):** auto-pulled from the package (`icons/128.png`). ✅
64+
- **Screenshots (required, 1280×800 or 640×400, 1–5):** capture on a real product page:
65+
1. A product page with the **"+ Add to shoplit"** button under the title.
66+
2. The **add panel** open (cart picker + product).
67+
3. The product showing up on your **shoplit cart** (`shoplit.in/c/...`).
68+
- **Small promo tile (440×280):** optional.
69+
70+
## 5. Submit
71+
- **Visibility:** Public (or Unlisted if you want to share only by link first).
72+
- Click **Submit for review.** Review typically takes a few hours to a few days.
73+
74+
## 6. After it's approved
75+
1. Copy the **published extension ID** from the dashboard.
76+
2. On the server, set it so the connect handoff is automatic for everyone:
77+
```
78+
ssh … 'cd shoplit && sed -i "s/^EXTENSION_ID=.*/EXTENSION_ID=<published-id>/" deploy/.env'
79+
./deploy/redeploy.sh shoplit-web
80+
```
81+
3. Add an "Install the extension" link on the dashboard pointing to the store URL.
82+
83+
## Rebuild + repackage
84+
```
85+
cd extension
86+
npm run build
87+
( cd dist && zip -rq ../shoplit-extension-v$(node -p "require('./manifest.json').version").zip . )
88+
```
89+
Bump `version` in `manifest.json` for each new store upload (Chrome rejects re-uploads with the same version).

extension/manifest.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
"name": "shoplit — add to cart",
44
"version": "0.1.0",
55
"description": "Add any product to your shoplit cart from Amazon, Myntra, Nykaa, Flipkart, AJIO.",
6+
"homepage_url": "https://shoplit.in",
67
"icons": { "16": "icons/16.png", "48": "icons/48.png", "128": "icons/128.png" },
78
"action": {
89
"default_popup": "popup.html",
Lines changed: 71 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,71 @@
1+
import { NavBar } from "@/components/nav-bar";
2+
import { Footer } from "@/components/footer";
3+
4+
export const metadata = { title: "Extension Privacy · shoplit" };
5+
6+
export default function ExtensionPrivacyPage() {
7+
return (
8+
<>
9+
<NavBar variant="marketing" />
10+
<main className="mx-auto max-w-2xl px-4 sm:px-6 py-16">
11+
<h1 className="font-serif text-4xl mb-2">shoplit browser extension — Privacy</h1>
12+
<p className="text-sm text-muted mb-8">Last updated: 2026-05-24</p>
13+
14+
<h2 className="font-serif text-2xl mt-8 mb-2">What the extension does</h2>
15+
<p className="leading-relaxed text-ink">
16+
The shoplit extension lets a signed-in creator add a product to one of their shoplit carts
17+
directly from a retailer&apos;s product page (Amazon, Myntra, Nykaa, Flipkart, AJIO).
18+
It has a single purpose: capturing a product you choose and saving it to your cart.
19+
</p>
20+
21+
<h2 className="font-serif text-2xl mt-8 mb-2">What it accesses, and when</h2>
22+
<p className="leading-relaxed text-ink">
23+
When you click the &ldquo;Add to shoplit&rdquo; button or the toolbar icon on a product page,
24+
the extension reads <strong>that page&apos;s</strong> product title, image, price and URL so it
25+
can pre-fill the add form. It only reads a page when you act on it. It does not read pages on
26+
other sites, and it does not track your browsing history.
27+
</p>
28+
29+
<h2 className="font-serif text-2xl mt-8 mb-2">What it stores</h2>
30+
<p className="leading-relaxed text-ink">
31+
A single access token (created when you connect the extension to your shoplit account) is
32+
stored locally in the browser&apos;s extension storage. It is used to authenticate your
33+
requests to the shoplit API. No browsing data is stored.
34+
</p>
35+
36+
<h2 className="font-serif text-2xl mt-8 mb-2">What it sends</h2>
37+
<p className="leading-relaxed text-ink">
38+
Only when you press &ldquo;Add&rdquo;, the product details you confirmed (title, image, price,
39+
link, optional note) are sent to shoplit&apos;s servers (shoplit.in) to create the cart item.
40+
Nothing is sent in the background.
41+
</p>
42+
43+
<h2 className="font-serif text-2xl mt-8 mb-2">Permissions, explained</h2>
44+
<ul className="leading-relaxed text-ink list-disc pl-5 space-y-1">
45+
<li><strong>activeTab / scripting</strong> — read the product details of the page you&apos;re on, when you invoke the extension.</li>
46+
<li><strong>storage</strong> — keep your connection token so you stay signed in.</li>
47+
<li><strong>host access (retailer sites)</strong> — show the &ldquo;Add to shoplit&rdquo; button and read the product on supported shopping sites.</li>
48+
<li><strong>host access (shoplit.in)</strong> — call the shoplit API to list your carts and add the product.</li>
49+
</ul>
50+
51+
<h2 className="font-serif text-2xl mt-8 mb-2">What we don&apos;t do</h2>
52+
<p className="leading-relaxed text-ink">
53+
We don&apos;t sell or share your data. We don&apos;t use third-party trackers or ad networks.
54+
We don&apos;t collect browsing history or analytics about the pages you visit.
55+
</p>
56+
57+
<h2 className="font-serif text-2xl mt-8 mb-2">Removing your data</h2>
58+
<p className="leading-relaxed text-ink">
59+
Uninstalling the extension clears the locally stored token. Carts and products you created
60+
live in your shoplit account and can be deleted from the shoplit dashboard.
61+
</p>
62+
63+
<h2 className="font-serif text-2xl mt-8 mb-2">Contact</h2>
64+
<p className="leading-relaxed text-ink">
65+
Questions about this policy: <a href="mailto:mayur.das4@gmail.com" className="text-accent underline underline-offset-2">mayur.das4@gmail.com</a>.
66+
</p>
67+
</main>
68+
<Footer />
69+
</>
70+
);
71+
}

0 commit comments

Comments
 (0)