linkitylink 0.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,269 @@
1
+ # Linkitylink Template Federation - Go-Live Plan
2
+
3
+ ## Overview
4
+
5
+ Multi-instance template marketplace where templates submitted to any linkitylink instance (foo, bar, baz, bop) are available to all instances sharing the same BDO service.
6
+
7
+ **Date**: November 30, 2025
8
+ **Status**: Ready for testing
9
+
10
+ ---
11
+
12
+ ## Go-Live Checklist
13
+
14
+ ### 1. Test End-to-End Template Addition Flow
15
+
16
+ **Goal**: Verify template submission creates BDO and appears in shared index
17
+
18
+ **Steps**:
19
+ - [ ] Open The Advancement iOS app
20
+ - [ ] Navigate to Template Submission (from CarrierBag or Enchantment Emporium)
21
+ - [ ] Fill out template form:
22
+ - Template name: "Go-Live Test Template"
23
+ - Background colors: At least 2 (e.g., `#ff6b6b`, `#ee5a6f`, `#feca57`)
24
+ - Link colors: At least 2 (e.g., `#10b981`, `#3b82f6`, `#8b5cf6`, `#ec4899`)
25
+ - Payee quad emojicode: Your test payee quad
26
+ - [ ] Submit template (600 MP cost)
27
+ - [ ] Copy returned template emojicode
28
+
29
+ **Verification**:
30
+ ```bash
31
+ # Check template index file exists
32
+ cat /path/to/bdo/data/bdo/templates/Linkitylink-Template
33
+ # Should contain: ["🎨💎🌟...", ...]
34
+
35
+ # Check template BDO exists
36
+ cat /path/to/bdo/data/bdo/bdo/{pubKey}
37
+ # Should contain: {"type":"linkitylink-template","name":"Go-Live Test Template",...}
38
+
39
+ # Check BDO service endpoint
40
+ curl http://localhost:3003/templates/Linkitylink-Template
41
+ # Should return: {"success":true,"templates":[...],"count":N}
42
+
43
+ # Check linkitylink endpoint
44
+ curl http://localhost:3010/templates
45
+ # Should return: {"success":true,"templates":[...],"cached":false}
46
+ ```
47
+
48
+ **Expected Outcome**: ✅ Template appears in JSON array index, BDO created, endpoints return template
49
+
50
+ ---
51
+
52
+ ### 2. Choose Added Template in Create Flow
53
+
54
+ **Goal**: Verify template appears in create.html carousel and can be selected
55
+
56
+ **Steps**:
57
+ - [ ] Open `http://localhost:3010/create.html` in browser
58
+ - [ ] Open browser DevTools console
59
+ - [ ] Look for logs:
60
+ - `"🎨 Fetching user-submitted templates..."`
61
+ - `"✅ Received N templates from BDO service"`
62
+ - [ ] Scroll through template carousel
63
+ - [ ] Find "Go-Live Test Template" with "Community" badge
64
+ - [ ] Verify preview shows correct colors
65
+ - [ ] Click template to select it
66
+ - [ ] Verify console shows template emojicode being added to `relevantBDOs`
67
+
68
+ **Verification**:
69
+ ```javascript
70
+ // In browser console, check:
71
+ console.log(relevantBDOs);
72
+ // Should contain: ["🎨💎🌟..."] (your template emojicode)
73
+ ```
74
+
75
+ **Expected Outcome**: ✅ Template displays in carousel, selection adds emojicode to relevantBDOs
76
+
77
+ ---
78
+
79
+ ### 3. Purchase via Web
80
+
81
+ **Goal**: Complete linkitylink purchase using community template via web interface
82
+
83
+ **Steps**:
84
+ - [ ] With template selected, fill out create form:
85
+ - Title: "Test Link Page"
86
+ - Add 2-3 test links
87
+ - [ ] Click "Create Linkitylink"
88
+ - [ ] Choose payment method (Stripe)
89
+ - [ ] Complete test payment
90
+ - [ ] Verify linkitylink created successfully
91
+ - [ ] Note the returned emojicode
92
+
93
+ **Verification**:
94
+ ```bash
95
+ # Check linkitylink BDO created
96
+ curl "http://localhost:3003/emoji/{linkitylink-emojicode}"
97
+
98
+ # Check payment intent metadata included template
99
+ # (Check Addie logs or Stripe dashboard)
100
+ # Should show: relevantBDOs: ["🎨💎🌟..."]
101
+ ```
102
+
103
+ **Expected Outcome**: ✅ Purchase completes, template emojicode passed to payment
104
+
105
+ ---
106
+
107
+ ### 4. Purchase via App (The Advancement)
108
+
109
+ **Goal**: Complete linkitylink purchase using community template via iOS app
110
+
111
+ **Steps**:
112
+ - [ ] Open The Advancement app
113
+ - [ ] Navigate to Linkitylink creation (Enchantment Emporium)
114
+ - [ ] Template selection should show community templates
115
+ - [ ] Select "Go-Live Test Template"
116
+ - [ ] Fill out link details
117
+ - [ ] Complete purchase via app payment flow
118
+ - [ ] Verify linkitylink created
119
+
120
+ **Verification**:
121
+ ```bash
122
+ # Check app logs for template emojicode in relevantBDOs
123
+ # Check payment intent created with template metadata
124
+ ```
125
+
126
+ **Expected Outcome**: ✅ App purchase completes with template selection
127
+
128
+ ---
129
+
130
+ ### 5. Verify Payment Splits
131
+
132
+ **Goal**: Confirm template creator receives payment share
133
+
134
+ **Steps**:
135
+ - [ ] Check Stripe dashboard for payment intent
136
+ - [ ] Verify metadata contains:
137
+ - `relevantBDOs`: Array including template emojicode
138
+ - [ ] Check Addie logs for payment processing:
139
+ - `relevantBDOsMiddleware` extracts template emojicode
140
+ - `fetchAndExtractPayees()` fetches template BDO
141
+ - Template BDO's `payeeEmojicode` is resolved
142
+ - Payee quad payees added to payment split
143
+ - [ ] Verify template creator receives their share
144
+
145
+ **Verification**:
146
+ ```bash
147
+ # Check Addie logs (during purchase)
148
+ grep "relevantBDOsMiddleware" /path/to/addie/logs
149
+ grep "fetchAndExtractPayees" /path/to/addie/logs
150
+
151
+ # Check payment split includes template creator
152
+ # (Stripe dashboard or Addie payment intent logs)
153
+ ```
154
+
155
+ **Expected Outcome**: ✅ Template creator appears in payment split, receives revenue share
156
+
157
+ ---
158
+
159
+ ## Success Criteria
160
+
161
+ All 5 steps complete successfully:
162
+
163
+ 1. ✅ Template submission → BDO created → appears in index
164
+ 2. ✅ Template displays in create.html carousel → selectable
165
+ 3. ✅ Web purchase with template → payment includes relevantBDO
166
+ 4. ✅ App purchase with template → payment includes relevantBDO
167
+ 5. ✅ Payment splits include template creator → revenue sharing works
168
+
169
+ ---
170
+
171
+ ## Environment Setup
172
+
173
+ ### Services Required
174
+
175
+ **Local Development**:
176
+ - BDO service (port 3003)
177
+ - Linkitylink service (port 3010)
178
+ - Fount service (port 3001) - for MAGIC spells
179
+ - Addie service (port 3004) - for payments
180
+ - The Advancement iOS app (for app testing)
181
+
182
+ **OR Docker Test Environment**:
183
+ ```bash
184
+ cd /Users/zachbabb/Work/planet-nine/sharon
185
+ ./start-test-environment.sh
186
+ ```
187
+
188
+ ### Test Data Needed
189
+
190
+ - Test user account in The Advancement app
191
+ - Sufficient MP (600 MP for template submission)
192
+ - Test payee quad emojicode
193
+ - Test payment method (Stripe test card)
194
+
195
+ ---
196
+
197
+ ## Rollback Plan
198
+
199
+ If any step fails:
200
+
201
+ 1. **Template submission fails**:
202
+ - Check BDO service logs
203
+ - Verify `addTemplateToIndex()` method
204
+ - Check filesystem permissions for `data/bdo/templates/`
205
+
206
+ 2. **Template doesn't appear**:
207
+ - Check template index file exists
208
+ - Verify `GET /templates` endpoint
209
+ - Check cache (may need to wait 5 minutes or restart)
210
+
211
+ 3. **Payment split fails**:
212
+ - Verify `relevantBDOsMiddleware` in Addie
213
+ - Check `fetchAndExtractPayees()` logic
214
+ - Verify template BDO has `payeeEmojicode`
215
+
216
+ 4. **Complete rollback**:
217
+ - Remove template from index: `removeTemplateFromIndex()`
218
+ - Delete template BDO
219
+ - No impact on existing linkitylinks
220
+
221
+ ---
222
+
223
+ ## Post-Launch Monitoring
224
+
225
+ After go-live, monitor:
226
+
227
+ - **Template Index Size**: Check `data/bdo/templates/Linkitylink-Template` file size
228
+ - **Query Performance**: Monitor `/templates` endpoint response times
229
+ - **Cache Hit Rate**: Verify 5-minute cache working correctly
230
+ - **Payment Splits**: Audit payment intents for correct template creator payouts
231
+ - **Multi-Instance**: Test template appears on all linkitylink instances (foo, bar, baz, bop)
232
+
233
+ ---
234
+
235
+ ## Notes
236
+
237
+ - Template federation uses **filesystem storage** (not Redis)
238
+ - Templates stored as **JSON array** at `data/bdo/templates/Linkitylink-Template`
239
+ - **5-minute cache** on linkitylink reduces BDO service load
240
+ - Template creator earns revenue via **payeeEmojicode** in template BDO
241
+ - Multi-instance architecture enables **federated template marketplace**
242
+
243
+ ---
244
+
245
+ ## Timeline
246
+
247
+ **Target Date**: December 1, 2025 (Tomorrow)
248
+
249
+ **Estimated Duration**: 2-3 hours for complete testing
250
+
251
+ **Team**:
252
+ - Zach (testing + verification)
253
+ - Claude Code (monitoring + troubleshooting)
254
+
255
+ ---
256
+
257
+ ## Questions/Blockers
258
+
259
+ - [ ] Confirm BDO service running and accessible
260
+ - [ ] Confirm Fount service running for MAGIC spells
261
+ - [ ] Confirm Addie service configured for payment splits
262
+ - [ ] Confirm The Advancement app has latest template submission code
263
+ - [ ] Confirm test payee quad emojicode is valid
264
+
265
+ ---
266
+
267
+ ## Last Updated
268
+
269
+ November 30, 2025 - Initial go-live plan created
@@ -0,0 +1,420 @@
1
+ # Linkitylink User Testing Guide
2
+
3
+ This guide walks you through testing Linkitylink as a real user would - clicking buttons, filling forms, and making purchases through the web interface.
4
+
5
+ ## Before You Start
6
+
7
+ **URL**: `https://dev.linkityl.ink`
8
+
9
+ **What You'll Need**:
10
+ - Web browser (Chrome, Firefox, Safari, Edge)
11
+ - Credit card for testing (use Stripe test card: `4242 4242 4242 4242`)
12
+ - Optional: A Linktree URL to import (e.g., `https://linktr.ee/thefledgecollective`)
13
+
14
+ ---
15
+
16
+ ## Test 1: Landing Page
17
+
18
+ **Goal**: Verify the homepage loads and looks good
19
+
20
+ ### Steps:
21
+ 1. Open browser
22
+ 2. Go to `https://dev.linkityl.ink`
23
+
24
+ ### What You Should See:
25
+ - [ ] Page loads without errors
26
+ - [ ] "Glyphenge - You've Got Places to Go" title
27
+ - [ ] "You've got places to go" tagline
28
+ - [ ] Gradient purple/pink background
29
+ - [ ] Button or link to create a linkitylink
30
+
31
+ ### ✅ / ❌ Pass / Fail:
32
+
33
+ ---
34
+
35
+ ## Test 2: Create Page - Import from Linktree
36
+
37
+ **Goal**: Import links from an existing Linktree page
38
+
39
+ ### Steps:
40
+ 1. From landing page, click button to create a linkitylink
41
+ 2. You should be on `/create` page
42
+ 3. Look for the **"Import Links"** tab (should be active by default)
43
+ 4. In the URL field, enter: `https://linktr.ee/thefledgecollective`
44
+ 5. Click **"Import Links"** button
45
+
46
+ ### What You Should See:
47
+ - [ ] Button shows "Importing..." while loading
48
+ - [ ] Success message appears: "✅ Successfully imported X links from @thefledgecollective's Linktree!"
49
+ - [ ] Links appear in the "Your Links" list on the left
50
+ - [ ] Live preview updates in the center column showing your tapestry
51
+ - [ ] Social media icons (Instagram, TikTok, YouTube) are marked separately
52
+
53
+ ### ✅ / ❌ Pass / Fail:
54
+
55
+ ---
56
+
57
+ ## Test 3: Create Page - Add Links Manually
58
+
59
+ **Goal**: Manually add links without importing
60
+
61
+ ### Steps:
62
+ 1. On `/create` page, click **"Add Manually"** tab
63
+ 2. Enter a link title (e.g., "My Website")
64
+ 3. Enter a link URL (e.g., "https://example.com")
65
+ 4. Click **"Add Link"** button
66
+ 5. Repeat to add 2-3 more links
67
+
68
+ ### What You Should See:
69
+ - [ ] Form switches to manual entry tab
70
+ - [ ] Title and URL fields are present
71
+ - [ ] After clicking "Add Link":
72
+ - Link appears in the list below
73
+ - Preview updates in center column
74
+ - Form fields clear for next entry
75
+ - [ ] Each link shows a "Remove" button
76
+
77
+ ### ✅ / ❌ Pass / Fail:
78
+
79
+ ---
80
+
81
+ ## Test 4: Template Selection
82
+
83
+ **Goal**: Choose a template for your linkitylink
84
+
85
+ ### Steps:
86
+ 1. On `/create` page, look at the **right column** labeled "Choose Template"
87
+ 2. You should see a carousel of colorful template cards
88
+ 3. Click on different templates
89
+
90
+ ### What You Should See:
91
+ - [ ] Multiple template cards visible (Sunset, Rainbow, etc.)
92
+ - [ ] Selected template has a border or highlight
93
+ - [ ] **Live preview in center updates** when you select a different template
94
+ - [ ] Background colors and link colors change based on template
95
+ - [ ] Smooth carousel scrolling
96
+
97
+ ### ✅ / ❌ Pass / Fail:
98
+
99
+ ---
100
+
101
+ ## Test 5: Web Purchase Flow (Stripe)
102
+
103
+ **Goal**: Purchase a linkitylink using Stripe on the web
104
+
105
+ ### Steps:
106
+ 1. On `/create` page with at least 1 link added
107
+ 2. Scroll down to the **"Buy Now $20"** button (green button)
108
+ 3. Click the button
109
+ 4. Payment modal should appear
110
+
111
+ **In the Payment Modal**:
112
+ 5. Enter test card: `4242 4242 4242 4242`
113
+ 6. Enter any future expiration date (e.g., `12/25`)
114
+ 7. Enter any 3-digit CVC (e.g., `123`)
115
+ 8. Enter any postal code (e.g., `12345`)
116
+ 9. Click **"Pay $20"**
117
+
118
+ ### What You Should See:
119
+ - [ ] Payment modal appears with Stripe payment form
120
+ - [ ] Form shows "Complete Purchase" header
121
+ - [ ] Amount shows "$20.00 for your Glyphenge Tapestry"
122
+ - [ ] Button changes to "Processing..." during payment
123
+ - [ ] After successful payment:
124
+ - Modal closes
125
+ - Success page appears with your emojicode (8 emojis)
126
+ - Two shareable URLs displayed (emojicode and alphanumeric)
127
+ - "View Your Tapestry" button
128
+
129
+ ### ✅ / ❌ Pass / Fail:
130
+
131
+ ---
132
+
133
+ ## Test 6: App Purchase Flow (25% Discount)
134
+
135
+ **Goal**: Test the app handoff flow with color sequence
136
+
137
+ ### Steps:
138
+ 1. On `/create` page with links added
139
+ 2. Click the **"Buy in App $15"** button (shows "25% OFF" badge)
140
+ 3. Authteam modal should appear
141
+
142
+ **In the Authteam Modal**:
143
+ 4. Note the color sequence displayed (5 colored squares)
144
+ 5. Note the "Save $5.00 (25% off)" banner
145
+ 6. Note the handoff code shown at bottom
146
+
147
+ ### What You Should See:
148
+ - [ ] Modal shows "Connect to The Advancement"
149
+ - [ ] Discount banner: "Save $5.00 (25% off)"
150
+ - [ ] 5 colorful squares representing the sequence (red, blue, green, yellow, purple, orange combinations)
151
+ - [ ] Status shows "⏳ Waiting for app verification..."
152
+ - [ ] Instructions explain how to connect via app
153
+ - [ ] Handoff code displayed (for manual entry)
154
+ - [ ] "Pay $20 on Web Instead" button (fallback option)
155
+ - [ ] "Cancel" button
156
+
157
+ **Note**: Without the app, you can test the UI. In production, users would:
158
+ 1. Open The Advancement app
159
+ 2. Tap "Connect to Web"
160
+ 3. Enter the color sequence
161
+ 4. Complete purchase for $15 (instead of $20)
162
+
163
+ ### ✅ / ❌ Pass / Fail:
164
+
165
+ ---
166
+
167
+ ## Test 7: View Your Tapestry (Emojicode URL)
168
+
169
+ **Goal**: View a created linkitylink using the emojicode URL
170
+
171
+ ### Steps:
172
+ 1. After creating a linkitylink (from Test 5 or 6), copy the emojicode URL
173
+ - Format: `https://dev.linkityl.ink/view/💚🌍🔑💎...`
174
+ 2. Open a **new browser tab** or **incognito window**
175
+ 3. Paste the emojicode URL and press Enter
176
+
177
+ ### What You Should See:
178
+ - [ ] Page loads showing your tapestry
179
+ - [ ] Title appears at top (default: "My Glyphenge" or what you named it)
180
+ - [ ] All your links displayed as colorful gradient cards
181
+ - [ ] Each link card shows:
182
+ - Link title
183
+ - Domain name
184
+ - Arrow icon (→)
185
+ - [ ] If you added social links:
186
+ - "SoMa:" label at bottom (purple text, glowing)
187
+ - Social media icons in circular purple backgrounds
188
+ - Instagram (camera), YouTube (play button), TikTok (music note), etc.
189
+ - [ ] Beautiful gradient background
190
+ - [ ] No errors in the browser console (F12 → Console tab)
191
+
192
+ ### ✅ / ❌ Pass / Fail:
193
+
194
+ ---
195
+
196
+ ## Test 8: View Your Tapestry (Alphanumeric URL)
197
+
198
+ **Goal**: Verify the browser-friendly alphanumeric URL works
199
+
200
+ ### Steps:
201
+ 1. From your success page (after purchase), copy the **"Browser-Friendly URL"**
202
+ - Format: `https://dev.linkityl.ink/t/03e7def0c56fb7ab`
203
+ 2. Open a new browser tab
204
+ 3. Paste the alphanumeric URL
205
+
206
+ ### What You Should See:
207
+ - [ ] **Exact same tapestry** as the emojicode URL
208
+ - [ ] All links present and identical
209
+ - [ ] Same template colors
210
+ - [ ] Same social icons (if any)
211
+ - [ ] Easier to share (no emojis to copy/paste)
212
+
213
+ ### ✅ / ❌ Pass / Fail:
214
+
215
+ ---
216
+
217
+ ## Test 9: Click Links on Tapestry
218
+
219
+ **Goal**: Verify links are clickable and work correctly
220
+
221
+ ### Steps:
222
+ 1. On a tapestry page (from Test 7 or 8)
223
+ 2. Click on each link card
224
+
225
+ ### What You Should See:
226
+ - [ ] Clicking a regular link card opens the URL
227
+ - [ ] Link opens in **new tab** (doesn't navigate away)
228
+ - [ ] Clicking social media icons opens the correct social profile
229
+ - [ ] All social icons are clickable
230
+ - [ ] Hover effects work (cards glow or highlight on hover)
231
+
232
+ ### ✅ / ❌ Pass / Fail:
233
+
234
+ ---
235
+
236
+ ## Test 10: Social Media Icons
237
+
238
+ **Goal**: Verify social icons display correctly with "SoMa:" label
239
+
240
+ ### Steps:
241
+ 1. Create a linkitylink with social media links:
242
+ - Manually add: Title "Instagram", URL "https://instagram.com/test"
243
+ - Manually add: Title "YouTube", URL "https://youtube.com/@test"
244
+ - Manually add: Title "Twitter", URL "https://twitter.com/test"
245
+ 2. **Important**: These won't automatically be marked as social unless imported from Linktree
246
+ 3. OR: Import from Linktree (which auto-detects social links)
247
+ 4. Purchase and view the tapestry
248
+
249
+ ### What You Should See:
250
+ - [ ] Regular links appear as cards at top
251
+ - [ ] "SoMa:" label at bottom (purple, glowing, centered)
252
+ - [ ] Social icons below the label:
253
+ - Instagram: Camera icon
254
+ - YouTube: Play button icon
255
+ - Twitter/X: Bird icon
256
+ - TikTok: Musical note icon
257
+ - Facebook: "f" logo
258
+ - LinkedIn: "in" logo
259
+ - GitHub: Cat/octocat icon
260
+ - [ ] Icons have circular purple backgrounds
261
+ - [ ] Icons have subtle glow/shadow effect
262
+ - [ ] Icons are horizontally centered
263
+ - [ ] Hovering over icons increases glow
264
+
265
+ ### ✅ / ❌ Pass / Fail:
266
+
267
+ ---
268
+
269
+ ## Test 11: Mobile Responsiveness
270
+
271
+ **Goal**: Verify linkitylinks work on mobile devices
272
+
273
+ ### Steps:
274
+
275
+ **Option A - Real Mobile Device**:
276
+ 1. Open a tapestry URL on your phone
277
+ 2. Check layout and functionality
278
+
279
+ **Option B - Desktop Browser DevTools**:
280
+ 1. Open a tapestry URL
281
+ 2. Press F12 (open DevTools)
282
+ 3. Press Ctrl+Shift+M (toggle device toolbar)
283
+ 4. Select "iPhone 12" or "Pixel 5" from dropdown
284
+ 5. Refresh page
285
+
286
+ ### What You Should See:
287
+ - [ ] SVG scales to fit mobile screen
288
+ - [ ] No horizontal scrolling
289
+ - [ ] All links are tappable
290
+ - [ ] Social icons visible and tappable
291
+ - [ ] Text is readable (not too small)
292
+ - [ ] Gradient background fills screen
293
+ - [ ] Spacing looks good (not cramped)
294
+
295
+ ### ✅ / ❌ Pass / Fail:
296
+
297
+ ---
298
+
299
+ ## Test 12: Different Link Counts (Templates)
300
+
301
+ **Goal**: Verify correct templates render based on link count
302
+
303
+ ### Test 12a: Compact Template (1-6 links)
304
+ 1. Create linkitylink with 3 links
305
+ 2. View the tapestry
306
+
307
+ **Expected**: Large vertical cards, full width, plenty of spacing
308
+
309
+ ### Test 12b: Grid Template (7-13 links)
310
+ 1. Create linkitylink with 10 links
311
+ 2. View the tapestry
312
+
313
+ **Expected**: 2-column grid layout, smaller cards
314
+
315
+ ### Test 12c: Dense Template (14-20 links)
316
+ 1. Create linkitylink with 16 links
317
+ 2. View the tapestry
318
+
319
+ **Expected**: 3-column grid layout, more compact cards
320
+
321
+ ### ✅ / ❌ Pass / Fail:
322
+
323
+ ---
324
+
325
+ ## Test Summary
326
+
327
+ | Test | Feature | Pass / Fail | Notes |
328
+ |------|---------|-------------|-------|
329
+ | 1 | Landing Page | ⬜ | |
330
+ | 2 | Import from Linktree | ⬜ | |
331
+ | 3 | Add Links Manually | ⬜ | |
332
+ | 4 | Template Selection | ⬜ | |
333
+ | 5 | Web Purchase (Stripe) | ⬜ | Use test card 4242... |
334
+ | 6 | App Purchase Flow | ⬜ | UI only (app needed for full test) |
335
+ | 7 | Emojicode URL | ⬜ | |
336
+ | 8 | Alphanumeric URL | ⬜ | |
337
+ | 9 | Click Links | ⬜ | |
338
+ | 10 | Social Icons | ⬜ | |
339
+ | 11 | Mobile | ⬜ | |
340
+ | 12 | Templates | ⬜ | |
341
+
342
+ ---
343
+
344
+ ## Stripe Test Cards
345
+
346
+ For testing purchases:
347
+
348
+ **Success**:
349
+ - `4242 4242 4242 4242` - Visa (always succeeds)
350
+ - Any future expiration date (e.g., `12/25`)
351
+ - Any 3-digit CVC (e.g., `123`)
352
+ - Any postal code (e.g., `12345`)
353
+
354
+ **Failure** (to test error handling):
355
+ - `4000 0000 0000 0002` - Card declined
356
+ - `4000 0000 0000 9995` - Insufficient funds
357
+
358
+ ---
359
+
360
+ ## Common Issues & Troubleshooting
361
+
362
+ ### Issue: Import button says "Failed to import links"
363
+ **Solution**:
364
+ - Check that the URL is a valid Linktree URL (`linktr.ee/username`)
365
+ - Check browser console (F12) for errors
366
+ - Try a different Linktree URL
367
+
368
+ ### Issue: Social icons don't appear
369
+ **Cause**: Links need to be marked as social (happens automatically with Linktree import)
370
+
371
+ **For manual entry**: Social detection is automatic based on URL. Links with domains like `instagram.com`, `youtube.com`, `tiktok.com`, etc. should be auto-detected.
372
+
373
+ ### Issue: Payment modal doesn't open
374
+ **Solution**:
375
+ - Check that you've added at least 1 link
376
+ - Check browser console for JavaScript errors
377
+ - Make sure you're on HTTPS (Stripe requires HTTPS)
378
+
379
+ ### Issue: Tapestry shows landing page
380
+ **Cause**: Using wrong URL format
381
+
382
+ **Fix**: Use the new URL formats:
383
+ - ✅ Correct: `https://dev.linkityl.ink/view/💚🌍🔑💎`
384
+ - ❌ Old format: `https://dev.linkityl.ink/?emojicode=💚🌍🔑💎`
385
+
386
+ ---
387
+
388
+ ## Success Checklist
389
+
390
+ Before marking Linkitylink as production-ready:
391
+
392
+ - [ ] All 12 tests pass
393
+ - [ ] Landing page loads
394
+ - [ ] Linktree import works
395
+ - [ ] Manual link entry works
396
+ - [ ] Templates display and update preview
397
+ - [ ] Stripe payment succeeds with test card
398
+ - [ ] App handoff modal shows color sequence
399
+ - [ ] Both URL formats work (emojicode and alphanumeric)
400
+ - [ ] Links are clickable
401
+ - [ ] Social icons render correctly
402
+ - [ ] Mobile responsive
403
+ - [ ] Different templates render based on link count
404
+ - [ ] No console errors
405
+
406
+ ---
407
+
408
+ ## Questions or Issues?
409
+
410
+ If you encounter problems:
411
+
412
+ 1. **Check browser console** (F12 → Console tab) for errors
413
+ 2. **Check network tab** (F12 → Network tab) for failed requests
414
+ 3. **Try incognito/private mode** to rule out browser extensions
415
+ 4. **Test on different browser** (Chrome vs Firefox vs Safari)
416
+ 5. **Check server logs** if you have access
417
+
418
+ ---
419
+
420
+ Last Updated: December 2025 - Reflects new `/view/:emojicode` URL format and lightweight Linktree import (no Playwright needed)
@@ -0,0 +1,14 @@
1
+ version: '3.8'
2
+
3
+ services:
4
+ linkitylink:
5
+ build:
6
+ context: .
7
+ dockerfile: Dockerfile.local
8
+ container_name: linkitylink
9
+ ports:
10
+ - "3010:3010"
11
+ environment:
12
+ - PORT=3010
13
+ - BDO_BASE_URL=http://localhost:3003
14
+ restart: unless-stopped