Skip to main content

max / makenotwork

9.2 KB · 182 lines History Blame Raw
1 {% extends "base.html" %}
2
3 {% block title %}Makenotwork{% endblock %}
4
5 {% block body_attrs %} class="centered-page"{% endblock %}
6
7 {% block head %}
8 <meta property="og:title" content="Makenotwork: Sell your work directly. Keep what you earn.">
9 <meta property="og:description" content="A platform for selling music, software, writing, and more. 0% platform fee, only Stripe's ~3% processing.">
10 <meta property="og:type" content="website">
11 <meta property="og:url" content="{{ host_url }}/">
12 <link rel="canonical" href="{{ host_url }}/">
13 <meta name="twitter:card" content="summary_large_image">
14 <meta property="og:image" content="{{ host_url }}/static/images/og-card.png">
15 <meta name="twitter:image" content="{{ host_url }}/static/images/og-card.png">
16 {% endblock %}
17
18 {% block content %}
19 <div class="landing-hero">
20 <h1 class="brand-h1">Makenot<span class="dot">.</span>work</h1>
21 <p class="landing-headline">Sell your work directly<span class="dot">.</span> Keep what you earn<span class="dot">.</span></p>
22 <p class="landing-sub">Audio, video, software, writing, games, and more. 0% platform fee, only Stripe's ~3% processing.</p>
23 <p class="landing-sub">No investors, no ads, no cut on your sales. A flat monthly fee. Source-available, exportable in one click.</p>
24
25 {% if founder_window_open %}
26 <p class="founder-tagline">
27 <span class="founder-tagline-mark">Founder pricing open</span>:
28 half off creator tiers, <strong>locked for life</strong>.
29 </p>
30 {% endif %}
31
32 <div class="landing-fork">
33 <div class="fork-card{% if founder_window_open %} fork-card--founder{% endif %}">
34 <h2 class="fork-heading">For creators</h2>
35
36 {% if founder_window_open %}
37 <div class="founder-tier-grid" aria-label="Founder tier pricing">
38 <div class="founder-tier">
39 <span class="founder-tier-name">Basic</span>
40 <span class="founder-tier-price"><del>${{ tier_prices.basic_std }}</del> <strong>${{ tier_prices.basic_founder }}</strong><span class="founder-tier-unit">/mo</span></span>
41 </div>
42 <div class="founder-tier">
43 <span class="founder-tier-name">Small Files</span>
44 <span class="founder-tier-price"><del>${{ tier_prices.small_files_std }}</del> <strong>${{ tier_prices.small_files_founder }}</strong><span class="founder-tier-unit">/mo</span></span>
45 </div>
46 <div class="founder-tier">
47 <span class="founder-tier-name">Big Files</span>
48 <span class="founder-tier-price"><del>${{ tier_prices.big_files_std }}</del> <strong>${{ tier_prices.big_files_founder }}</strong><span class="founder-tier-unit">/mo</span></span>
49 </div>
50 <div class="founder-tier">
51 <span class="founder-tier-name">Everything</span>
52 <span class="founder-tier-price"><del>${{ tier_prices.everything_std }}</del> <strong>${{ tier_prices.everything_founder }}</strong><span class="founder-tier-unit">/mo</span></span>
53 </div>
54 </div>
55 {% if let Some(remaining) = founder_slots_remaining %}
56 <p class="founder-slots">
57 <span class="founder-slots-number">{{ remaining }}</span>
58 founder slot{% if *remaining != 1u32 %}s{% endif %} left
59 <span class="founder-slots-cap">of 1,000</span>
60 </p>
61 {% else %}
62 <p class="founder-slots founder-slots--cap">
63 Window closes at 1,000 creators or when we exit beta, whichever first.
64 </p>
65 {% endif %}
66 {% endif %}
67
68 <ul class="fork-list">
69 {% if !founder_window_open %}
70 <li><strong>Flat monthly pricing</strong>: starts at ${{ tier_prices.basic_std }}/mo</li>
71 {% endif %}
72 <li><strong>0% platform fee</strong>: only ~3% payment processing</li>
73 <li><strong>Every tier is the complete platform</strong>: profile, forum, discovery, memberships. Tier picks the file-size envelope, not the feature set</li>
74 <li><strong>Full data export</strong>: no lock-in, cancel anytime</li>
75 <li><strong>Source available</strong>: read the code, verify every claim</li>
76 </ul>
77 <p class="fork-note">Currently in private alpha. <a href="/creators">Apply for creator access</a>.</p>
78 <div class="fork-actions">
79 <a class="btn-primary btn--large" href="/join">{% if founder_window_open %}Claim founder pricing{% else %}Join as a creator{% endif %}</a>
80 <a class="fork-secondary-link" href="/sandbox">Try the dashboard first</a>
81 </div>
82 </div>
83
84 <div class="fork-card">
85 <h2 class="fork-heading">For fans</h2>
86 <ul class="fork-list">
87 <li><strong>Browse and buy</strong>: directly from creators, no middleman</li>
88 <li><strong>No account required</strong> to browse or purchase</li>
89 <li><strong>Fan+</strong>: $8/mo membership with $5 monthly credit</li>
90 <li><strong>Every dollar counts</strong>: no platform cut means more goes to creators</li>
91 </ul>
92 <div class="fork-actions">
93 <a class="btn-primary btn--large" href="/discover">Browse creators</a>
94 <a class="fork-secondary-link" href="/fan-plus">Learn about Fan+</a>
95 </div>
96 </div>
97 </div>
98
99 {% if total_creators > 0 || total_items > 0 %}
100 <p class="landing-stats-line">
101 <strong>{{ total_creators }}</strong> creator{% if total_creators != 1 %}s{% endif %} publishing <strong>{{ total_items }}</strong> item{% if total_items != 1 %}s{% endif %}.
102 </p>
103 {% endif %}
104
105 <p class="landing-stats-line">
106 <a href="/changelog">What's new</a>
107 </p>
108
109
110 <div class="landing-principles">
111 <h2 class="section-label">Why this exists</h2>
112 <ul class="how-list">
113 <li><strong>No investors, no ads</strong>: funded by subscriptions, not surveillance.</li>
114 <li><strong>No tracking</strong>: no banners, no pixels, no sponsored placements.</li>
115 <li><strong>Cheaper at scale</strong>: at $50k/mo, a 10% platform takes $5,000. We take a flat tier fee (${{ tier_prices.basic_std }}&ndash;${{ tier_prices.everything_std }}).</li>
116 <li><strong>Built to last</strong>: no debt, no growth mandates, no reason to enshittify.</li>
117 </ul>
118 <a class="section-link" href="/docs/how-we-work">How the business model works</a>
119 </div>
120
121 <div class="landing-use-cases">
122 <p class="use-case-line">
123 Musicians. Writers. Developers. Podcasters. Game devs. Educators. Comic creators.
124 </p>
125 <a class="section-link" href="/use-cases">All use cases</a>
126 </div>
127
128 <div class="tier-section">
129 <h2 class="section-label">Stay in the loop</h2>
130 <p class="landing-prose mb-4">Get notified when something ships.</p>
131 <form class="notify-form" id="notify-form" onsubmit="return submitNotify(event)">
132 <input type="email" name="email" placeholder="you@example.com" required class="notify-input" aria-label="Email address">
133 <button type="submit" class="btn-primary">Notify Me</button>
134 </form>
135 <p class="notify-status" id="notify-status"></p>
136 </div>
137
138 <div class="secondary-links">
139 <a href="/login">Log in</a>
140 <a href="/docs">Docs</a>
141 <a href="/docs/roadmap">Roadmap</a>
142 <a href="/docs/story">About</a>
143 <a href="/team">Team</a>
144 </div>
145 </div>
146 {% endblock %}
147
148 {% block scripts %}
149 <script>
150 function submitNotify(e) {
151 e.preventDefault();
152 var form = document.getElementById('notify-form');
153 var status = document.getElementById('notify-status');
154 var email = form.querySelector('input[name="email"]').value;
155 var btn = form.querySelector('button');
156 btn.disabled = true;
157 btn.textContent = 'Sending...';
158 status.textContent = '';
159 fetch('/api/email-signup', {
160 method: 'POST',
161 headers: {'Content-Type': 'application/json'},
162 body: JSON.stringify({email: email})
163 }).then(function(r) {
164 if (r.ok) {
165 status.textContent = 'You\'re on the list.';
166 status.className = 'notify-status success';
167 form.querySelector('input[name="email"]').value = '';
168 } else {
169 return r.json().then(function(d) { throw new Error(d.error || 'Something went wrong'); });
170 }
171 }).catch(function(err) {
172 status.textContent = err.message;
173 status.className = 'notify-status error';
174 }).finally(function() {
175 btn.disabled = false;
176 btn.textContent = 'Notify Me';
177 });
178 return false;
179 }
180 </script>
181 {% endblock %}
182