Skip to main content

max / makenotwork

24.8 KB · 868 lines History Blame Raw
1 <!DOCTYPE html>
2 <html lang="en">
3 <head>
4 <meta charset="UTF-8">
5 <meta name="viewport" content="width=device-width, initial-scale=1.0">
6 <title>Makenot.work — Pitch</title>
7 <style>
8 @import url('https://fonts.googleapis.com/css2?family=IBM+Plex+Mono:wght@400;600&family=Lato:wght@300;400;700&family=Young+Serif&display=swap');
9
10 :root {
11 --bg: #ede8e1;
12 --bg-warm: #e4ddd3;
13 --bg-deep: #d8cfc3;
14 --text: #3d3530;
15 --text-secondary: #5d524a;
16 --text-muted: #8a7e74;
17 --accent: #6c5ce7;
18 --accent-light: #8577ed;
19 --green: #4caf50;
20 --red: #d62828;
21 --border: #c9c0b4;
22 --border-dark: #a89d91;
23 }
24
25 * { margin: 0; padding: 0; box-sizing: border-box; }
26
27 @page { size: letter; margin: 0; }
28
29 body {
30 font-family: 'Lato', sans-serif;
31 color: var(--text);
32 background: var(--bg);
33 line-height: 1.6;
34 -webkit-print-color-adjust: exact;
35 print-color-adjust: exact;
36 }
37
38 .page {
39 width: 8.5in;
40 min-height: 11in;
41 margin: 0 auto;
42 padding: 0.5in 0.75in;
43 background: var(--bg);
44 page-break-after: always;
45 position: relative;
46 }
47
48 .page:last-child { page-break-after: auto; }
49
50 /* ── Hero ── */
51
52 .hero {
53 text-align: center;
54 padding: 0.25in 0 0.2in;
55 border-bottom: 2px solid var(--border);
56 margin-bottom: 0.2in;
57 }
58
59 .hero h1 {
60 font-family: 'Young Serif', serif;
61 font-size: 44px;
62 font-weight: 400;
63 color: var(--text);
64 margin-bottom: 4px;
65 letter-spacing: -0.5px;
66 }
67
68 .hero h1 .dot { color: var(--accent); }
69
70 .hero .tagline {
71 font-family: 'IBM Plex Mono', monospace;
72 font-size: 14px;
73 color: var(--text-secondary);
74 letter-spacing: 0.3px;
75 }
76
77 .hero .sub {
78 font-size: 12.5px;
79 color: var(--text-muted);
80 margin-top: 8px;
81 }
82
83 /* ── Sections ── */
84
85 h2 {
86 font-family: 'IBM Plex Mono', monospace;
87 font-size: 13.5px;
88 font-weight: 600;
89 text-transform: uppercase;
90 letter-spacing: 1.5px;
91 color: var(--accent);
92 margin-bottom: 10px;
93 padding-bottom: 4px;
94 border-bottom: 1px solid var(--border);
95 }
96
97 h3 {
98 font-family: 'IBM Plex Mono', monospace;
99 font-size: 12px;
100 font-weight: 600;
101 color: var(--text);
102 margin-bottom: 4px;
103 margin-top: 12px;
104 }
105
106 h3:first-child { margin-top: 0; }
107
108 .intro {
109 font-size: 14.5px;
110 line-height: 1.7;
111 margin-bottom: 0.2in;
112 }
113
114 /* ── Stats ── */
115
116 .stats {
117 display: grid;
118 grid-template-columns: repeat(4, 1fr);
119 gap: 10px;
120 margin-bottom: 0.2in;
121 }
122
123 .stat {
124 text-align: center;
125 background: var(--bg-warm);
126 border: 1px solid var(--border);
127 border-radius: 6px;
128 padding: 10px 6px;
129 }
130
131 .stat .num {
132 font-family: 'Young Serif', serif;
133 font-size: 26px;
134 color: var(--accent);
135 display: block;
136 line-height: 1;
137 margin-bottom: 3px;
138 }
139
140 .stat .label {
141 font-family: 'IBM Plex Mono', monospace;
142 font-size: 9px;
143 color: var(--text-muted);
144 text-transform: uppercase;
145 letter-spacing: 0.4px;
146 }
147
148 /* ── Feature grid ── */
149
150 .features {
151 display: grid;
152 grid-template-columns: 1fr 1fr;
153 gap: 12px;
154 margin-bottom: 0.18in;
155 }
156
157 .feature-card {
158 background: var(--bg-warm);
159 border: 1px solid var(--border);
160 border-radius: 6px;
161 padding: 11px 13px;
162 }
163
164 .feature-card h3 {
165 margin: 0 0 4px 0;
166 font-size: 11.5px;
167 color: var(--accent);
168 }
169
170 .feature-card ul { list-style: none; padding: 0; }
171
172 .feature-card li {
173 font-size: 11px;
174 line-height: 1.4;
175 color: var(--text-secondary);
176 padding: 1.5px 0 1.5px 12px;
177 position: relative;
178 }
179
180 .feature-card li::before {
181 content: '';
182 position: absolute;
183 left: 0;
184 top: 7px;
185 width: 5px;
186 height: 5px;
187 background: var(--accent);
188 border-radius: 50%;
189 }
190
191 /* ── Feature section (full width, 2-col) ── */
192
193 .feature-section { margin-bottom: 0.16in; }
194
195 .feature-section ul {
196 list-style: none;
197 padding: 0;
198 columns: 2;
199 column-gap: 22px;
200 }
201
202 .feature-section li {
203 font-size: 11.5px;
204 line-height: 1.4;
205 color: var(--text-secondary);
206 padding: 2px 0 2px 12px;
207 position: relative;
208 break-inside: avoid;
209 }
210
211 .feature-section li::before {
212 content: '';
213 position: absolute;
214 left: 0;
215 top: 7.5px;
216 width: 5px;
217 height: 5px;
218 background: var(--accent);
219 border-radius: 50%;
220 }
221
222 /* ── Highlight box ── */
223
224 .highlight-box {
225 background: var(--bg-warm);
226 border-left: 3px solid var(--accent);
227 padding: 10px 14px;
228 margin-bottom: 0.16in;
229 border-radius: 0 6px 6px 0;
230 }
231
232 .highlight-box p {
233 font-size: 12px;
234 line-height: 1.55;
235 color: var(--text-secondary);
236 }
237
238 .highlight-box strong { color: var(--text); }
239
240 /* ── Pricing grid ── */
241
242 .pricing {
243 display: grid;
244 grid-template-columns: repeat(4, 1fr);
245 gap: 10px;
246 margin-bottom: 0.18in;
247 }
248
249 .tier {
250 background: var(--bg-warm);
251 border: 1px solid var(--border);
252 border-radius: 6px;
253 padding: 11px 10px;
254 text-align: center;
255 }
256
257 .tier .tier-price {
258 font-family: 'Young Serif', serif;
259 font-size: 24px;
260 color: var(--accent);
261 display: block;
262 line-height: 1;
263 margin-bottom: 2px;
264 }
265
266 .tier .tier-period {
267 font-family: 'IBM Plex Mono', monospace;
268 font-size: 9px;
269 color: var(--text-muted);
270 text-transform: uppercase;
271 display: block;
272 margin-bottom: 5px;
273 }
274
275 .tier .tier-name {
276 font-family: 'IBM Plex Mono', monospace;
277 font-size: 11px;
278 font-weight: 600;
279 color: var(--text);
280 display: block;
281 margin-bottom: 4px;
282 }
283
284 .tier .tier-desc {
285 font-size: 10px;
286 color: var(--text-secondary);
287 line-height: 1.35;
288 }
289
290 /* ── Monetization models ── */
291
292 .models {
293 display: grid;
294 grid-template-columns: repeat(4, 1fr);
295 gap: 10px;
296 margin-bottom: 0.18in;
297 }
298
299 .model {
300 background: var(--bg-warm);
301 border: 1px solid var(--border);
302 border-radius: 6px;
303 padding: 10px 11px;
304 text-align: center;
305 }
306
307 .model .model-name {
308 font-family: 'IBM Plex Mono', monospace;
309 font-size: 11px;
310 font-weight: 600;
311 color: var(--text);
312 display: block;
313 margin-bottom: 4px;
314 }
315
316 .model .model-desc {
317 font-size: 10px;
318 color: var(--text-muted);
319 line-height: 1.35;
320 }
321
322 /* ── Content types ── */
323
324 .content-types {
325 display: grid;
326 grid-template-columns: repeat(5, 1fr);
327 gap: 8px;
328 margin-bottom: 0.18in;
329 }
330
331 .content-type {
332 background: var(--bg-warm);
333 border: 1px solid var(--border);
334 border-radius: 5px;
335 padding: 7px 6px;
336 text-align: center;
337 }
338
339 .content-type .type-name {
340 font-family: 'IBM Plex Mono', monospace;
341 font-size: 10.5px;
342 font-weight: 600;
343 color: var(--text);
344 display: block;
345 margin-bottom: 2px;
346 }
347
348 .content-type .type-detail {
349 font-size: 9px;
350 color: var(--text-muted);
351 line-height: 1.3;
352 }
353
354 /* ── Comparison table ── */
355
356 .comparison {
357 width: 100%;
358 border-collapse: collapse;
359 margin-bottom: 0.16in;
360 font-size: 11px;
361 }
362
363 .comparison th {
364 font-family: 'IBM Plex Mono', monospace;
365 font-size: 10px;
366 font-weight: 600;
367 text-align: left;
368 padding: 6px 7px;
369 background: var(--bg-deep);
370 color: var(--text);
371 border-bottom: 1px solid var(--border-dark);
372 }
373
374 .comparison td {
375 padding: 5px 7px;
376 border-bottom: 1px solid var(--border);
377 color: var(--text-secondary);
378 vertical-align: top;
379 }
380
381 .comparison .check { color: var(--green); font-weight: 700; font-size: 12px; }
382 .comparison .dash { color: var(--text-muted); }
383 .comparison tr:last-child td { border-bottom: none; }
384
385 /* ── Two-column ── */
386
387 .two-col {
388 display: grid;
389 grid-template-columns: 1fr 1fr;
390 gap: 12px;
391 margin-bottom: 0.16in;
392 }
393
394 .two-col .col {
395 background: var(--bg-warm);
396 border: 1px solid var(--border);
397 border-radius: 6px;
398 padding: 11px 13px;
399 }
400
401 .two-col .col h3 {
402 margin: 0 0 4px 0;
403 font-size: 11.5px;
404 color: var(--accent);
405 }
406
407 .two-col .col p {
408 font-size: 11px;
409 line-height: 1.45;
410 color: var(--text-secondary);
411 }
412
413 /* ── Footer ── */
414
415 .footer {
416 position: absolute;
417 bottom: 0.4in;
418 left: 0.75in;
419 right: 0.75in;
420 display: flex;
421 justify-content: space-between;
422 align-items: center;
423 padding-top: 8px;
424 border-top: 1px solid var(--border);
425 }
426
427 .footer .left, .footer .right {
428 font-family: 'IBM Plex Mono', monospace;
429 font-size: 10px;
430 color: var(--text-muted);
431 }
432
433 .footer-inline {
434 display: flex;
435 justify-content: space-between;
436 align-items: center;
437 padding-top: 8px;
438 border-top: 1px solid var(--border);
439 margin-top: auto;
440 }
441
442 .footer-inline .left, .footer-inline .right {
443 font-family: 'IBM Plex Mono', monospace;
444 font-size: 10px;
445 color: var(--text-muted);
446 }
447
448 @media print { body { background: white; } .page { box-shadow: none; } }
449 @media screen { body { background: #ccc; padding: 20px 0; } .page { box-shadow: 0 2px 20px rgba(0,0,0,0.15); margin-bottom: 20px; } }
450 </style>
451 </head>
452 <body>
453
454 <!-- ═══════════════════════════════════════════════════════════════════════ -->
455 <!-- PAGE 1 -->
456 <!-- ═══════════════════════════════════════════════════════════════════════ -->
457 <div class="page">
458
459 <div class="hero">
460 <h1>Makenot<span class="dot">.</span>work</h1>
461 <div class="tagline">Fair distribution for creatives of all kinds.</div>
462 <div class="sub">A creator platform where the only fee is Stripe's ~3% processing. No revenue share, no lock-in, full data export.</div>
463 </div>
464
465 <div class="stats">
466 <div class="stat">
467 <span class="num">0%</span>
468 <span class="label">Platform fee</span>
469 </div>
470 <div class="stat">
471 <span class="num">10</span>
472 <span class="label">Content types</span>
473 </div>
474 <div class="stat">
475 <span class="num">4</span>
476 <span class="label">Pricing models</span>
477 </div>
478 <div class="stat">
479 <span class="num">100%</span>
480 <span class="label">Data exportable</span>
481 </div>
482 </div>
483
484 <div class="intro">
485 Makenot.work is a platform for selling digital work. Music, software, writing, video, courses, sample packs, plugins, presets &mdash; whatever you make. You pay a flat monthly fee based on your content type. Your buyers pay Stripe's processing fee and nothing else. We never take a percentage of your revenue.
486 </div>
487
488 <h2>Creator Tiers</h2>
489
490 <div class="pricing">
491 <div class="tier">
492 <span class="tier-price">$16</span>
493 <span class="tier-period">/ month</span>
494 <span class="tier-name">Basic</span>
495 <div class="tier-desc">Text, blogs, newsletters, community forums.</div>
496 </div>
497 <div class="tier">
498 <span class="tier-price">$24</span>
499 <span class="tier-period">/ month</span>
500 <span class="tier-name">Small Files</span>
501 <div class="tier-desc">Audio, sample packs, plugins, software, presets.</div>
502 </div>
503 <div class="tier">
504 <span class="tier-price">$36</span>
505 <span class="tier-period">/ month</span>
506 <span class="tier-name">Big Files</span>
507 <div class="tier-desc">Video, courses, tutorials, large archives.</div>
508 </div>
509 <div class="tier">
510 <span class="tier-price">$60</span>
511 <span class="tier-period">/ month</span>
512 <span class="tier-name">Everything</span>
513 <div class="tier-desc">All features, current and future.</div>
514 </div>
515 </div>
516
517 <h2>How It Compares</h2>
518
519 <table class="comparison">
520 <tr>
521 <th style="width:23%">Feature</th>
522 <th style="width:12.8%">MNW</th>
523 <th style="width:12.8%">Gumroad</th>
524 <th style="width:12.8%">Patreon</th>
525 <th style="width:12.8%">Bandcamp</th>
526 <th style="width:12.8%">Itch.io</th>
527 <th style="width:12.8%">Substack</th>
528 </tr>
529 <tr>
530 <td>Platform fee</td>
531 <td><span class="check">0%</span></td>
532 <td>10%</td>
533 <td>5&ndash;12%</td>
534 <td>10&ndash;15%</td>
535 <td>0% (optional)</td>
536 <td>10%</td>
537 </tr>
538 <tr>
539 <td>One-time sales</td>
540 <td><span class="check">Yes</span></td>
541 <td><span class="check">Yes</span></td>
542 <td>Limited</td>
543 <td><span class="check">Yes</span></td>
544 <td><span class="check">Yes</span></td>
545 <td><span class="dash">&mdash;</span></td>
546 </tr>
547 <tr>
548 <td>Subscriptions</td>
549 <td><span class="check">Yes</span></td>
550 <td><span class="check">Yes</span></td>
551 <td><span class="check">Yes</span></td>
552 <td>Limited</td>
553 <td><span class="dash">&mdash;</span></td>
554 <td><span class="check">Yes</span></td>
555 </tr>
556 <tr>
557 <td>Pay-what-you-want</td>
558 <td><span class="check">Yes</span></td>
559 <td><span class="check">Yes</span></td>
560 <td><span class="dash">&mdash;</span></td>
561 <td><span class="check">Yes</span></td>
562 <td><span class="check">Yes</span></td>
563 <td><span class="dash">&mdash;</span></td>
564 </tr>
565 <tr>
566 <td>License keys</td>
567 <td><span class="check">Yes</span></td>
568 <td><span class="check">Yes</span></td>
569 <td><span class="dash">&mdash;</span></td>
570 <td><span class="dash">&mdash;</span></td>
571 <td><span class="dash">&mdash;</span></td>
572 <td><span class="dash">&mdash;</span></td>
573 </tr>
574 <tr>
575 <td>Git hosting</td>
576 <td><span class="check">Yes</span></td>
577 <td><span class="dash">&mdash;</span></td>
578 <td><span class="dash">&mdash;</span></td>
579 <td><span class="dash">&mdash;</span></td>
580 <td><span class="dash">&mdash;</span></td>
581 <td><span class="dash">&mdash;</span></td>
582 </tr>
583 <tr>
584 <td>Community forums</td>
585 <td><span class="check">Yes</span></td>
586 <td><span class="dash">&mdash;</span></td>
587 <td>Discord</td>
588 <td><span class="dash">&mdash;</span></td>
589 <td>Comments</td>
590 <td>Comments</td>
591 </tr>
592 <tr>
593 <td>Malware scanning</td>
594 <td><span class="check">6 layers</span></td>
595 <td>Basic</td>
596 <td>N/A</td>
597 <td>Basic</td>
598 <td>Basic</td>
599 <td>N/A</td>
600 </tr>
601 <tr>
602 <td>Full data export</td>
603 <td><span class="check">Yes</span></td>
604 <td>Partial</td>
605 <td>Partial</td>
606 <td>Limited</td>
607 <td><span class="check">Yes</span></td>
608 <td>Limited</td>
609 </tr>
610 <tr>
611 <td>Source-available</td>
612 <td><span class="check">Yes</span></td>
613 <td><span class="dash">&mdash;</span></td>
614 <td><span class="dash">&mdash;</span></td>
615 <td><span class="dash">&mdash;</span></td>
616 <td><span class="dash">&mdash;</span></td>
617 <td><span class="dash">&mdash;</span></td>
618 </tr>
619 <tr>
620 <td>Mobile app</td>
621 <td><span style="color: var(--warm, #d69e2e); font-weight: 700;">WIP</span></td>
622 <td><span class="check">Yes</span></td>
623 <td><span class="check">Yes</span></td>
624 <td><span class="check">Yes</span></td>
625 <td><span class="dash">&mdash;</span></td>
626 <td><span class="check">Yes</span></td>
627 </tr>
628 </table>
629
630 <div class="highlight-box">
631 <p>A creator earning $10,000/month on Gumroad loses $1,000 to the platform every month. On Makenot.work, the same creator pays $16&ndash;$60 flat &mdash; keeping an extra <strong>$12,000 per year</strong>. Month-to-month cancellation. Full data export. No lock-in.</p>
632 </div>
633
634 <div class="footer">
635 <div class="left">Makenot.work &mdash; v0.2.5 alpha</div>
636 <div class="right">makenot.work</div>
637 </div>
638
639 </div>
640
641 <!-- ═══════════════════════════════════════════════════════════════════════ -->
642 <!-- PAGE 2 -->
643 <!-- ═══════════════════════════════════════════════════════════════════════ -->
644 <div class="page">
645
646 <h2>How You Sell</h2>
647
648 <div class="models">
649 <div class="model">
650 <span class="model-name">Buy Once</span>
651 <div class="model-desc">Fixed price or free. Buyer downloads forever. No recurring charge.</div>
652 </div>
653 <div class="model">
654 <span class="model-name">Subscription</span>
655 <div class="model-desc">Monthly tiers via Stripe billing. Recurring access to your catalog.</div>
656 </div>
657 <div class="model">
658 <span class="model-name">Pay What You Want</span>
659 <div class="model-desc">Set a minimum (or $0). Buyer chooses the price.</div>
660 </div>
661 <div class="model">
662 <span class="model-name">License Key</span>
663 <div class="model-desc">Auto-generated keys with activation limits and machine tracking.</div>
664 </div>
665 </div>
666
667 <h2>Content Types</h2>
668
669 <div class="content-types">
670 <div class="content-type">
671 <span class="type-name">Audio</span>
672 <div class="type-detail">MP3, WAV, FLAC, OGG, M4A</div>
673 </div>
674 <div class="content-type">
675 <span class="type-name">Text</span>
676 <div class="type-detail">Markdown editor, reading time</div>
677 </div>
678 <div class="content-type">
679 <span class="type-name">Video</span>
680 <div class="type-detail">Streaming playback</div>
681 </div>
682 <div class="content-type">
683 <span class="type-name">Image</span>
684 <div class="type-detail">JPG, PNG, WebP</div>
685 </div>
686 <div class="content-type">
687 <span class="type-name">Plugin</span>
688 <div class="type-detail">VST3, CLAP</div>
689 </div>
690 <div class="content-type">
691 <span class="type-name">Preset</span>
692 <div class="type-detail">Synth patches, FX chains</div>
693 </div>
694 <div class="content-type">
695 <span class="type-name">Sample</span>
696 <div class="type-detail">Loops, one-shots, packs</div>
697 </div>
698 <div class="content-type">
699 <span class="type-name">Course</span>
700 <div class="type-detail">Multi-lesson content</div>
701 </div>
702 <div class="content-type">
703 <span class="type-name">Template</span>
704 <div class="type-detail">Design, code, project</div>
705 </div>
706 <div class="content-type">
707 <span class="type-name">Digital</span>
708 <div class="type-detail">ZIP, DMG, EXE, any file</div>
709 </div>
710 </div>
711
712 <h2>Creator Tools</h2>
713
714 <div class="features">
715 <div class="feature-card">
716 <h3>Dashboard &amp; Analytics</h3>
717 <ul>
718 <li>Revenue charts (7, 30, 90 day views with period comparison)</li>
719 <li>Per-project and per-item breakdowns</li>
720 <li>Sales count, follower tracking, transaction history</li>
721 <li>Customer list with purchase totals and last activity</li>
722 <li>Export transactions and contacts as CSV</li>
723 </ul>
724 </div>
725 <div class="feature-card">
726 <h3>Content Management</h3>
727 <ul>
728 <li>Presigned S3 uploads (up to 500 MB per file)</li>
729 <li>File versioning with changelogs and download counts</li>
730 <li>Publish/unpublish, bulk operations, item reordering</li>
731 <li>Audio chapters with timestamp markers</li>
732 <li>Content insertions (pre-roll, mid-roll, post-roll for audio)</li>
733 </ul>
734 </div>
735 <div class="feature-card">
736 <h3>Audience</h3>
737 <ul>
738 <li>Project and creator follows with notification system</li>
739 <li>Broadcast emails to your followers</li>
740 <li>Per-project and per-creator RSS feeds</li>
741 <li>Blog with markdown editor and publish scheduling</li>
742 <li>Community forums (Multithreaded, built in)</li>
743 </ul>
744 </div>
745 <div class="feature-card">
746 <h3>Promotions</h3>
747 <ul>
748 <li>Discount codes (percentage or fixed amount off)</li>
749 <li>Free access codes (grant without payment)</li>
750 <li>Per-item or per-project scope</li>
751 <li>Usage limits and expiration dates</li>
752 <li>Subscription tiers with Stripe recurring billing</li>
753 </ul>
754 </div>
755 </div>
756
757 <div class="footer">
758 <div class="left">Makenot.work &mdash; v0.2.5 alpha</div>
759 <div class="right">makenot.work</div>
760 </div>
761
762 </div>
763
764 <!-- ═══════════════════════════════════════════════════════════════════════ -->
765 <!-- PAGE 3 -->
766 <!-- ═══════════════════════════════════════════════════════════════════════ -->
767 <div class="page" style="display: flex; flex-direction: column;">
768
769 <h2>Discovery &amp; Browsing</h2>
770
771 <div class="two-col">
772 <div class="col">
773 <h3>For Buyers</h3>
774 <p>Full-text search across all public items and projects. Filter by type, tag, price range. Sort by newest, popularity, or price. Hierarchical tag browser with follow capability. Grid and list views. No account required to browse.</p>
775 </div>
776 <div class="col">
777 <h3>Creator Profiles</h3>
778 <p>Public profile with bio, custom links, all projects, and follower count. RSS feed per creator and per project. Buyers follow creators and projects to get notified of new releases.</p>
779 </div>
780 </div>
781
782 <h2>Git Hosting</h2>
783
784 <div class="highlight-box">
785 <p>Every creator gets git repository hosting. Clone via HTTPS or SSH (<code>git.makenot.work</code>). Browse source in the web UI &mdash; file trees, commit history, diffs. <strong>Issue tracker</strong> per repo with labels and comments. <strong>Repo settings dashboard</strong> for description, visibility, and project linking. Public repos are browsable by anyone.</p>
786 </div>
787
788 <h2>Security &amp; Trust</h2>
789
790 <div class="features">
791 <div class="feature-card">
792 <h3>Account Security</h3>
793 <ul>
794 <li>Two-factor authentication (TOTP with backup codes)</li>
795 <li>Passkey / WebAuthn support (FIDO2 hardware keys)</li>
796 <li>SSH key management for git access</li>
797 <li>Session management (view and revoke active sessions)</li>
798 <li>Login notifications on new devices</li>
799 <li>Account lockout after 5 failed attempts (one-time link recovery)</li>
800 </ul>
801 </div>
802 <div class="feature-card">
803 <h3>Content Safety</h3>
804 <ul>
805 <li>6-layer malware scanning pipeline on every upload</li>
806 <li>Magic bytes verification, structural analysis, archive inspection</li>
807 <li>YARA pattern matching and ClamAV integration</li>
808 <li>MalwareBazaar hash lookup (known malware database)</li>
809 <li>Quarantine flow for flagged files</li>
810 <li>SHA-256 hashing for integrity verification</li>
811 </ul>
812 </div>
813 </div>
814
815 <h2>For Software Developers</h2>
816
817 <div class="features">
818 <div class="feature-card">
819 <h3>License Keys</h3>
820 <ul>
821 <li>Auto-generated keys on purchase</li>
822 <li>Activation limits (per-machine or shared)</li>
823 <li>Machine ID tracking and validation</li>
824 <li>Public validation API endpoint</li>
825 <li>Key revocation and status checking</li>
826 </ul>
827 </div>
828 <div class="feature-card">
829 <h3>SyncKit (Cloud Sync)</h3>
830 <ul>
831 <li>E2E encrypted sync infrastructure for your apps</li>
832 <li>Rust SDK with push/pull changelog, blob storage</li>
833 <li>Device management, key storage, retry logic</li>
834 <li>OAuth provider for third-party app login</li>
835 <li>Flat pricing, no per-user or per-request fees</li>
836 </ul>
837 </div>
838 </div>
839
840 <h2>Under the Hood</h2>
841
842 <div class="feature-section">
843 <ul>
844 <li>Stripe Connect for direct payouts (no intermediary)</li>
845 <li>S3-compatible object storage (Hetzner)</li>
846 <li>Transactional email via Postmark (receipts, verification, alerts)</li>
847 <li>Rate limiting on auth, upload, and API routes</li>
848 <li>Audio streaming with presigned URLs (dynamic expiry by duration)</li>
849 <li>Documentation engine (markdown-based, shipped with the platform)</li>
850 <li>OAuth 2.0 provider (PKCE flow for desktop and mobile apps)</li>
851 <li>Source-available under PolyForm Noncommercial 1.0.0</li>
852 </ul>
853 </div>
854
855 <div class="highlight-box">
856 <p><strong>Private alpha.</strong> Makenot.work is live and accepting creators by invitation. Existing creators can invite others via creator invite codes. Source-available under PolyForm Noncommercial 1.0.0.</p>
857 </div>
858
859 <div class="footer-inline" style="margin-top: 10px;">
860 <div class="left">Makenot.work &mdash; v0.2.5 alpha</div>
861 <div class="right">makenot.work</div>
862 </div>
863
864 </div>
865
866 </body>
867 </html>
868