{% extends "base.html" %} {%- import "partials/carousel.html" as carousel -%} {% block title %}Makenotwork{% endblock %} {% block body_attrs %} class="{{ crate::shell::measure(crate::shell::Measure::Contained) }}"{% endblock %} {% block head %} {% endblock %} {% block content %}
{{ crate::shell::wordmark()|safe }}

Sell your work directly. Keep what you earn.

A flat monthly subscription. No investors, no ads, no cut on your sales. Source-available, exportable in one click.

{% if founder_window_open %}

Founder pricing open Half off creator tiers, locked for life.

{% endif %} {% if let Some(shipped) = last_shipped %}

Last shipped: {{ shipped.title }} · {{ shipped.date }}

{% endif %} {% if !landing_carousel.is_empty() %}
{% call carousel::carousel("landing-shots", landing_carousel) %}{% endcall %}
{% endif %}

For creators

{% if founder_window_open %}
Basic ${{ tier_prices.basic_std }} ${{ tier_prices.basic_founder }}/mo
Small Files ${{ tier_prices.small_files_std }} ${{ tier_prices.small_files_founder }}/mo
Big Files ${{ tier_prices.big_files_std }} ${{ tier_prices.big_files_founder }}/mo
Everything ${{ tier_prices.everything_std }} ${{ tier_prices.everything_founder }}/mo
{% if let Some(remaining) = founder_slots_remaining %}

{{ remaining }} founder slot{% if *remaining != 1u32 %}s{% endif %} left of 1,000

{% else %}

Window closes at 1,000 creators or when we exit beta, whichever first.

{% endif %} {% endif %} {% if !founder_window_open %}

Flat monthly pricing from ${{ tier_prices.basic_std }}/mo. 0% platform fee. Every tier is the complete platform.

{% else %}

0% platform fee. Every tier is the complete platform.

{% endif %}

Fan+

Support the platform directly and get something back every month.

{# Keep this list and the one on /fan-plus identical, and keep both to what the code grants. Audited 2026-08-05 against the credit issuance path here and the perk checks in multithreaded; see the Fan+ guide page for the detail. #}
  • $5 monthly credit: a code each billing cycle, usable toward any purchase on the platform
  • + badge: shown next to your name on forum posts
  • Forum signatures: a signature block under everything you post
  • Image embeds: post images in forum threads
Sign up for Fan+ $8/month. Cancel anytime.

Browse creators →

Works in any browser, on any phone. No app to install.

{% if total_creators > 0 || total_items > 0 %}

{{ total_creators }} creator{% if total_creators != 1 %}s{% endif %} publishing {{ total_items }} item{% if total_items != 1 %}s{% endif %}.

{% endif %}

Built for

Every craft has its own setup. Pick yours for tier guidance and feature notes.

Get notified when something ships.

{# Real action and method, so this works with JS off. page-index.js intercepts the submit and posts the same encoding to the same route, which makes the script an enhancement (async, inline status, no reload) rather than the only path. It had neither attribute before, so a no-JS submit did a GET to / and the address went nowhere. #}
{% if let Some(token) = csrf_token %} {% endif %}
{# The no-JS outcome, carried back on the redirect. The script writes its own text into this element instead. #}

{% if let Some(ok) = notify_ok %}{% if ok %}You're on the list.{% else %}That address didn't look right.{% endif %}{% endif %}

{% endblock %} {% block scripts %} {% endblock %}