tailprint 0.0.0-stage → 1.0.0

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.
Files changed (87) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +160 -2
  3. package/dist/config/env.d.ts +77 -0
  4. package/dist/config/env.js +38 -0
  5. package/dist/config/env.js.map +1 -0
  6. package/dist/config/plans.d.ts +15 -0
  7. package/dist/config/plans.js +104 -0
  8. package/dist/config/plans.js.map +1 -0
  9. package/dist/config/templates.d.ts +10 -0
  10. package/dist/config/templates.js +746 -0
  11. package/dist/config/templates.js.map +1 -0
  12. package/dist/mcp/server.d.ts +10 -0
  13. package/dist/mcp/server.js +897 -0
  14. package/dist/mcp/server.js.map +1 -0
  15. package/dist/mcp/stdio.d.ts +2 -0
  16. package/dist/mcp/stdio.js +27 -0
  17. package/dist/mcp/stdio.js.map +1 -0
  18. package/dist/routes/dashboard.d.ts +2 -0
  19. package/dist/routes/dashboard.js +454 -0
  20. package/dist/routes/dashboard.js.map +1 -0
  21. package/dist/routes/mcp.d.ts +2 -0
  22. package/dist/routes/mcp.js +329 -0
  23. package/dist/routes/mcp.js.map +1 -0
  24. package/dist/routes/render.d.ts +2 -0
  25. package/dist/routes/render.js +444 -0
  26. package/dist/routes/render.js.map +1 -0
  27. package/dist/routes/scrape.d.ts +2 -0
  28. package/dist/routes/scrape.js +132 -0
  29. package/dist/routes/scrape.js.map +1 -0
  30. package/dist/routes/templates.d.ts +2 -0
  31. package/dist/routes/templates.js +2449 -0
  32. package/dist/routes/templates.js.map +1 -0
  33. package/dist/routes/usage.d.ts +31 -0
  34. package/dist/routes/usage.js +73 -0
  35. package/dist/routes/usage.js.map +1 -0
  36. package/dist/routes/webhooks.d.ts +2 -0
  37. package/dist/routes/webhooks.js +227 -0
  38. package/dist/routes/webhooks.js.map +1 -0
  39. package/dist/schemas/render.d.ts +422 -0
  40. package/dist/schemas/render.js +91 -0
  41. package/dist/schemas/render.js.map +1 -0
  42. package/dist/schemas/scrape.d.ts +65 -0
  43. package/dist/schemas/scrape.js +24 -0
  44. package/dist/schemas/scrape.js.map +1 -0
  45. package/dist/server.d.ts +2 -0
  46. package/dist/server.js +206 -0
  47. package/dist/server.js.map +1 -0
  48. package/dist/services/browser.d.ts +21 -0
  49. package/dist/services/browser.js +299 -0
  50. package/dist/services/browser.js.map +1 -0
  51. package/dist/services/carousel.d.ts +43 -0
  52. package/dist/services/carousel.js +300 -0
  53. package/dist/services/carousel.js.map +1 -0
  54. package/dist/services/chart.d.ts +29 -0
  55. package/dist/services/chart.js +129 -0
  56. package/dist/services/chart.js.map +1 -0
  57. package/dist/services/eInvoice.d.ts +62 -0
  58. package/dist/services/eInvoice.js +413 -0
  59. package/dist/services/eInvoice.js.map +1 -0
  60. package/dist/services/email.d.ts +24 -0
  61. package/dist/services/email.js +177 -0
  62. package/dist/services/email.js.map +1 -0
  63. package/dist/services/mockup.d.ts +14 -0
  64. package/dist/services/mockup.js +130 -0
  65. package/dist/services/mockup.js.map +1 -0
  66. package/dist/services/pdfStamper.d.ts +16 -0
  67. package/dist/services/pdfStamper.js +47 -0
  68. package/dist/services/pdfStamper.js.map +1 -0
  69. package/dist/services/qr.d.ts +20 -0
  70. package/dist/services/qr.js +44 -0
  71. package/dist/services/qr.js.map +1 -0
  72. package/dist/services/redis.d.ts +65 -0
  73. package/dist/services/redis.js +318 -0
  74. package/dist/services/redis.js.map +1 -0
  75. package/dist/services/scraper.d.ts +16 -0
  76. package/dist/services/scraper.js +138 -0
  77. package/dist/services/scraper.js.map +1 -0
  78. package/dist/services/storage.d.ts +38 -0
  79. package/dist/services/storage.js +123 -0
  80. package/dist/services/storage.js.map +1 -0
  81. package/dist/services/stripe.d.ts +32 -0
  82. package/dist/services/stripe.js +229 -0
  83. package/dist/services/stripe.js.map +1 -0
  84. package/dist/services/visualDiff.d.ts +33 -0
  85. package/dist/services/visualDiff.js +218 -0
  86. package/dist/services/visualDiff.js.map +1 -0
  87. package/package.json +74 -4
