max / makenotwork
9 files changed,
+496 insertions,
-141 deletions
| @@ -0,0 +1,79 @@ | |||
| 1 | + | # Audio Hosting | |
| 2 | + | ||
| 3 | + | How to upload audio, how it streams, and how fans download it. | |
| 4 | + | ||
| 5 | + | --- | |
| 6 | + | ||
| 7 | + | ## Supported Formats | |
| 8 | + | ||
| 9 | + | | Format | Extension | Notes | | |
| 10 | + | |--------|-----------|-------| | |
| 11 | + | | FLAC | `.flac` | Recommended for lossless | | |
| 12 | + | | WAV | `.wav` | Accepted | | |
| 13 | + | | AIFF | `.aiff` | Accepted | | |
| 14 | + | | MP3 | `.mp3` | Accepted as-is | | |
| 15 | + | | AAC | `.m4a` | Accepted as-is | | |
| 16 | + | | OGG | `.ogg` | Accepted as-is | | |
| 17 | + | ||
| 18 | + | Upload the highest quality source you have. Files are stored as-is and streamed in-browser. | |
| 19 | + | ||
| 20 | + | --- | |
| 21 | + | ||
| 22 | + | ## Streaming | |
| 23 | + | ||
| 24 | + | Audio items get a built-in in-browser player. No app required. Streaming uses your original file — no separate transcoded preview, no quality loss. | |
| 25 | + | ||
| 26 | + | --- | |
| 27 | + | ||
| 28 | + | ## File Limits | |
| 29 | + | ||
| 30 | + | Per-file size limits depend on your [pricing tier](./tiers.md): {{ tier_limits.basic_per_file }} (Basic), {{ tier_limits.small_files_per_file }} (Small Files), {{ tier_limits.big_files_per_file }} (Big Files and Everything). Cover images: {{ tier_limits.basic_per_file }} on all tiers. | |
| 31 | + | ||
| 32 | + | Batch upload: up to 50 files at once. | |
| 33 | + | ||
| 34 | + | --- | |
| 35 | + | ||
| 36 | + | ## Upload Process | |
| 37 | + | ||
| 38 | + | 1. Drag files onto the upload area (or click to browse) | |
| 39 | + | 2. Files upload in parallel with progress indicators | |
| 40 | + | 3. Add metadata while uploading or after | |
| 41 | + | 4. Set tags, pricing, visibility | |
| 42 | + | 5. Save as draft or publish immediately | |
| 43 | + | ||
| 44 | + | --- | |
| 45 | + | ||
| 46 | + | ## Metadata | |
| 47 | + | ||
| 48 | + | **Required:** Title | |
| 49 | + | ||
| 50 | + | **Optional:** Description, genre tags, release date, credits/collaborators, lyrics | |
| 51 | + | ||
| 52 | + | **Auto-extracted:** Title, artist, album, track number, cover art (when embedded in the audio file). Override any auto-extracted value during upload. | |
| 53 | + | ||
| 54 | + | --- | |
| 55 | + | ||
| 56 | + | ## Album Upload | |
| 57 | + | ||
| 58 | + | 1. Create a [project](./projects.md) first | |
| 59 | + | 2. Upload all tracks | |
| 60 | + | 3. Drag to reorder | |
| 61 | + | 4. Set album-level metadata | |
| 62 | + | 5. Publish project (publishes all tracks) | |
| 63 | + | ||
| 64 | + | --- | |
| 65 | + | ||
| 66 | + | ## Downloads | |
| 67 | + | ||
| 68 | + | Fans who purchase the item or subscribe to a tier can download the original file directly. No DRM, no device tracking, no per-download fees. Re-downloads allowed anytime. | |
| 69 | + | ||
| 70 | + | To offer multiple formats (e.g., FLAC and MP3), upload them as separate [versions](./items.md#versions) of the same item. | |
| 71 | + | ||
| 72 | + | --- | |
| 73 | + | ||
| 74 | + | ## See Also | |
| 75 | + | ||
| 76 | + | - [Video Hosting](./video.md) | |
| 77 | + | - [Software & Downloads](./software.md) | |
| 78 | + | - [Items](./items.md): organizing items and projects | |
| 79 | + | - [Metadata & SEO](./metadata.md): tags, descriptions, and discoverability |
| @@ -1,91 +0,0 @@ | |||
| 1 | - | # Uploading & Downloads | |
| 2 | - | ||
| 3 | - | How to upload content and how fans download it. | |
| 4 | - | ||
| 5 | - | --- | |
| 6 | - | ||
| 7 | - | ## Uploading Audio | |
| 8 | - | ||
| 9 | - | ### Supported Formats | |
| 10 | - | ||
| 11 | - | | Format | Extension | Notes | | |
| 12 | - | |--------|-----------|-------| | |
| 13 | - | | FLAC | `.flac` | Recommended for lossless | | |
| 14 | - | | WAV | `.wav` | Accepted | | |
| 15 | - | | AIFF | `.aiff` | Accepted | | |
| 16 | - | | MP3 | `.mp3` | Accepted as-is | | |
| 17 | - | | AAC | `.m4a` | Accepted as-is | | |
| 18 | - | | OGG | `.ogg` | Accepted as-is | | |
| 19 | - | ||
| 20 | - | Upload the highest quality source you have. Files are stored as-is and streamed in-browser. | |
| 21 | - | ||
| 22 | - | ### File Limits | |
| 23 | - | ||
| 24 | - | Per-file size limits depend on your [pricing tier](./tiers.md): {{ tier_limits.basic_per_file }} (Basic), {{ tier_limits.small_files_per_file }} (Small Files), {{ tier_limits.big_files_per_file }} (Big Files and Everything). Cover images: {{ tier_limits.basic_per_file }} on all tiers. | |
| 25 | - | ||
| 26 | - | Batch upload: up to 50 files at once. | |
| 27 | - | ||
| 28 | - | ### Upload Process | |
| 29 | - | ||
| 30 | - | 1. Drag files onto the upload area (or click to browse) | |
| 31 | - | 2. Files upload in parallel with progress indicators | |
| 32 | - | 3. Add metadata while uploading or after | |
| 33 | - | 4. Set tags, pricing, visibility | |
| 34 | - | 5. Save as draft or publish immediately | |
| 35 | - | ||
| 36 | - | ### Metadata | |
| 37 | - | ||
| 38 | - | **Required:** Title | |
| 39 | - | ||
| 40 | - | **Optional:** Description, genre tags, release date, credits/collaborators, lyrics | |
| 41 | - | ||
| 42 | - | **Auto-extracted**: We automatically read song info (title, artist, album, track number, cover art) embedded in your audio files. You can override any auto-extracted values. | |
| 43 | - | ||
| 44 | - | ### Album Upload | |
| 45 | - | ||
| 46 | - | 1. Create a project first | |
| 47 | - | 2. Upload all tracks | |
| 48 | - | 3. Drag to reorder | |
| 49 | - | 4. Set album-level metadata | |
| 50 | - | 5. Publish project (publishes all tracks) | |
| 51 | - | ||
| 52 | - | --- | |
| 53 | - | ||
| 54 | - | ## Downloads | |
| 55 | - | ||
| 56 | - | Fans who purchase your content can download it directly. No DRM, no restrictions. | |
| 57 | - | ||
| 58 | - | ### How It Works | |
| 59 | - | ||
| 60 | - | 1. Fan purchases item or subscribes | |
| 61 | - | 2. Download button appears on item page | |
| 62 | - | 3. File downloads in original format | |
| 63 | - | ||
| 64 | - | Re-downloads allowed anytime, unlimited. | |
| 65 | - | ||
| 66 | - | ### Download Formats | |
| 67 | - | ||
| 68 | - | Files are served in their original uploaded format. No transcoding. To offer multiple formats (e.g., FLAC and MP3), upload them as separate versions of the same item. | |
| 69 | - | ||
| 70 | - | ### Album/Project Downloads | |
| 71 | - | ||
| 72 | - | Fans download items individually from each item's page. | |
| 73 | - | ||
| 74 | - | ### Download Limits | |
| 75 | - | ||
| 76 | - | No limits. No device tracking. No DRM. | |
| 77 | - | ||
| 78 | - | ### Bandwidth Costs | |
| 79 | - | ||
| 80 | - | Downloads are included in your membership. No per-download fees. | |
| 81 | - | ||
| 82 | - | ### Offline Access | |
| 83 | - | ||
| 84 | - | Downloaded files work offline forever. Fans own what they buy. | |
| 85 | - | ||
| 86 | - | --- | |
| 87 | - | ||
| 88 | - | ## See Also | |
| 89 | - | ||
| 90 | - | - [Items](./items.md): Organizing items and projects | |
| 91 | - | - [Metadata & SEO](./metadata.md): Tags, descriptions, and discoverability |
| @@ -0,0 +1,79 @@ | |||
| 1 | + | # Software & Downloads | |
| 2 | + | ||
| 3 | + | How to host and distribute software, documents, archives, and anything else that's downloaded rather than streamed. | |
| 4 | + | ||
| 5 | + | --- | |
| 6 | + | ||
| 7 | + | ## What This Covers | |
| 8 | + | ||
| 9 | + | Anything fans download as a file rather than play in-browser: | |
| 10 | + | ||
| 11 | + | - Software builds (DMG, EXE, AppImage, ZIP, TAR) | |
| 12 | + | - Documents (PDF, EPUB, comics) | |
| 13 | + | - Source code archives | |
| 14 | + | - Sample packs, presets, project files | |
| 15 | + | - Anything else uploaded that isn't audio or video | |
| 16 | + | ||
| 17 | + | Audio and video have dedicated pages: [Audio Hosting](./audio.md), [Video Hosting](./video.md). | |
| 18 | + | ||
| 19 | + | --- | |
| 20 | + | ||
| 21 | + | ## Supported Formats | |
| 22 | + | ||
| 23 | + | Any file type is accepted. Files are stored as-is — no transcoding, no transformation. | |
| 24 | + | ||
| 25 | + | The platform applies content scanning (YARA rules, malware feeds) on every upload. Files flagged by the scanner are held pending review rather than published. | |
| 26 | + | ||
| 27 | + | --- | |
| 28 | + | ||
| 29 | + | ## File Limits | |
| 30 | + | ||
| 31 | + | Per-file size limits depend on your [pricing tier](./tiers.md): {{ tier_limits.basic_per_file }} (Basic), {{ tier_limits.small_files_per_file }} (Small Files), {{ tier_limits.big_files_per_file }} (Big Files and Everything). | |
| 32 | + | ||
| 33 | + | Software builds tend to need Big Files or Everything. | |
| 34 | + | ||
| 35 | + | --- | |
| 36 | + | ||
| 37 | + | ## Upload Process | |
| 38 | + | ||
| 39 | + | 1. Drag the file onto the upload area (or click to browse) | |
| 40 | + | 2. Upload runs with a progress indicator | |
| 41 | + | 3. Add metadata while uploading or after | |
| 42 | + | 4. Set tags, pricing, visibility | |
| 43 | + | 5. Save as draft or publish immediately | |
| 44 | + | ||
| 45 | + | --- | |
| 46 | + | ||
| 47 | + | ## Versions | |
| 48 | + | ||
| 49 | + | Use [versions](./items.md#versions) to ship updates without forcing fans to re-purchase. Each version keeps its own file; fans download whichever they want. | |
| 50 | + | ||
| 51 | + | For platform builds (macOS / Windows / Linux), upload each as a separate version with a clear name (e.g. *"1.4.2 (macOS arm64)"*). | |
| 52 | + | ||
| 53 | + | --- | |
| 54 | + | ||
| 55 | + | ## License Keys | |
| 56 | + | ||
| 57 | + | For paid software, generate [license keys](./license-keys.md) per purchase. Keys are issued on purchase and visible in the fan's library next to the download link. | |
| 58 | + | ||
| 59 | + | --- | |
| 60 | + | ||
| 61 | + | ## OTA Updates | |
| 62 | + | ||
| 63 | + | For Tauri and similar desktop apps, the platform exposes an [OTA update endpoint](../developer/ota.md) that your app can poll for new versions. Signed manifest, signature sidecar per build. | |
| 64 | + | ||
| 65 | + | --- | |
| 66 | + | ||
| 67 | + | ## Downloads | |
| 68 | + | ||
| 69 | + | Fans who purchase the item or subscribe to a tier can download the file directly. No DRM, no device tracking, no per-download fees. Re-downloads allowed anytime. | |
| 70 | + | ||
| 71 | + | --- | |
| 72 | + | ||
| 73 | + | ## See Also | |
| 74 | + | ||
| 75 | + | - [Audio Hosting](./audio.md) | |
| 76 | + | - [Video Hosting](./video.md) | |
| 77 | + | - [Items](./items.md): organizing items and projects | |
| 78 | + | - [License Keys](./license-keys.md): per-purchase keys for paid software | |
| 79 | + | - [OTA Updates](../developer/ota.md): in-app update polling |
| @@ -0,0 +1,71 @@ | |||
| 1 | + | # Video Hosting | |
| 2 | + | ||
| 3 | + | How to upload video, how it streams, and how fans download it. | |
| 4 | + | ||
| 5 | + | --- | |
| 6 | + | ||
| 7 | + | ## Supported Formats | |
| 8 | + | ||
| 9 | + | Any modern browser-supported video format. Most creators upload: | |
| 10 | + | ||
| 11 | + | | Format | Extension | Notes | | |
| 12 | + | |--------|-----------|-------| | |
| 13 | + | | MP4 (H.264 / H.265) | `.mp4` | Most widely compatible | | |
| 14 | + | | WebM (VP9) | `.webm` | Open codec, good compression | | |
| 15 | + | | QuickTime | `.mov` | Accepted; some browsers transcode on download | | |
| 16 | + | ||
| 17 | + | Files are stored as-is. The in-browser player streams whatever you upload, so encode for the browser you want to reach. | |
| 18 | + | ||
| 19 | + | --- | |
| 20 | + | ||
| 21 | + | ## Streaming | |
| 22 | + | ||
| 23 | + | Video items get a built-in HTML5 player with the cover image as the poster frame. No app required, no third-party embed. Streaming preloads metadata only — full bytes load as the viewer plays. | |
| 24 | + | ||
| 25 | + | Live streaming is on the roadmap. | |
| 26 | + | ||
| 27 | + | --- | |
| 28 | + | ||
| 29 | + | ## File Limits | |
| 30 | + | ||
| 31 | + | Per-file size limits depend on your [pricing tier](./tiers.md): {{ tier_limits.basic_per_file }} (Basic), {{ tier_limits.small_files_per_file }} (Small Files), {{ tier_limits.big_files_per_file }} (Big Files and Everything). Cover images: {{ tier_limits.basic_per_file }} on all tiers. | |
| 32 | + | ||
| 33 | + | Most full-length video uploads will need Big Files or Everything. | |
| 34 | + | ||
| 35 | + | --- | |
| 36 | + | ||
| 37 | + | ## Upload Process | |
| 38 | + | ||
| 39 | + | 1. Drag the video file onto the upload area (or click to browse) | |
| 40 | + | 2. Upload runs with a progress indicator | |
| 41 | + | 3. Add metadata while uploading or after | |
| 42 | + | 4. Set a cover image (used as the poster frame and OG card) | |
| 43 | + | 5. Set tags, pricing, visibility | |
| 44 | + | 6. Save as draft or publish immediately | |
| 45 | + | ||
| 46 | + | --- | |
| 47 | + | ||
| 48 | + | ## Metadata | |
| 49 | + | ||
| 50 | + | **Required:** Title | |
| 51 | + | ||
| 52 | + | **Optional:** Description, tags, release date, credits/collaborators, cover image | |
| 53 | + | ||
| 54 | + | **Auto-extracted:** Duration | |
| 55 | + | ||
| 56 | + | --- | |
| 57 | + | ||
| 58 | + | ## Downloads | |
| 59 | + | ||
| 60 | + | Fans who purchase the item or subscribe to a tier can download the original file directly. No DRM, no device tracking, no per-download fees. Re-downloads allowed anytime. | |
| 61 | + | ||
| 62 | + | To offer multiple resolutions or formats, upload them as separate [versions](./items.md#versions) of the same item. | |
| 63 | + | ||
| 64 | + | --- | |
| 65 | + | ||
| 66 | + | ## See Also | |
| 67 | + | ||
| 68 | + | - [Audio Hosting](./audio.md) | |
| 69 | + | - [Software & Downloads](./software.md) | |
| 70 | + | - [Items](./items.md): organizing items and projects | |
| 71 | + | - [Media Library](./media-library.md): images and videos embedded in item descriptions and blog posts |
| @@ -54,7 +54,7 @@ pub async fn docs_index( | |||
| 54 | 54 | if let Some(guide) = sections.iter_mut().find(|s| s.name == "Guide") { | |
| 55 | 55 | const SUBCATEGORIES: &[(&str, &[&str])] = &[ | |
| 56 | 56 | ("Getting Started", &["getting-started", "sandbox", "profile", "security", "best-practices"]), | |
| 57 | - | ("Content & Organization", &["02-content", "items", "projects", "files", "tags", "metadata", "collections", "blog"]), | |
| 57 | + | ("Content & Organization", &["02-content", "items", "projects", "audio", "video", "software", "tags", "metadata", "collections", "blog"]), | |
| 58 | 58 | ("Selling & Revenue", &["03-selling", "pricing", "payouts", "analytics", "promo-codes", "contact-sharing", "fan-plus"]), | |
| 59 | 59 | ("Fans & Distribution", &["fan-guide", "discovery", "rss", "mailing-lists", "export"]), | |
| 60 | 60 | ("Advanced", &["custom-domains", "git", "migration", "tiers"]), |
| @@ -3,7 +3,7 @@ | |||
| 3 | 3 | //! Provides presigned URL generation for client-direct uploads/downloads. | |
| 4 | 4 | //! Delegates S3 operations to the shared `s3_storage` crate. | |
| 5 | 5 | //! | |
| 6 | - | //! See also: `/docs/guide/files` | |
| 6 | + | //! See also: `/docs/guide/audio`, `/docs/guide/video`, `/docs/guide/software` | |
| 7 | 7 | ||
| 8 | 8 | use std::str::FromStr; | |
| 9 | 9 |
| @@ -5695,6 +5695,22 @@ textarea:focus-visible { | |||
| 5695 | 5695 | margin-bottom: 0; | |
| 5696 | 5696 | } | |
| 5697 | 5697 | ||
| 5698 | + | .fork-revenue-line { | |
| 5699 | + | font-size: 0.9rem; | |
| 5700 | + | opacity: 0.8; | |
| 5701 | + | margin: 0.75rem 0 0.5rem; | |
| 5702 | + | line-height: 1.5; | |
| 5703 | + | } | |
| 5704 | + | ||
| 5705 | + | .fork-revenue-line a { | |
| 5706 | + | border-bottom: 1px solid transparent; | |
| 5707 | + | transition: border-color 0.2s ease; | |
| 5708 | + | } | |
| 5709 | + | ||
| 5710 | + | .fork-revenue-line a:hover { | |
| 5711 | + | border-bottom-color: currentColor; | |
| 5712 | + | } | |
| 5713 | + | ||
| 5698 | 5714 | .landing-fork { | |
| 5699 | 5715 | display: grid; | |
| 5700 | 5716 | grid-template-columns: 1fr 1fr; | |
| @@ -5753,6 +5769,17 @@ textarea:focus-visible { | |||
| 5753 | 5769 | opacity: 1; | |
| 5754 | 5770 | } | |
| 5755 | 5771 | ||
| 5772 | + | .fork-lede { | |
| 5773 | + | font-size: 0.95rem; | |
| 5774 | + | line-height: 1.55; | |
| 5775 | + | margin: 0 0 1rem; | |
| 5776 | + | } | |
| 5777 | + | ||
| 5778 | + | .landing-browse-cta { | |
| 5779 | + | text-align: center; | |
| 5780 | + | margin: 1.25rem 0 0; | |
| 5781 | + | } | |
| 5782 | + | ||
| 5756 | 5783 | .founder-tagline { | |
| 5757 | 5784 | font-family: var(--font-body); | |
| 5758 | 5785 | font-size: 0.95rem; | |
| @@ -5760,6 +5787,14 @@ textarea:focus-visible { | |||
| 5760 | 5787 | margin: 1.25rem auto 0; | |
| 5761 | 5788 | max-width: 560px; | |
| 5762 | 5789 | color: var(--text); | |
| 5790 | + | display: flex; | |
| 5791 | + | flex-direction: column; | |
| 5792 | + | align-items: center; | |
| 5793 | + | gap: 0.5rem; | |
| 5794 | + | } | |
| 5795 | + | ||
| 5796 | + | .founder-tagline-detail { | |
| 5797 | + | display: block; | |
| 5763 | 5798 | } | |
| 5764 | 5799 | ||
| 5765 | 5800 | .founder-tagline-mark { | |
| @@ -5772,7 +5807,6 @@ textarea:focus-visible { | |||
| 5772 | 5807 | padding: 0.15rem 0.5rem; | |
| 5773 | 5808 | border: 1px solid var(--highlight); | |
| 5774 | 5809 | border-radius: 3px; | |
| 5775 | - | margin-right: 0.4rem; | |
| 5776 | 5810 | white-space: nowrap; | |
| 5777 | 5811 | } | |
| 5778 | 5812 | ||
| @@ -6037,6 +6071,125 @@ textarea:focus-visible { | |||
| 6037 | 6071 | font-size: 0.85rem; | |
| 6038 | 6072 | } | |
| 6039 | 6073 | ||
| 6074 | + | .do-rail { | |
| 6075 | + | list-style: none; | |
| 6076 | + | margin: 2rem 0 1.5rem; | |
| 6077 | + | padding: 0; | |
| 6078 | + | display: grid; | |
| 6079 | + | grid-template-columns: repeat(3, 1fr); | |
| 6080 | + | gap: 1rem; | |
| 6081 | + | width: 100%; | |
| 6082 | + | } | |
| 6083 | + | ||
| 6084 | + | .do-card { | |
| 6085 | + | background: transparent; | |
| 6086 | + | border: 1px solid var(--border); | |
| 6087 | + | padding: 1.25rem; | |
| 6088 | + | text-align: left; | |
| 6089 | + | display: flex; | |
| 6090 | + | flex-direction: column; | |
| 6091 | + | } | |
| 6092 | + | ||
| 6093 | + | .do-card-title { | |
| 6094 | + | font-family: var(--font-mono); | |
| 6095 | + | font-size: 0.9rem; | |
| 6096 | + | font-weight: 600; | |
| 6097 | + | text-transform: uppercase; | |
| 6098 | + | letter-spacing: 0.05em; | |
| 6099 | + | margin: 0 0 0.5rem; | |
| 6100 | + | } | |
| 6101 | + | ||
| 6102 | + | .do-card-lede { | |
| 6103 | + | font-size: 0.92rem; | |
| 6104 | + | line-height: 1.5; | |
| 6105 | + | opacity: 0.78; | |
| 6106 | + | margin: 0 0 0.85rem; | |
| 6107 | + | } | |
| 6108 | + | ||
| 6109 | + | .do-card-links { | |
| 6110 | + | list-style: none; | |
| 6111 | + | margin: auto 0 0; | |
| 6112 | + | padding: 0.85rem 0 0; | |
| 6113 | + | border-top: 1px solid var(--border); | |
| 6114 | + | display: flex; | |
| 6115 | + | flex-wrap: wrap; | |
| 6116 | + | gap: 0.35rem 0.9rem; | |
| 6117 | + | } | |
| 6118 | + | ||
| 6119 | + | .do-card-links a { | |
| 6120 | + | font-size: 0.88rem; | |
| 6121 | + | border-bottom: 1px solid transparent; | |
| 6122 | + | transition: border-color 0.2s ease; | |
| 6123 | + | } | |
| 6124 | + | ||
| 6125 | + | .do-card-links a:hover { | |
| 6126 | + | border-bottom-color: currentColor; | |
| 6127 | + | } | |
| 6128 | + | ||
| 6129 | + | @media (max-width: 640px) { | |
| 6130 | + | .do-rail { | |
| 6131 | + | grid-template-columns: 1fr; | |
| 6132 | + | } | |
| 6133 | + | } | |
| 6134 | + | ||
| 6135 | + | .do-card--wide { | |
| 6136 | + | margin-top: 2rem; | |
| 6137 | + | width: 100%; | |
| 6138 | + | } | |
| 6139 | + | ||
| 6140 | + | .contrast-rail { | |
| 6141 | + | list-style: none; | |
| 6142 | + | margin: 1rem 0 0; | |
| 6143 | + | padding: 0; | |
| 6144 | + | display: grid; | |
| 6145 | + | grid-template-columns: repeat(4, 1fr); | |
| 6146 | + | gap: 1rem; | |
| 6147 | + | width: 100%; | |
| 6148 | + | } | |
| 6149 | + | ||
| 6150 | + | .contrast-card { | |
| 6151 | + | border-top: 1px solid var(--border); | |
| 6152 | + | padding: 0.75rem 0.25rem 0; | |
| 6153 | + | text-align: left; | |
| 6154 | + | } | |
| 6155 | + | ||
| 6156 | + | .contrast-card-title { | |
| 6157 | + | font-family: var(--font-mono); | |
| 6158 | + | font-size: 0.78rem; | |
| 6159 | + | letter-spacing: 0.04em; | |
| 6160 | + | text-transform: uppercase; | |
| 6161 | + | opacity: 0.5; | |
| 6162 | + | text-decoration: line-through; | |
| 6163 | + | text-decoration-thickness: 1px; | |
| 6164 | + | margin: 0 0 0.5rem; | |
| 6165 | + | font-weight: 600; | |
| 6166 | + | } | |
| 6167 | + | ||
| 6168 | + | .contrast-card-links { | |
| 6169 | + | list-style: none; | |
| 6170 | + | margin: 0; | |
| 6171 | + | padding: 0; | |
| 6172 | + | display: flex; | |
| 6173 | + | flex-wrap: wrap; | |
| 6174 | + | gap: 0.35rem 0.9rem; | |
| 6175 | + | } | |
| 6176 | + | ||
| 6177 | + | .contrast-card-links a { | |
| 6178 | + | font-size: 0.92rem; | |
| 6179 | + | border-bottom: 1px solid transparent; | |
| 6180 | + | transition: border-color 0.2s ease; | |
| 6181 | + | } | |
| 6182 | + | ||
| 6183 | + | .contrast-card-links a:hover { | |
| 6184 | + | border-bottom-color: currentColor; | |
| 6185 | + | } | |
| 6186 | + | ||
| 6187 | + | @media (max-width: 640px) { | |
| 6188 | + | .contrast-rail { | |
| 6189 | + | grid-template-columns: 1fr; | |
| 6190 | + | } | |
| 6191 | + | } | |
| 6192 | + | ||
| 6040 | 6193 | .explore-links { | |
| 6041 | 6194 | display: flex; | |
| 6042 | 6195 | flex-wrap: wrap; |
| @@ -19,16 +19,51 @@ | |||
| 19 | 19 | <div class="landing-hero"> | |
| 20 | 20 | <h1 class="brand-h1">Makenot<span class="dot">.</span>work</h1> | |
| 21 | 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> | |
| 22 | + | <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 | 23 | ||
| 25 | 24 | {% if founder_window_open %} | |
| 26 | 25 | <p class="founder-tagline"> | |
| 27 | - | <span class="founder-tagline-mark">Founder pricing open</span>: | |
| 28 | - | half off creator tiers, <strong>locked for life</strong>. | |
| 26 | + | <span class="founder-tagline-mark">Founder pricing open</span> | |
| 27 | + | <span class="founder-tagline-detail">Half off creator tiers, <strong>locked for life</strong>.</span> | |
| 29 | 28 | </p> | |
| 30 | 29 | {% endif %} | |
| 31 | 30 | ||
| 31 | + | <ul class="do-rail" aria-label="What we offer"> | |
| 32 | + | <li class="do-card"> | |
| 33 | + | <h3 class="do-card-title">A complete storefront</h3> | |
| 34 | + | <p class="do-card-lede">Sell anything digital. Bundles, splits, license keys, promo codes.</p> | |
| 35 | + | <ul class="do-card-links"> | |
| 36 | + | <li><a href="/docs/items">Items</a></li> | |
| 37 | + | <li><a href="/docs/bundles">Bundles</a></li> | |
| 38 | + | <li><a href="/docs/projects">Projects</a></li> | |
| 39 | + | <li><a href="/docs/splits">Splits</a></li> | |
| 40 | + | <li><a href="/docs/license-keys">Keys</a></li> | |
| 41 | + | </ul> | |
| 42 | + | </li> | |
| 43 | + | <li class="do-card"> | |
| 44 | + | <h3 class="do-card-title">Fan engagement, built in</h3> | |
| 45 | + | <p class="do-card-lede">Profile, blog, mailing list, memberships, tips — no add-ons.</p> | |
| 46 | + | <ul class="do-card-links"> | |
| 47 | + | <li><a href="/docs/profile">Profiles</a></li> | |
| 48 | + | <li><a href="/docs/blog">Blogs</a></li> | |
| 49 | + | <li><a href="/docs/mailing-lists">Mailing lists</a></li> | |
| 50 | + | <li><a href="/docs/forums">Forums</a></li> | |
| 51 | + | <li><a href="/docs/tips">Tips</a></li> | |
| 52 | + | </ul> | |
| 53 | + | </li> | |
| 54 | + | <li class="do-card"> | |
| 55 | + | <h3 class="do-card-title">Hosting and distribution</h3> | |
| 56 | + | <p class="do-card-lede">Audio and video streaming, file downloads, git repos, custom domains. Live streaming on the way.</p> | |
| 57 | + | <ul class="do-card-links"> | |
| 58 | + | <li><a href="/docs/audio">Audio</a></li> | |
| 59 | + | <li><a href="/docs/video">Video</a></li> | |
| 60 | + | <li><a href="/docs/software">Downloads</a></li> | |
| 61 | + | <li><a href="/docs/git">Git</a></li> | |
| 62 | + | <li><a href="/docs/custom-domains">Custom domains</a></li> | |
| 63 | + | </ul> | |
| 64 | + | </li> | |
| 65 | + | </ul> | |
| 66 | + | ||
| 32 | 67 | <div class="landing-fork"> | |
| 33 | 68 | <div class="fork-card{% if founder_window_open %} fork-card--founder{% endif %}"> | |
| 34 | 69 | <h2 class="fork-heading">For creators</h2> | |
| @@ -65,16 +100,11 @@ | |||
| 65 | 100 | {% endif %} | |
| 66 | 101 | {% endif %} | |
| 67 | 102 | ||
| 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> | |
| 103 | + | {% if !founder_window_open %} | |
| 104 | + | <p class="fork-lede">Flat monthly pricing from ${{ tier_prices.basic_std }}/mo. 0% platform fee. Every tier is the complete platform.</p> | |
| 105 | + | {% else %} | |
| 106 | + | <p class="fork-lede">0% platform fee. Every tier is the complete platform.</p> | |
| 107 | + | {% endif %} | |
| 78 | 108 | <div class="fork-actions"> | |
| 79 | 109 | <a class="btn-primary btn--large" href="/join">{% if founder_window_open %}Claim founder pricing{% else %}Join as a creator{% endif %}</a> | |
| 80 | 110 | <a class="fork-secondary-link" href="/sandbox">Try the dashboard first</a> | |
| @@ -82,47 +112,81 @@ | |||
| 82 | 112 | </div> | |
| 83 | 113 | ||
| 84 | 114 | <div class="fork-card"> | |
| 85 | - | <h2 class="fork-heading">For fans</h2> | |
| 115 | + | <h2 class="fork-heading">Fan+</h2> | |
| 116 | + | <p class="fork-lede">Support the platform directly and get something back every month.</p> | |
| 86 | 117 | <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> | |
| 118 | + | <li><strong>$5 monthly credit</strong>: usable toward any purchase on the platform</li> | |
| 119 | + | <li><strong>+ badge</strong>: shown next to your name in social contexts</li> | |
| 120 | + | <li><strong>Platform polls and dev community</strong>: a say in what we build next</li> | |
| 91 | 121 | </ul> | |
| 92 | 122 | <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> | |
| 123 | + | <a class="btn-primary btn--large" href="/fan-plus">Sign up for Fan+</a> | |
| 124 | + | <span class="fork-secondary-link">$8/month. Cancel anytime.</span> | |
| 95 | 125 | </div> | |
| 96 | 126 | </div> | |
| 97 | 127 | </div> | |
| 98 | 128 | ||
| 129 | + | <p class="landing-browse-cta"> | |
| 130 | + | <a class="fork-secondary-link" href="/discover">Browse creators →</a> | |
| 131 | + | </p> | |
| 132 | + | ||
| 99 | 133 | {% if total_creators > 0 || total_items > 0 %} | |
| 100 | 134 | <p class="landing-stats-line"> | |
| 101 | 135 | <strong>{{ total_creators }}</strong> creator{% if total_creators != 1 %}s{% endif %} publishing <strong>{{ total_items }}</strong> item{% if total_items != 1 %}s{% endif %}. | |
| 102 | 136 | </p> | |
| 103 | 137 | {% endif %} | |
| 104 | 138 | ||
| 105 | - | <p class="landing-stats-line"> | |
| 106 | - | <a href="/changelog">What's new</a> | |
| 107 | - | </p> | |
| 108 | - | ||
| 109 | - | ||
| 110 | 139 | <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 }}–${{ tier_prices.everything_std }}).</li> | |
| 116 | - | <li><strong>Built to last</strong>: no debt, no growth mandates, no reason to enshittify.</li> | |
| 140 | + | <h2 class="section-label">What we do differently</h2> | |
| 141 | + | <ul class="contrast-rail" aria-label="Common platform habits and how we differ"> | |
| 142 | + | <li class="contrast-card"> | |
| 143 | + | <h3 class="contrast-card-title">Track you</h3> | |
| 144 | + | <ul class="contrast-card-links"> | |
| 145 | + | <li><a href="/docs/privacy-policy">No trackers</a></li> | |
| 146 | + | <li><a href="/docs/privacy-policy">No ads</a></li> | |
| 147 | + | <li><a href="/docs/privacy-policy">No data sales</a></li> | |
| 148 | + | </ul> | |
| 149 | + | </li> | |
| 150 | + | <li class="contrast-card"> | |
| 151 | + | <h3 class="contrast-card-title">Lock you in</h3> | |
| 152 | + | <ul class="contrast-card-links"> | |
| 153 | + | <li><a href="/docs/portability">Full export</a></li> | |
| 154 | + | <li><a href="/docs/account-lifecycle">Cancel anytime</a></li> | |
| 155 | + | <li><a href="/docs/export">Original files</a></li> | |
| 156 | + | </ul> | |
| 157 | + | </li> | |
| 158 | + | <li class="contrast-card"> | |
| 159 | + | <h3 class="contrast-card-title">Take a cut</h3> | |
| 160 | + | <ul class="contrast-card-links"> | |
| 161 | + | <li><a href="/docs/how-we-work">0% platform fee</a></li> | |
| 162 | + | <li><a href="/docs/economics">No surge pricing</a></li> | |
| 163 | + | <li><a href="/docs/economics">No paid acquisition</a></li> | |
| 164 | + | </ul> | |
| 165 | + | </li> | |
| 166 | + | <li class="contrast-card"> | |
| 167 | + | <h3 class="contrast-card-title">Hide the code</h3> | |
| 168 | + | <ul class="contrast-card-links"> | |
| 169 | + | <li><a href="/docs/open-source">Source available</a></li> | |
| 170 | + | <li><a href="/source">Read the commits</a></li> | |
| 171 | + | <li><a href="/docs/open-source">PolyForm-NC license</a></li> | |
| 172 | + | </ul> | |
| 173 | + | </li> | |
| 117 | 174 | </ul> | |
| 118 | - | <a class="section-link" href="/docs/how-we-work">How the business model works</a> | |
| 119 | 175 | </div> | |
| 120 | 176 | ||
| 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> | |
| 177 | + | <div class="do-card do-card--wide"> | |
| 178 | + | <h3 class="do-card-title">Built for</h3> | |
| 179 | + | <p class="do-card-lede">Every craft has its own setup. Pick yours for tier guidance and feature notes.</p> | |
| 180 | + | <ul class="do-card-links"> | |
| 181 | + | <li><a href="/use-cases#musicians">Musicians</a></li> | |
| 182 | + | <li><a href="/use-cases#writers">Writers</a></li> | |
| 183 | + | <li><a href="/use-cases#podcasters">Podcasters</a></li> | |
| 184 | + | <li><a href="/use-cases#developers">Developers</a></li> | |
| 185 | + | <li><a href="/use-cases#game-devs">Game devs</a></li> | |
| 186 | + | <li><a href="/use-cases#educators">Educators</a></li> | |
| 187 | + | <li><a href="/use-cases#comic-creators">Comic creators</a></li> | |
| 188 | + | <li><a href="/use-cases">Explore all</a></li> | |
| 189 | + | </ul> | |
| 126 | 190 | </div> | |
| 127 | 191 | ||
| 128 | 192 | <div class="tier-section"> |
| @@ -13,7 +13,7 @@ | |||
| 13 | 13 | <div class="tier-section"> | |
| 14 | 14 | <h2 class="section-label">Available now</h2> | |
| 15 | 15 | <div class="use-case-grid"> | |
| 16 | - | <div class="use-case-card"> | |
| 16 | + | <div class="use-case-card" id="musicians"> | |
| 17 | 17 | <div class="use-case-title">Musicians</div> | |
| 18 | 18 | <div class="use-case-who">Bands, solo artists, producers</div> | |
| 19 | 19 | <p class="use-case-desc">Sell albums, singles, and EPs with in-browser streaming, chapter markers, and cover art.</p> | |
| @@ -27,7 +27,7 @@ | |||
| 27 | 27 | <div class="use-case-tier">Small Files ${{ tier_prices.small_files_std }}/mo · {{ tier_prices.small_files_total }}, {{ tier_prices.small_files_per_file }}/file</div> | |
| 28 | 28 | </div> | |
| 29 | 29 | ||
| 30 | - | <div class="use-case-card"> | |
| 30 | + | <div class="use-case-card" id="podcasters"> | |
| 31 | 31 | <div class="use-case-title">Podcasters</div> | |
| 32 | 32 | <div class="use-case-who">Independent shows, networks</div> | |
| 33 | 33 | <p class="use-case-desc">Host and distribute your podcast with full RSS support for every major directory.</p> | |
| @@ -40,7 +40,7 @@ | |||
| 40 | 40 | <div class="use-case-tier">Small Files ${{ tier_prices.small_files_std }}/mo · {{ tier_prices.small_files_total }}, {{ tier_prices.small_files_per_file }}/file</div> | |
| 41 | 41 | </div> | |
| 42 | 42 | ||
| 43 | - | <div class="use-case-card"> | |
| 43 | + | <div class="use-case-card" id="writers"> | |
| 44 | 44 | <div class="use-case-title">Writers</div> | |
| 45 | 45 | <div class="use-case-who">Bloggers, newsletter writers, authors</div> | |
| 46 | 46 | <p class="use-case-desc">Publish long-form writing with Markdown, per-project blogs, and subscriber broadcasts.</p> | |
| @@ -54,7 +54,7 @@ | |||
| 54 | 54 | <div class="use-case-tier">Basic ${{ tier_prices.basic_std }}/mo · {{ tier_prices.basic_total }}, {{ tier_prices.basic_per_file }}/file</div> | |
| 55 | 55 | </div> | |
| 56 | 56 | ||
| 57 | - | <div class="use-case-card"> | |
| 57 | + | <div class="use-case-card" id="developers"> | |
| 58 | 58 | <div class="use-case-title">Software Developers</div> | |
| 59 | 59 | <div class="use-case-who">Indie devs, tool makers, plugin authors</div> | |
| 60 | 60 | <p class="use-case-desc">Distribute software with versioned releases, license keys, and a built-in git browser.</p> | |
| @@ -67,7 +67,7 @@ | |||
| 67 | 67 | <div class="use-case-tier">Small Files ${{ tier_prices.small_files_std }}/mo · {{ tier_prices.small_files_total }}, {{ tier_prices.small_files_per_file }}/file</div> | |
| 68 | 68 | </div> | |
| 69 | 69 | ||
| 70 | - | <div class="use-case-card"> | |
| 70 | + | <div class="use-case-card" id="sample-packs"> | |
| 71 | 71 | <div class="use-case-title">Sample Packs</div> | |
| 72 | 72 | <div class="use-case-who">Sound designers, beat makers, foley artists</div> | |
| 73 | 73 | <p class="use-case-desc">Sell sample packs and sound effects with audio previews and versioned downloads.</p> | |
| @@ -81,7 +81,7 @@ | |||
| 81 | 81 | <div class="use-case-tier">Small Files ${{ tier_prices.small_files_std }}/mo · {{ tier_prices.small_files_total }}, {{ tier_prices.small_files_per_file }}/file</div> | |
| 82 | 82 | </div> | |
| 83 | 83 | ||
| 84 | - | <div class="use-case-card"> | |
| 84 | + | <div class="use-case-card" id="digital-art"> | |
| 85 | 85 | <div class="use-case-title">Digital Art & Photography</div> | |
| 86 | 86 | <div class="use-case-who">Illustrators, photographers, font designers</div> | |
| 87 | 87 | <p class="use-case-desc">Sell digital art, photography, and fonts with versioned releases and subscription tiers.</p> | |
| @@ -94,7 +94,7 @@ | |||
| 94 | 94 | <div class="use-case-tier">Small Files ${{ tier_prices.small_files_std }}/mo · {{ tier_prices.small_files_total }}, {{ tier_prices.small_files_per_file }}/file</div> | |
| 95 | 95 | </div> | |
| 96 | 96 | ||
| 97 | - | <div class="use-case-card"> | |
| 97 | + | <div class="use-case-card" id="educators"> | |
| 98 | 98 | <div class="use-case-title">Educators</div> | |
| 99 | 99 | <div class="use-case-who">Course creators, tutors, workshop leaders</div> | |
| 100 | 100 | <p class="use-case-desc">Publish courses and teaching materials with text content, downloads, and subscriptions.</p> | |
| @@ -107,7 +107,7 @@ | |||
| 107 | 107 | <div class="use-case-tier">Basic ${{ tier_prices.basic_std }}/mo or Small Files ${{ tier_prices.small_files_std }}/mo</div> | |
| 108 | 108 | </div> | |
| 109 | 109 | ||
| 110 | - | <div class="use-case-card"> | |
| 110 | + | <div class="use-case-card" id="game-devs"> | |
| 111 | 111 | <div class="use-case-title">Game Developers</div> | |
| 112 | 112 | <div class="use-case-who">Indie games, mods, TTRPG content</div> | |
| 113 | 113 | <p class="use-case-desc">Distribute games up to 20GB per file with versioned downloads, license keys, and promo codes. Need more than 20GB? Request a size increase from your dashboard.</p> | |
| @@ -120,7 +120,7 @@ | |||
| 120 | 120 | <div class="use-case-tier">Big Files ${{ tier_prices.big_files_std }}/mo · {{ tier_prices.big_files_total }}, {{ tier_prices.big_files_per_file }}/file</div> | |
| 121 | 121 | </div> | |
| 122 | 122 | ||
| 123 | - | <div class="use-case-card"> | |
| 123 | + | <div class="use-case-card" id="comic-creators"> | |
| 124 | 124 | <div class="use-case-title">Comic Creators</div> | |
| 125 | 125 | <div class="use-case-who">Webcomic artists, graphic novelists</div> | |
| 126 | 126 | <p class="use-case-desc">Sell digital comics and graphic novels with project organization and scheduled publishing.</p> |