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.
- package/CLAUDE.md +238 -0
- package/Dockerfile +20 -0
- package/Dockerfile.local +24 -0
- package/LICENSE +674 -0
- package/MANUAL-TESTING.md +399 -0
- package/README.md +119 -0
- package/TEMPLATE-FEDERATION-GO-LIVE.md +269 -0
- package/USER-TESTING-GUIDE.md +420 -0
- package/docker-compose.standalone.yml +14 -0
- package/docker-compose.yml +42 -0
- package/lib/app-handoff.js +315 -0
- package/lib/relevant-bdos-middleware.js +381 -0
- package/package.json +33 -0
- package/public/create.html +1468 -0
- package/public/index.html +117 -0
- package/public/moderate.html +465 -0
- package/public/my-tapestries.html +351 -0
- package/public/relevant-bdos.js +267 -0
- package/public/styles.css +1004 -0
- package/server.js +2914 -0
|
@@ -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)
|