Skip to main content

max / makenotwork

13.2 KB · 260 lines History Blame Raw
1 {% extends "base.html" %}
2 {%- import "partials/carousel.html" as carousel -%}
3
4 {% block title %}Makenotwork{% endblock %}
5
6 {% block body_attrs %} class="centered-page"{% endblock %}
7
8 {% block head %}
9 <meta property="og:title" content="Makenotwork: Sell your work directly. Keep what you earn.">
10 <meta property="og:description" content="A platform for selling music, software, writing, and more. 0% platform fee, only Stripe's ~3% processing.">
11 <meta property="og:type" content="website">
12 <meta property="og:url" content="{{ host_url }}/">
13 <link rel="canonical" href="{{ host_url }}/">
14 <meta name="twitter:card" content="summary_large_image">
15 <meta property="og:image" content="{{ host_url }}/static/images/og-card.png">
16 <meta name="twitter:image" content="{{ host_url }}/static/images/og-card.png">
17 {% endblock %}
18
19 {% block content %}
20 <div class="landing-hero">
21 <h1 class="brand-h1">Makenot<span class="dot">.</span>work</h1>
22 <p class="landing-headline">Sell your work directly<span class="dot">.</span> Keep what you earn<span class="dot">.</span></p>
23 <p class="landing-sub">A flat monthly subscription. No investors, no ads, no cut on your sales. 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 <span class="founder-tagline-detail">Half off creator tiers, <strong>locked for life</strong>.</span>
29 </p>
30 {% endif %}
31
32 {% if let Some(shipped) = last_shipped %}
33 <p class="landing-velocity">Last shipped: <a href="{{ shipped.href }}">{{ shipped.title }}</a> &middot; {{ shipped.date }}</p>
34 {% endif %}
35
36 <ul class="do-rail" aria-label="What we offer">
37 <li class="do-card">
38 <h3 class="do-card-title">A complete storefront</h3>
39 <p class="do-card-lede">Sell anything digital. Bundles, splits, license keys, promo codes.</p>
40 <ul class="do-card-links">
41 <li><a href="/docs/items">Items</a></li>
42 <li><a href="/docs/bundles">Bundles</a></li>
43 <li><a href="/docs/projects">Projects</a></li>
44 <li><a href="/docs/splits">Splits</a></li>
45 <li><a href="/docs/license-keys">Keys</a></li>
46 </ul>
47 </li>
48 <li class="do-card">
49 <h3 class="do-card-title">Fan engagement, built in</h3>
50 <p class="do-card-lede">Profile, blog, mailing list, memberships, tips &mdash; no add-ons.</p>
51 <ul class="do-card-links">
52 <li><a href="/docs/profile">Profiles</a></li>
53 <li><a href="/docs/blog">Blogs</a></li>
54 <li><a href="/docs/mailing-lists">Mailing lists</a></li>
55 <li><a href="/docs/forums">Forums</a></li>
56 <li><a href="/docs/tips">Tips</a></li>
57 </ul>
58 </li>
59 <li class="do-card">
60 <h3 class="do-card-title">Hosting and distribution</h3>
61 <p class="do-card-lede">Audio and video streaming, file downloads, git repos, custom domains. Live streaming on the way.</p>
62 <ul class="do-card-links">
63 <li><a href="/docs/audio">Audio</a></li>
64 <li><a href="/docs/video">Video</a></li>
65 <li><a href="/docs/software">Downloads</a></li>
66 <li><a href="/docs/git">Git</a></li>
67 <li><a href="/docs/custom-domains">Custom domains</a></li>
68 </ul>
69 </li>
70 </ul>
71
72 {% if !landing_carousel.is_empty() %}
73 <section class="landing-showcase" aria-label="See the platform">
74 <h2 class="section-label">See the platform</h2>
75 {% call carousel::carousel("landing-shots", landing_carousel) %}
76 </section>
77 {% endif %}
78
79 <div class="landing-fork">
80 <div class="fork-card{% if founder_window_open %} fork-card--founder{% endif %}">
81 <h2 class="fork-heading">For creators</h2>
82
83 {% if founder_window_open %}
84 <div class="founder-tier-grid" aria-label="Founder tier pricing">
85 <div class="founder-tier">
86 <span class="founder-tier-name">Basic</span>
87 <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>
88 </div>
89 <div class="founder-tier">
90 <span class="founder-tier-name">Small Files</span>
91 <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>
92 </div>
93 <div class="founder-tier">
94 <span class="founder-tier-name">Big Files</span>
95 <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>
96 </div>
97 <div class="founder-tier">
98 <span class="founder-tier-name">Everything</span>
99 <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>
100 </div>
101 </div>
102 {% if let Some(remaining) = founder_slots_remaining %}
103 <p class="founder-slots">
104 <span class="founder-slots-number">{{ remaining }}</span>
105 founder slot{% if *remaining != 1u32 %}s{% endif %} left
106 <span class="founder-slots-cap">of 1,000</span>
107 </p>
108 {% else %}
109 <p class="founder-slots founder-slots--cap">
110 Window closes at 1,000 creators or when we exit beta, whichever first.
111 </p>
112 {% endif %}
113 {% endif %}
114
115 {% if !founder_window_open %}
116 <p class="fork-lede">Flat monthly pricing from ${{ tier_prices.basic_std }}/mo. 0% platform fee. Every tier is the complete platform.</p>
117 {% else %}
118 <p class="fork-lede">0% platform fee. Every tier is the complete platform.</p>
119 {% endif %}
120 <div class="fork-actions">
121 <a class="btn-primary btn--large" href="/join">{% if founder_window_open %}Claim founder pricing{% else %}Join as a creator{% endif %}</a>
122 <a class="fork-secondary-link" href="/sandbox">Try the dashboard first</a>
123 </div>
124 </div>
125
126 <div class="fork-card">
127 <h2 class="fork-heading">Fan+</h2>
128 <p class="fork-lede">Support the platform directly and get something back every month.</p>
129 <ul class="fork-list">
130 <li><strong>$5 monthly credit</strong>: usable toward any purchase on the platform</li>
131 <li><strong>+ badge</strong>: shown next to your name in social contexts</li>
132 <li><strong>Platform polls and dev community</strong>: a say in what we build next</li>
133 <li><strong>Early access</strong>: preview new features on <a href="https://testnot.work">testnot.work</a> before they ship</li>
134 </ul>
135 <div class="fork-actions">
136 <a class="btn-primary btn--large" href="/fan-plus">Sign up for Fan+</a>
137 <span class="fork-secondary-link">$8/month. Cancel anytime.</span>
138 </div>
139 </div>
140 </div>
141
142 <p class="landing-browse-cta">
143 <a class="fork-secondary-link" href="/discover">Browse creators &rarr;</a>
144 </p>
145 <p class="landing-mobile-note">Works in any browser, on any phone. No app to install.</p>
146
147 {% if total_creators > 0 || total_items > 0 %}
148 <p class="landing-stats-line">
149 <strong>{{ total_creators }}</strong> creator{% if total_creators != 1 %}s{% endif %} publishing <strong>{{ total_items }}</strong> item{% if total_items != 1 %}s{% endif %}.
150 </p>
151 {% endif %}
152
153 <div class="landing-principles">
154 <h2 class="section-label">What we do differently</h2>
155 <ul class="contrast-rail" aria-label="Common platform habits and how we differ">
156 <li class="contrast-card">
157 <h3 class="contrast-card-title">Track you</h3>
158 <ul class="contrast-card-links">
159 <li><a href="/docs/privacy-policy">No trackers</a></li>
160 <li><a href="/docs/privacy-policy">No ads</a></li>
161 <li><a href="/docs/privacy-policy">No data sales</a></li>
162 </ul>
163 </li>
164 <li class="contrast-card">
165 <h3 class="contrast-card-title">Lock you in</h3>
166 <ul class="contrast-card-links">
167 <li><a href="/docs/portability">Full export</a></li>
168 <li><a href="/docs/account-lifecycle">Cancel anytime</a></li>
169 <li><a href="/docs/export">Original files</a></li>
170 </ul>
171 </li>
172 <li class="contrast-card">
173 <h3 class="contrast-card-title">Take a cut</h3>
174 <ul class="contrast-card-links">
175 <li><a href="/docs/how-we-work">0% platform fee</a></li>
176 <li><a href="/docs/economics">No surge pricing</a></li>
177 <li><a href="/docs/economics">No paid acquisition</a></li>
178 </ul>
179 </li>
180 <li class="contrast-card">
181 <h3 class="contrast-card-title">Hide the code</h3>
182 <ul class="contrast-card-links">
183 <li><a href="/docs/open-source">Source available</a></li>
184 <li><a href="/source">Read the commits</a></li>
185 <li><a href="/docs/open-source">PolyForm-NC license</a></li>
186 </ul>
187 </li>
188 </ul>
189 </div>
190
191 <div class="do-card do-card--wide">
192 <h3 class="do-card-title">Built for</h3>
193 <p class="do-card-lede">Every craft has its own setup. Pick yours for tier guidance and feature notes.</p>
194 <ul class="do-card-links">
195 <li><a href="/use-cases#musicians">Musicians</a></li>
196 <li><a href="/use-cases#writers">Writers</a></li>
197 <li><a href="/use-cases#podcasters">Podcasters</a></li>
198 <li><a href="/use-cases#developers">Developers</a></li>
199 <li><a href="/use-cases#game-devs">Game devs</a></li>
200 <li><a href="/use-cases#educators">Educators</a></li>
201 <li><a href="/use-cases#comic-creators">Comic creators</a></li>
202 <li><a href="/use-cases">Explore all</a></li>
203 </ul>
204 </div>
205
206 <div class="tier-section">
207 <h2 class="section-label">Stay in the loop</h2>
208 <p class="landing-prose mb-4">Get notified when something ships.</p>
209 <form class="notify-form" id="notify-form" onsubmit="return submitNotify(event)">
210 <input type="email" name="email" placeholder="you@example.com" required class="notify-input" aria-label="Email address">
211 <button type="submit" class="btn-primary">Notify Me</button>
212 </form>
213 <p class="notify-status" id="notify-status"></p>
214 </div>
215
216 <div class="secondary-links">
217 <a href="/login">Log in</a>
218 <a href="/docs">Docs</a>
219 <a href="/docs/roadmap">Roadmap</a>
220 <a href="/docs/story">About</a>
221 <a href="/team">Team</a>
222 </div>
223 </div>
224 {% endblock %}
225
226 {% block scripts %}
227 <script>
228 function submitNotify(e) {
229 e.preventDefault();
230 var form = document.getElementById('notify-form');
231 var status = document.getElementById('notify-status');
232 var email = form.querySelector('input[name="email"]').value;
233 var btn = form.querySelector('button');
234 btn.disabled = true;
235 btn.textContent = 'Sending...';
236 status.textContent = '';
237 fetch('/api/email-signup', {
238 method: 'POST',
239 headers: {'Content-Type': 'application/json'},
240 body: JSON.stringify({email: email})
241 }).then(function(r) {
242 if (r.ok) {
243 status.textContent = 'You\'re on the list.';
244 status.className = 'notify-status success';
245 form.querySelector('input[name="email"]').value = '';
246 } else {
247 return r.json().then(function(d) { throw new Error(d.error || 'Something went wrong'); });
248 }
249 }).catch(function(err) {
250 status.textContent = err.message;
251 status.className = 'notify-status error';
252 }).finally(function() {
253 btn.disabled = false;
254 btn.textContent = 'Notify Me';
255 });
256 return false;
257 }
258 </script>
259 {% endblock %}
260