@@ -0,0 +1 @@
1
+ {"version":3,"file":"server.js","sourceRoot":"","sources":["../../src/mcp/server.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ #!/usr/bin/env node
2
+ export {};
@@ -0,0 +1,27 @@
1
+ #!/usr/bin/env node
2
+ import { StdioServerTransport } from '@modelcontextprotocol/sdk/server/stdio.js';
3
+ import { createMcpServer } from './server.js';
4
+ import { browserService } from '../services/browser.js';
5
+ async function main() {
6
+ const server = createMcpServer({
7
+ name: 'tailprint-mcp-cli',
8
+ version: '1.0.0',
9
+ });
10
+ const transport = new StdioServerTransport();
11
+ // Handle graceful cleanup
12
+ const cleanup = async () => {
13
+ try {
14
+ await browserService.close();
15
+ }
16
+ catch { }
17
+ process.exit(0);
18
+ };
19
+ process.on('SIGINT', cleanup);
20
+ process.on('SIGTERM', cleanup);
21
+ await server.connect(transport);
22
+ }
23
+ main().catch((err) => {
24
+ console.error('Tailprint MCP fatal error:', err);
25
+ process.exit(1);
26
+ });
27
+ //# sourceMappingURL=stdio.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"stdio.js","sourceRoot":"","sources":["../../src/mcp/stdio.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,oBAAoB,EAAE,MAAM,2CAA2C,CAAC;AACjF,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAC9C,OAAO,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAExD,KAAK,UAAU,IAAI;IACjB,MAAM,MAAM,GAAG,eAAe,CAAC;QAC7B,IAAI,EAAE,mBAAmB;QACzB,OAAO,EAAE,OAAO;KACjB,CAAC,CAAC;IAEH,MAAM,SAAS,GAAG,IAAI,oBAAoB,EAAE,CAAC;IAE7C,0BAA0B;IAC1B,MAAM,OAAO,GAAG,KAAK,IAAI,EAAE;QACzB,IAAI,CAAC;YACH,MAAM,cAAc,CAAC,KAAK,EAAE,CAAC;QAC/B,CAAC;QAAC,MAAM,CAAC,CAAA,CAAC;QACV,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC,CAAC;IAEF,OAAO,CAAC,EAAE,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;IAC9B,OAAO,CAAC,EAAE,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;IAE/B,MAAM,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;AAClC,CAAC;AAED,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE;IACnB,OAAO,CAAC,KAAK,CAAC,4BAA4B,EAAE,GAAG,CAAC,CAAC;IACjD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC,CAAC,CAAC"}
@@ -0,0 +1,2 @@
1
+ import type { FastifyPluginAsyncZod } from 'fastify-type-provider-zod';
2
+ export declare const dashboardRoutes: FastifyPluginAsyncZod;
@@ -0,0 +1,454 @@
1
+ export const dashboardRoutes = async (fastify) => {
2
+ fastify.get('/dashboard', {
3
+ schema: {
4
+ hide: true,
5
+ },
6
+ }, async (_request, reply) => {
7
+ const html = `<!DOCTYPE html>
8
+ <html lang="en" class="dark scroll-smooth">
9
+ <head>
10
+ <meta charset="utf-8" />
11
+ <meta name="viewport" content="width=device-width, initial-scale=1.0" />
12
+ <title>Customer Dashboard - Tailprint</title>
13
+ <link rel="icon" type="image/svg+xml" href="data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 32 32' fill='none'%3E%3Crect width='32' height='32' rx='8' fill='%23090d16'/%3E%3Cpath d='M11 9L6 16l5 7' stroke='%23818cf8' stroke-width='2.75' stroke-linecap='round' stroke-linejoin='round'/%3E%3Cpath d='M21 9l5 7-5 7' stroke='%23f472b6' stroke-width='2.75' stroke-linecap='round' stroke-linejoin='round'/%3E%3Cline x1='18' y1='8' x2='14' y2='24' stroke='%2338bdf8' stroke-width='2.5' stroke-linecap='round'/%3E%3Ccircle cx='16' cy='16' r='1.5' fill='%23f43f5e'/%3E%3C/svg%3E" />
14
+ <script>
15
+ const _warn = console.warn;
16
+ console.warn = function(...args) {
17
+ if (args[0] && typeof args[0] === 'string' && args[0].includes('cdn.tailwindcss.com')) return;
18
+ _warn.apply(console, args);
19
+ };
20
+ </script>
21
+ <script src="https://cdn.tailwindcss.com"></script>
22
+ <script>
23
+ tailwind.config = {
24
+ darkMode: 'class',
25
+ theme: {
26
+ extend: {
27
+ colors: {
28
+ brand: {
29
+ 50: '#eef2ff',
30
+ 500: '#6366f1',
31
+ 600: '#4f46e5',
32
+ 700: '#4338ca',
33
+ }
34
+ }
35
+ }
36
+ }
37
+ }
38
+ </script>
39
+ </head>
40
+ <body class="bg-slate-950 text-slate-100 min-h-screen selection:bg-indigo-500 selection:text-white flex flex-col justify-between">
41
+
42
+ <!-- Header -->
43
+ <header class="border-b border-slate-800/80 bg-slate-950/85 backdrop-blur-md sticky top-0 z-40">
44
+ <div class="max-w-6xl mx-auto px-6 h-16 flex items-center justify-between">
45
+ <div class="flex items-center space-x-3">
46
+ <a href="/" class="flex items-center group transition hover:opacity-90">
47
+ <span class="font-extrabold text-2xl tracking-tight text-white flex items-center">
48
+ <span class="text-indigo-400 font-mono font-bold mr-1">&lt;</span>tail<span class="bg-gradient-to-r from-purple-400 to-pink-400 bg-clip-text text-transparent">print</span><span class="text-pink-400 font-mono font-bold ml-1">/&gt;</span>
49
+ </span>
50
+ </a>
51
+ <span class="text-slate-600 font-mono text-sm">/</span>
52
+ <span class="text-xs font-semibold text-slate-400 uppercase tracking-wider mono">Customer Portal</span>
53
+ </div>
54
+
55
+ <nav class="flex items-center space-x-3 text-xs font-semibold">
56
+ <a href="/#playground" class="hidden sm:inline-flex items-center px-3 py-1.5 rounded-lg text-slate-400 hover:text-white hover:bg-slate-900 transition">
57
+ Live Sandbox
58
+ </a>
59
+ <a href="/docs" target="_blank" class="px-3 py-1.5 rounded-lg text-slate-400 hover:text-white hover:bg-slate-900 transition flex items-center space-x-1">
60
+ <span>API Reference</span>
61
+ <svg class="w-3 h-3 text-slate-500" fill="none" stroke="currentColor" viewBox="0 0 24 24"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M10 6H6a2 2 0 00-2 2v10a2 2 0 002 2h10a2 2 0 002-2v-4M14 4h6m0 0v6m0-6L10 14"/></svg>
62
+ </a>
63
+ <div class="h-4 w-px bg-slate-800"></div>
64
+ <button id="logout-btn" onclick="logout()" class="hidden px-3 py-1.5 rounded-lg bg-slate-900 border border-slate-800 text-slate-400 hover:text-rose-400 transition">
65
+ Switch Key
66
+ </button>
67
+ <a href="/" class="px-3 py-1.5 rounded-lg bg-slate-900/80 border border-slate-800 text-slate-300 hover:text-white transition">
68
+ Main Site →
69
+ </a>
70
+ </nav>
71
+ </div>
72
+ </header>
73
+
74
+ <!-- Main Container -->
75
+ <main class="max-w-6xl mx-auto px-6 py-12 flex-1 w-full">
76
+
77
+ <!-- Notification Banner -->
78
+ <div id="welcome-banner" class="hidden mb-8 p-4 rounded-2xl bg-emerald-950/40 border border-emerald-500/30 flex items-center justify-between text-xs text-emerald-300">
79
+ <div class="flex items-center space-x-3">
80
+ <span class="text-xl">🎉</span>
81
+ <div>
82
+ <span class="font-bold text-sm text-emerald-200">Payment Confirmed!</span>
83
+ <p class="text-slate-300 mt-0.5">Your subscription is active and your live API key is ready below.</p>
84
+ </div>
85
+ </div>
86
+ <button onclick="document.getElementById('welcome-banner').classList.add('hidden')" class="text-slate-400 hover:text-white">✕</button>
87
+ </div>
88
+
89
+ <!-- Login View (When no API key is active) -->
90
+ <div id="login-view" class="max-w-md mx-auto py-12 text-center">
91
+ <div class="w-16 h-16 rounded-2xl bg-indigo-950/60 border border-indigo-800/50 text-indigo-400 flex items-center justify-center mx-auto text-2xl mb-6 shadow-xl shadow-indigo-600/10">
92
+ 🔑
93
+ </div>
94
+ <h2 class="text-2xl font-black text-white">Access Your Dashboard</h2>
95
+ <p class="text-xs text-slate-400 mt-2 leading-relaxed">
96
+ Enter your live API key (<code class="text-indigo-300">sec_live_...</code>) from your Stripe purchase to view real-time usage metrics and manage your plan.
97
+ </p>
98
+
99
+ <form onsubmit="handleLogin(event)" class="mt-8 space-y-4">
100
+ <div>
101
+ <input
102
+ id="key-input"
103
+ type="text"
104
+ required
105
+ placeholder="sec_live_abcdef123456..."
106
+ class="w-full px-4 py-3 rounded-xl bg-slate-900 border border-slate-800 text-white font-mono text-xs focus:outline-none focus:border-indigo-500 transition shadow-inner"
107
+ />
108
+ </div>
109
+ <button
110
+ type="submit"
111
+ class="w-full py-3 rounded-xl bg-indigo-600 hover:bg-indigo-500 text-white font-bold text-xs transition shadow-lg shadow-indigo-600/30"
112
+ >
113
+ View Live Dashboard ➔
114
+ </button>
115
+ <p id="login-error" class="text-xs text-rose-400 hidden"></p>
116
+ </form>
117
+
118
+ <div class="mt-8 pt-8 border-t border-slate-900 text-xs text-slate-500">
119
+ Don't have an API key yet? <a href="/#pricing" class="text-indigo-400 hover:underline">Choose a Plan ($14/mo)</a>
120
+ </div>
121
+ </div>
122
+
123
+ <!-- Active Dashboard View -->
124
+ <div id="dashboard-view" class="hidden space-y-8">
125
+
126
+ <!-- Top Row: Plan & API Key Cards -->
127
+ <div class="grid grid-cols-1 md:grid-cols-3 gap-6">
128
+
129
+ <!-- Card 1: Subscription Tier -->
130
+ <div class="p-6 rounded-2xl bg-slate-900/80 border border-slate-800 flex flex-col justify-between shadow-xl">
131
+ <div>
132
+ <div class="flex items-center justify-between">
133
+ <span class="text-xs font-bold text-slate-400 uppercase tracking-wider">Active Plan</span>
134
+ <span id="plan-status-badge" class="px-2.5 py-0.5 rounded-full text-[11px] font-bold bg-emerald-950/80 text-emerald-400 border border-emerald-500/30">
135
+ ● ACTIVE
136
+ </span>
137
+ </div>
138
+ <h3 id="plan-name" class="text-2xl font-black text-white capitalize mt-3">Pro Tier</h3>
139
+ <p id="plan-limit" class="text-xs text-slate-400 mt-1">20,000 renders / month</p>
140
+ </div>
141
+ <button
142
+ onclick="openStripePortal()"
143
+ id="portal-btn"
144
+ class="mt-6 w-full py-2.5 rounded-xl bg-slate-800 hover:bg-slate-700 text-white font-semibold text-xs transition flex items-center justify-center space-x-2 border border-slate-700/60"
145
+ >
146
+ <span>💳 Manage Subscription & VAT</span>
147
+ </button>
148
+ </div>
149
+
150
+ <!-- Card 2: Quota & Usage Meter -->
151
+ <div class="p-6 rounded-2xl bg-slate-900/80 border border-slate-800 flex flex-col justify-between shadow-xl">
152
+ <div>
153
+ <div class="flex items-center justify-between">
154
+ <span class="text-xs font-bold text-slate-400 uppercase tracking-wider">Monthly Usage</span>
155
+ <span id="usage-percent" class="text-xs font-bold text-indigo-400">0.0%</span>
156
+ </div>
157
+ <div class="mt-3 flex items-baseline space-x-2">
158
+ <span id="usage-current" class="text-2xl font-black text-white">0</span>
159
+ <span id="usage-total" class="text-xs text-slate-400">/ 20,000 renders</span>
160
+ </div>
161
+
162
+ <!-- Progress Bar -->
163
+ <div class="w-full h-2 rounded-full bg-slate-950 mt-4 overflow-hidden border border-slate-800">
164
+ <div id="usage-progress-bar" class="h-full bg-gradient-to-r from-indigo-500 to-emerald-400 rounded-full transition-all duration-500" style="width: 2%"></div>
165
+ </div>
166
+ </div>
167
+ <div class="mt-6 flex justify-between text-[11px] text-slate-500">
168
+ <span>Remaining: <strong id="usage-remaining" class="text-slate-300">20,000</strong></span>
169
+ <span>Renews: <strong id="usage-resets" class="text-slate-300">1st of next month</strong></span>
170
+ </div>
171
+ </div>
172
+
173
+ <!-- Card 3: Live API Key -->
174
+ <div class="p-6 rounded-2xl bg-slate-900/80 border border-slate-800 flex flex-col justify-between shadow-xl">
175
+ <div>
176
+ <div class="flex items-center justify-between">
177
+ <span class="text-xs font-bold text-slate-400 uppercase tracking-wider">Your API Key</span>
178
+ <button onclick="toggleKeyVisibility()" id="toggle-key-btn" class="text-[11px] text-slate-400 hover:text-white">
179
+ Show
180
+ </button>
181
+ </div>
182
+ <div class="mt-3 p-3 rounded-xl bg-slate-950 border border-slate-800 text-xs font-mono text-emerald-300 break-all select-all">
183
+ <span id="masked-key">sec_live_••••••••••••</span>
184
+ </div>
185
+ </div>
186
+ <button
187
+ onclick="copyActiveKey()"
188
+ id="copy-key-btn"
189
+ class="mt-6 w-full py-2.5 rounded-xl bg-indigo-600 hover:bg-indigo-500 text-white font-bold text-xs transition shadow-md shadow-indigo-600/30 flex items-center justify-center space-x-1.5"
190
+ >
191
+ <span>📋 Copy API Key</span>
192
+ </button>
193
+ </div>
194
+
195
+ </div>
196
+
197
+ <!-- Quickstart Code Section -->
198
+ <div class="p-6 rounded-2xl bg-slate-900/80 border border-slate-800 shadow-xl space-y-4">
199
+ <div class="flex items-center justify-between pb-3 border-b border-slate-800">
200
+ <div>
201
+ <h4 class="text-sm font-bold text-white">Your Ready-to-Run Code Snippet</h4>
202
+ <p class="text-xs text-slate-400 mt-0.5">Your actual API key is pre-injected into the snippet below.</p>
203
+ </div>
204
+ <div class="flex space-x-2">
205
+ <button onclick="switchSnippet('curl')" id="btn-snip-curl" class="px-3 py-1.5 rounded-lg text-xs font-semibold bg-indigo-600 text-white">cURL</button>
206
+ <button onclick="switchSnippet('node')" id="btn-snip-node" class="px-3 py-1.5 rounded-lg text-xs font-semibold bg-slate-800 text-slate-400 hover:text-white">Node.js</button>
207
+ <button onclick="switchSnippet('python')" id="btn-snip-python" class="px-3 py-1.5 rounded-lg text-xs font-semibold bg-slate-800 text-slate-400 hover:text-white">Python</button>
208
+ <button onclick="switchSnippet('mcp')" id="btn-snip-mcp" class="px-3 py-1.5 rounded-lg text-xs font-semibold bg-slate-800 text-purple-400 hover:text-purple-300 border border-purple-500/30">MCP (Claude &amp; Cursor)</button>
209
+ </div>
210
+ </div>
211
+
212
+ <pre id="code-snippet-box" class="p-4 rounded-xl bg-slate-950 font-mono text-xs text-slate-300 overflow-x-auto border border-slate-800/80 leading-relaxed"></pre>
213
+ </div>
214
+
215
+ </div>
216
+
217
+ </main>
218
+
219
+ <!-- Footer -->
220
+ <footer class="py-8 border-t border-slate-900 bg-slate-950 text-center text-xs text-slate-500">
221
+ <p>© 2026 Tailprint (tailprint.com). Powered by Fastify, Playwright, Upstash Redis & Stripe.</p>
222
+ </footer>
223
+
224
+ <!-- Script for Dashboard Logic -->
225
+ <script>
226
+ let activeApiKey = '';
227
+ let isKeyVisible = false;
228
+
229
+ // Check query params for Checkout return
230
+ (async function init() {
231
+ const urlParams = new URLSearchParams(window.location.search);
232
+ const isSuccess = urlParams.get('checkout_success') === 'true';
233
+ const sessionId = urlParams.get('session_id');
234
+
235
+ if (isSuccess && sessionId) {
236
+ document.getElementById('welcome-banner').classList.remove('hidden');
237
+ window.history.replaceState({}, document.title, window.location.pathname);
238
+
239
+ // Poll for session key
240
+ let attempts = 0;
241
+ while (attempts < 15) {
242
+ try {
243
+ const res = await fetch('/v1/billing/session-key?session_id=' + encodeURIComponent(sessionId));
244
+ const data = await res.json();
245
+ if (data.status === 'ready' && data.apiKey) {
246
+ localStorage.setItem('tailprint_api_key', data.apiKey);
247
+ loadDashboard(data.apiKey);
248
+ return;
249
+ }
250
+ } catch {}
251
+ attempts++;
252
+ await new Promise((r) => setTimeout(r, 1200));
253
+ }
254
+ }
255
+
256
+ const storedKey = localStorage.getItem('tailprint_api_key');
257
+ if (storedKey) {
258
+ loadDashboard(storedKey);
259
+ }
260
+ })();
261
+
262
+ async function handleLogin(e) {
263
+ e.preventDefault();
264
+ const input = document.getElementById('key-input');
265
+ const errEl = document.getElementById('login-error');
266
+ const key = input.value.trim();
267
+
268
+ errEl.classList.add('hidden');
269
+ const success = await loadDashboard(key);
270
+ if (success) {
271
+ localStorage.setItem('tailprint_api_key', key);
272
+ } else {
273
+ errEl.innerText = 'Invalid API key or network error. Please try again.';
274
+ errEl.classList.remove('hidden');
275
+ }
276
+ }
277
+
278
+ async function loadDashboard(apiKey) {
279
+ try {
280
+ const res = await fetch('/v1/usage', {
281
+ headers: { 'Authorization': 'Bearer ' + apiKey }
282
+ });
283
+
284
+ if (!res.ok) return false;
285
+
286
+ const data = await res.json();
287
+ activeApiKey = apiKey;
288
+
289
+ // Populate Dashboard UI
290
+ document.getElementById('plan-name').innerText = data.plan + ' tier';
291
+ document.getElementById('plan-limit').innerText = Number(data.monthly_limit).toLocaleString() + ' renders / month';
292
+ document.getElementById('usage-current').innerText = Number(data.current_usage).toLocaleString();
293
+ document.getElementById('usage-total').innerText = '/ ' + Number(data.monthly_limit).toLocaleString() + ' renders';
294
+ document.getElementById('usage-percent').innerText = data.percent_used;
295
+ document.getElementById('usage-remaining').innerText = Number(data.remaining).toLocaleString();
296
+
297
+ const resetDate = new Date(data.resets_at);
298
+ document.getElementById('usage-resets').innerText = resetDate.toLocaleDateString('en-US', { month: 'short', day: 'numeric' });
299
+
300
+ const bar = document.getElementById('usage-progress-bar');
301
+ const pctNum = parseFloat(data.percent_used) || 0;
302
+ bar.style.width = Math.max(2, Math.min(100, pctNum)) + '%';
303
+
304
+ updateMaskedKey();
305
+ updateSnippet('curl');
306
+
307
+ document.getElementById('login-view').classList.add('hidden');
308
+ document.getElementById('dashboard-view').classList.remove('hidden');
309
+ document.getElementById('logout-btn').classList.remove('hidden');
310
+
311
+ return true;
312
+ } catch (err) {
313
+ return false;
314
+ }
315
+ }
316
+
317
+ function updateMaskedKey() {
318
+ const el = document.getElementById('masked-key');
319
+ if (isKeyVisible) {
320
+ el.innerText = activeApiKey;
321
+ } else {
322
+ el.innerText = activeApiKey.slice(0, 10) + '••••••••••••' + activeApiKey.slice(-4);
323
+ }
324
+ }
325
+
326
+ window.toggleKeyVisibility = function() {
327
+ isKeyVisible = !isKeyVisible;
328
+ document.getElementById('toggle-key-btn').innerText = isKeyVisible ? 'Hide' : 'Show';
329
+ updateMaskedKey();
330
+ };
331
+
332
+ window.copyActiveKey = function() {
333
+ if (!activeApiKey) return;
334
+ navigator.clipboard.writeText(activeApiKey).then(() => {
335
+ const btn = document.getElementById('copy-key-btn');
336
+ btn.innerHTML = '<span>✅ Copied!</span>';
337
+ setTimeout(() => { btn.innerHTML = '<span>📋 Copy API Key</span>'; }, 2000);
338
+ });
339
+ };
340
+
341
+ window.logout = function() {
342
+ localStorage.removeItem('tailprint_api_key');
343
+ activeApiKey = '';
344
+ document.getElementById('dashboard-view').classList.add('hidden');
345
+ document.getElementById('logout-btn').classList.add('hidden');
346
+ document.getElementById('login-view').classList.remove('hidden');
347
+ };
348
+
349
+ window.openStripePortal = async function() {
350
+ const btn = document.getElementById('portal-btn');
351
+ btn.innerText = 'Opening Stripe Portal...';
352
+ try {
353
+ const res = await fetch('/v1/billing/portal', {
354
+ method: 'POST',
355
+ headers: { 'Authorization': 'Bearer ' + activeApiKey }
356
+ });
357
+ const data = await res.json();
358
+ if (data.url) {
359
+ window.location.href = data.url;
360
+ } else {
361
+ alert('Could not access portal: ' + (data.message || 'Unknown error'));
362
+ }
363
+ } catch (err) {
364
+ alert('Failed to connect to Stripe: ' + err.message);
365
+ } finally {
366
+ btn.innerText = '💳 Manage Subscription & VAT';
367
+ }
368
+ };
369
+
370
+ let currentSnippetType = 'curl';
371
+ window.switchSnippet = function(type) {
372
+ currentSnippetType = type;
373
+ ['curl', 'node', 'python', 'mcp'].forEach(t => {
374
+ const btn = document.getElementById('btn-snip-' + t);
375
+ if (!btn) return;
376
+ if (t === type) {
377
+ btn.className = 'px-3 py-1.5 rounded-lg text-xs font-semibold bg-indigo-600 text-white';
378
+ } else if (t === 'mcp') {
379
+ btn.className = 'px-3 py-1.5 rounded-lg text-xs font-semibold bg-slate-800 text-purple-400 hover:text-purple-300 border border-purple-500/30';
380
+ } else {
381
+ btn.className = 'px-3 py-1.5 rounded-lg text-xs font-semibold bg-slate-800 text-slate-400 hover:text-white';
382
+ }
383
+ });
384
+ updateSnippet(type);
385
+ };
386
+
387
+ function updateSnippet(type) {
388
+ const box = document.getElementById('code-snippet-box');
389
+ const origin = window.location.origin;
390
+ const key = activeApiKey || 'sec_live_abcdef123456...';
391
+
392
+ if (type === 'curl') {
393
+ const payload = JSON.stringify({ html: '<div class="p-12 text-2xl font-bold text-indigo-600">Invoice from Tailprint</div>' });
394
+ box.textContent = [
395
+ 'curl -X POST ' + origin + '/v1/render/pdf \\\\',
396
+ ' -H "Authorization: Bearer ' + key + '" \\\\',
397
+ ' -H "Content-Type: application/json" \\\\',
398
+ " -d '" + payload + "' \\\\",
399
+ ' --output invoice.pdf'
400
+ ].join('\\n');
401
+ } else if (type === 'node') {
402
+ box.textContent = [
403
+ 'const response = await fetch("' + origin + '/v1/render/pdf", {',
404
+ ' method: "POST",',
405
+ ' headers: {',
406
+ ' "Authorization": "Bearer ' + key + '",',
407
+ ' "Content-Type": "application/json"',
408
+ ' },',
409
+ ' body: JSON.stringify({',
410
+ ' html: \\'<div class="p-8 text-xl font-bold">Hello Tailprint</div>\\'',
411
+ ' })',
412
+ '});',
413
+ 'const pdfBuffer = await response.arrayBuffer();'
414
+ ].join('\\n');
415
+ } else if (type === 'python') {
416
+ box.textContent = [
417
+ 'import requests',
418
+ '',
419
+ 'url = "' + origin + '/v1/render/pdf"',
420
+ 'headers = {',
421
+ ' "Authorization": "Bearer ' + key + '",',
422
+ ' "Content-Type": "application/json"',
423
+ '}',
424
+ 'payload = {"html": "<h1 class=\\'text-3xl font-bold\\'>Hello Tailprint</h1>"}',
425
+ '',
426
+ 'response = requests.post(url, json=payload, headers=headers)',
427
+ 'with open("document.pdf", "wb") as f:',
428
+ ' f.write(response.content)'
429
+ ].join('\\n');
430
+ } else if (type === 'mcp') {
431
+ const mcpConfig = {
432
+ mcpServers: {
433
+ tailprint: {
434
+ url: origin + '/v1/mcp/sse?api_key=' + key
435
+ }
436
+ }
437
+ };
438
+ box.textContent = [
439
+ '// Claude Desktop Configuration (claude_desktop_config.json) or Cursor Remote MCP:',
440
+ JSON.stringify(mcpConfig, null, 2),
441
+ '',
442
+ '// Available Tools: scrape_markdown, render_pdf, render_image, render_template, list_templates',
443
+ '// Available Resources: tailprint://templates/catalog, tailprint://docs/tailwind-guide',
444
+ '// Available Prompts: generate_invoice, summarize_url_to_pdf, create_social_card'
445
+ ].join('\\n');
446
+ }
447
+ }
448
+ </script>
449
+ </body>
450
+ </html>`;
451
+ return reply.code(200).header('Content-Type', 'text/html; charset=utf-8').send(html);
452
+ });
453
+ };
454
+ //# sourceMappingURL=dashboard.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dashboard.js","sourceRoot":"","sources":["../../src/routes/dashboard.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,eAAe,GAA0B,KAAK,EAAE,OAAO,EAAE,EAAE;IACtE,OAAO,CAAC,GAAG,CACT,YAAY,EACZ;QACE,MAAM,EAAE;YACN,IAAI,EAAE,IAAI;SACX;KACF,EACD,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,EAAE;QACxB,MAAM,IAAI,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;QA2bX,CAAC;QAEH,OAAO,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,cAAc,EAAE,0BAA0B,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACvF,CAAC,CACF,CAAC;AACJ,CAAC,CAAC"}
@@ -0,0 +1,2 @@
1
+ import type { FastifyPluginAsyncZod } from 'fastify-type-provider-zod';
2
+ export declare const mcpRoutes: FastifyPluginAsyncZod;