max / makenotwork
182 files changed,
+12836 insertions,
-4576 deletions
| @@ -1,6 +1,6 @@ | |||
| 1 | 1 | # Service Level Agreement | |
| 2 | 2 | ||
| 3 | - | Binding commitments from Makenot.work to every creator on the platform. These are not aspirations — they are enforceable guarantees backed by public source code and published documentation. | |
| 3 | + | Binding commitments from Makenot.work to every creator on the platform. These are not aspirations — they are verifiable guarantees backed by public source code and versioned documentation. If we break them, you can see it in the code and export your data immediately. | |
| 4 | 4 | ||
| 5 | 5 | --- | |
| 6 | 6 | ||
| @@ -25,7 +25,6 @@ Exports include: | |||
| 25 | 25 | - Complete metadata and organization structure | |
| 26 | 26 | - Fan/subscriber list (emails, contact info when fans consent to share) | |
| 27 | 27 | - Complete transaction and payment history | |
| 28 | - | - Analytics and engagement data (anonymized for fan privacy) | |
| 29 | 28 | ||
| 30 | 29 | **Format:** Original files, JSON metadata, CSV transactions. | |
| 31 | 30 | ||
| @@ -41,24 +40,11 @@ Exports include: | |||
| 41 | 40 | ||
| 42 | 41 | --- | |
| 43 | 42 | ||
| 44 | - | ## Content Archive | |
| 45 | - | ||
| 46 | - | *This guarantee is not yet implemented. The 12-month clock will not start counting until after the alpha period ends.* | |
| 47 | - | ||
| 48 | - | **Guarantee:** Any content that has existed on the platform for 12 months or more (not including comped months from the earn-back credit program) will remain hosted and accessible to fans even if the creator stops paying for their account. | |
| 49 | - | ||
| 50 | - | - Archived content stays live at its original URLs. | |
| 51 | - | - Fans who purchased the content retain access. | |
| 52 | - | - The creator cannot upload new content without reactivating their subscription. | |
| 53 | - | - The creator can still export their data and delete their account at any time. | |
| 54 | - | ||
| 55 | - | --- | |
| 56 | - | ||
| 57 | 43 | ## Audience Ownership | |
| 58 | 44 | ||
| 59 | 45 | **Guarantee:** Creators own their fan relationships. | |
| 60 | 46 | ||
| 61 | - | When fans subscribe or follow you, they can share contact information directly with you. We facilitate the connection; you own it. Fan-shared contact info is end-to-end encrypted — we cannot read it. | |
| 47 | + | When fans subscribe or follow you, they can share contact information directly with you. We facilitate the connection; you own it. | |
| 62 | 48 | ||
| 63 | 49 | If you leave, your fans come with you. | |
| 64 | 50 | ||
| @@ -78,7 +64,7 @@ If you leave, your fans come with you. | |||
| 78 | 64 | **Guarantee:** If Makenot.work shuts down, the following process applies: | |
| 79 | 65 | ||
| 80 | 66 | 1. 90-day advance notice minimum before any service interruption. | |
| 81 | - | 2. Extended export window with full functionality maintained. | |
| 67 | + | 2. Full export access maintained for the entire 90-day notice period. | |
| 82 | 68 | 3. Data preservation — all content remains accessible for download. | |
| 83 | 69 | 4. Fan notification — we help communicate the transition to your audience. | |
| 84 | 70 | 5. Source code remains available for reference. | |
| @@ -117,18 +103,6 @@ No browsing profiles. No behavioral tracking. No selling data. Verifiable in the | |||
| 117 | 103 | ||
| 118 | 104 | --- | |
| 119 | 105 | ||
| 120 | - | ## Moderation | |
| 121 | - | ||
| 122 | - | *This guarantee is not yet active. As a one-person operation, we cannot yet implement independent appeal review. Until we have the team to support it, moderation decisions are made directly and in good faith. This section describes the standard we are building toward.* | |
| 123 | - | ||
| 124 | - | **Guarantee:** If we moderate content or take action on an account: | |
| 125 | - | ||
| 126 | - | - Clear written explanation of the policy violated. | |
| 127 | - | - Opportunity to appeal, reviewed by someone other than the original decision-maker. | |
| 128 | - | - Data export access preserved even during suspension (excluding content we cannot legally host). | |
| 129 | - | ||
| 130 | - | --- | |
| 131 | - | ||
| 132 | 106 | ## Enforcement | |
| 133 | 107 | ||
| 134 | 108 | These guarantees are enforceable through three mechanisms: | |
| @@ -139,6 +113,33 @@ These guarantees are enforceable through three mechanisms: | |||
| 139 | 113 | ||
| 140 | 114 | --- | |
| 141 | 115 | ||
| 116 | + | ## Planned Guarantees | |
| 117 | + | ||
| 118 | + | The following guarantees are commitments we are building toward. They are not yet active but will become enforceable SLA items once the alpha period ends. | |
| 119 | + | ||
| 120 | + | ### Content Archive | |
| 121 | + | ||
| 122 | + | *The 12-month clock will not start counting until after the alpha period ends.* | |
| 123 | + | ||
| 124 | + | Any content that has existed on the platform for 12 months or more (not including comped months from the earn-back credit program) will remain hosted and accessible to fans even if the creator stops paying for their account. | |
| 125 | + | ||
| 126 | + | - Archived content stays live at its original URLs. | |
| 127 | + | - Fans who purchased the content retain access. | |
| 128 | + | - The creator cannot upload new content without reactivating their subscription. | |
| 129 | + | - The creator can still export their data and delete their account at any time. | |
| 130 | + | ||
| 131 | + | ### Moderation Appeals | |
| 132 | + | ||
| 133 | + | *As a one-person operation, we cannot yet implement independent appeal review. Until we have the team to support it, moderation decisions are made directly and in good faith.* | |
| 134 | + | ||
| 135 | + | If we moderate content or take action on an account: | |
| 136 | + | ||
| 137 | + | - Clear written explanation of the policy violated. | |
| 138 | + | - Opportunity to appeal, reviewed by someone other than the original decision-maker. | |
| 139 | + | - Data export access preserved even during suspension (excluding content we cannot legally host). | |
| 140 | + | ||
| 141 | + | --- | |
| 142 | + | ||
| 142 | 143 | ## See Also | |
| 143 | 144 | ||
| 144 | 145 | - [How We Work](./how-we-work.md) — Business model and pricing |
| @@ -56,11 +56,7 @@ At $10,000/month: | |||
| 56 | 56 | ||
| 57 | 57 | The gap widens as you grow. A percentage-cut platform is most expensive exactly when you're doing the best. | |
| 58 | 58 | ||
| 59 | - | ### The Costco Model | |
| 60 | - | ||
| 61 | - | Costco sells memberships, not markups. They pass products through at minimal profit. Members trust the prices are fair because Costco's incentive is membership retention, not maximizing per-item profit. | |
| 62 | - | ||
| 63 | - | We work the same way. Your subscription funds the platform. We have no reason to take a cut of your revenue or introduce artificial limits. | |
| 59 | + | Your subscription funds the platform. We have no reason to take a cut of your revenue or introduce artificial limits. | |
| 64 | 60 | ||
| 65 | 61 | --- | |
| 66 | 62 | ||
| @@ -70,8 +66,8 @@ We work the same way. Your subscription funds the platform. We have no reason to | |||
| 70 | 66 | |------|---------|-----------------| | |
| 71 | 67 | | **Basic** | $10 | Text, all base features | | |
| 72 | 68 | | **Small Files** | $20 | Audio, software, plugins, sample packs, small downloads | | |
| 73 | - | | **Big Files** | $30 | Video, large downloads, course content | | |
| 74 | - | | **Streaming** | $40 | Live streaming + everything below | | |
| 69 | + | | **Big Files** | $30 | Video, large downloads, course content (coming soon) | | |
| 70 | + | | **Streaming** | $40 | Live streaming + everything below (coming soon) | | |
| 75 | 71 | ||
| 76 | 72 | Video and streaming cost more than audio. Audio costs more than text. The prices reflect what it actually costs to store and deliver each type. | |
| 77 | 73 | ||
| @@ -82,8 +78,8 @@ Video and streaming cost more than audio. Audio costs more than text. The prices | |||
| 82 | 78 | | Blog posts, articles, newsletters | Basic ($10) | | |
| 83 | 79 | | Music, podcasts, audio | Small Files ($20) | | |
| 84 | 80 | | Software, plugins, sample packs | Small Files ($20) | | |
| 85 | - | | Video content, courses | Big Files ($30) | | |
| 86 | - | | Live streams | Streaming ($40) | | |
| 81 | + | | Video content, courses | Big Files ($30, coming soon) | | |
| 82 | + | | Live streams | Streaming ($40, coming soon) | | |
| 87 | 83 | ||
| 88 | 84 | *Big Files and Streaming tier features (video upload, live streaming) are on the roadmap but not yet available. Creators on those tiers today get all current platform features plus priority access when video and streaming launch.* | |
| 89 | 85 | ||
| @@ -105,7 +101,9 @@ Video and streaming cost more than audio. Audio costs more than text. The prices | |||
| 105 | 101 | ||
| 106 | 102 | ### Earn-Back Credit Program | |
| 107 | 103 | ||
| 108 | - | If you earn less on the platform than you paid in subscription fees during a 12-month period, the difference is credited as free months for the following year (capped at 12 months). Credits are calculated annually on your account anniversary. | |
| 104 | + | *Not yet implemented. The 12-month clock will not start counting until after the alpha period ends.* | |
| 105 | + | ||
| 106 | + | If you earn less on the platform than you paid in subscription fees during a 12-month period, the difference will be credited as free months for the following year (capped at 12 months). Credits will be calculated annually on your account anniversary. | |
| 109 | 107 | ||
| 110 | 108 | ### Add-Ons | |
| 111 | 109 | ||
| @@ -151,16 +149,13 @@ Content that has been on the platform for 12 months or more (not including compe | |||
| 151 | 149 | ||
| 152 | 150 | We use search and hierarchical tags. Fans find content because they're looking for it. | |
| 153 | 151 | ||
| 154 | - | This means you need to bring an audience (or build one elsewhere). We're infrastructure for creator-fan relationships, not a discovery engine. We want to help creators attract audiences eventually, but not at the cost of our core business. | |
| 152 | + | This means you need to bring an audience (or build one elsewhere). We're infrastructure for creator-fan relationships, not a discovery engine. | |
| 155 | 153 | ||
| 156 | 154 | --- | |
| 157 | 155 | ||
| 158 | 156 | ## Source Available | |
| 159 | 157 | ||
| 160 | - | Source code is publicly available. Verify every claim by reading it. | |
| 161 | - | ||
| 162 | - | - **Trust requires transparency.** You can verify our claims about privacy and data handling. | |
| 163 | - | - **Accountability.** Public code means public scrutiny of our practices. | |
| 158 | + | Source code is publicly available. You can audit our privacy practices, data handling, and every claim on this site by reading the code. | |
| 164 | 159 | ||
| 165 | 160 | --- | |
| 166 | 161 |
| @@ -31,7 +31,7 @@ Everything listed here is live and working. | |||
| 31 | 31 | ||
| 32 | 32 | ### Discovery & Organization | |
| 33 | 33 | ||
| 34 | - | - **Discover page**: Browse items or projects with full-text search (fuzzy matching on titles, descriptions, usernames) | |
| 34 | + | - **Discover page**: Browse items or projects with search across titles, descriptions, and usernames | |
| 35 | 35 | - **Filters**: Item type (Audio, Text, Digital, Physical), price range, tags, project category, sort by newest/price/popular | |
| 36 | 36 | - **Hierarchical tags**: Multi-level tag tree with breadcrumb navigation, primary tag designation per item | |
| 37 | 37 | - **Project categories**: 12 built-in categories (Music, Band, Podcast, Blog, Software, Art, etc.) plus user-created categories | |
| @@ -62,40 +62,39 @@ Everything listed here is live and working. | |||
| 62 | 62 | ||
| 63 | 63 | - **0% platform fee**: Payments go directly to creator-controlled Stripe accounts | |
| 64 | 64 | - **Stripe Connect onboarding**: Guided setup, connected account status tracking | |
| 65 | - | - **Webhook processing**: Checkout completion, refunds, subscription lifecycle (active, past due, canceled), renewal billing | |
| 66 | - | - **Atomic checkout**: Row-level locking prevents double-purchases and race conditions | |
| 65 | + | - **Automated payment handling**: Checkout completion, refunds, subscription updates (active, past due, canceled), renewal billing | |
| 66 | + | - **Reliable checkout**: Purchases are processed safely with no risk of double-charges | |
| 67 | 67 | ||
| 68 | 68 | ### Security | |
| 69 | 69 | ||
| 70 | - | - **2FA/TOTP**: Time-based one-time passwords with QR code setup and 10 backup codes | |
| 70 | + | - **Two-factor authentication (2FA)**: One-time passwords with QR code setup and 10 backup codes | |
| 71 | 71 | - **Session management**: View active sessions (device, IP, last active), revoke individual or all other sessions | |
| 72 | 72 | - **Account lockout**: 5 failed login attempts triggers 15-minute lockout with email bypass | |
| 73 | 73 | - **New device notifications**: Opt-in email when a new device logs into your account | |
| 74 | - | - **Password breach checking**: HIBP k-anonymity API check on signup and password change (advisory only) | |
| 75 | - | - **Passkeys/WebAuthn**: Passwordless, phishing-resistant login | |
| 76 | - | - **CSRF protection**: All mutations require valid tokens | |
| 77 | - | - **Rate limiting**: Per-endpoint limits across all public endpoints | |
| 74 | + | - **Password breach checking**: Warns you if your password has appeared in known data breaches (advisory only, your password is never shared) | |
| 75 | + | - **Passkeys**: Passwordless, phishing-resistant login (fingerprint, Face ID, hardware key) | |
| 76 | + | - **Request protection**: All actions are verified to prevent unauthorized access | |
| 77 | + | - **Rate limiting**: Protects against abuse across all public endpoints | |
| 78 | 78 | ||
| 79 | 79 | ### Platform | |
| 80 | 80 | ||
| 81 | 81 | - **Source-available codebase**: PolyForm Noncommercial 1.0.0 | |
| 82 | 82 | - **Creator waitlist**: Invite-only launch with lottery waves and hand-picked approvals | |
| 83 | - | - **Admin CLI** (`mnw-admin`): Command-line tool for waitlist management, creator approval, spam flagging, wave execution, stats, user suspension/unsuspension, appeal processing, revenue reports, transaction history, CSV data export, and S3 storage audits -- connects directly to the database, no web UI needed | |
| 84 | - | - **JSON-LD structured data**: Product, MusicRecording, BlogPosting, Article, ProfilePage, and CollectionPage schemas | |
| 85 | - | - **Documentation**: Server-rendered from markdown, auto-linked cross-references | |
| 86 | - | - **Transactional email**: Password reset, email verification, purchase receipts, subscription lifecycle, sale and follower notifications via Postmark with bounce/complaint suppression | |
| 87 | - | - **Git source browser**: Browse server-hosted bare repositories with syntax highlighting | |
| 83 | + | - **Admin tools**: Waitlist management, creator approval, suspension/appeal processing, revenue reports, data export | |
| 84 | + | - **Rich link previews**: Your content shows up properly when shared on social media, search engines, and podcast apps | |
| 85 | + | - **Documentation**: Creator guide covering the full platform | |
| 86 | + | - **Transactional email**: Password reset, email verification, purchase receipts, subscription updates, sale and follower notifications | |
| 87 | + | - **Git source browser**: Browse server-hosted repositories with syntax highlighting | |
| 88 | 88 | - **SSH git access**: Clone and push to hosted repositories with SSH key authentication | |
| 89 | - | - **Health monitoring**: Real uptime tracking, database status, service connectivity checks | |
| 90 | - | - **Malware scanning**: ClamAV + YARA rules + MalwareBazaar hash lookup on file uploads | |
| 91 | - | - **Creator guide**: 12-page documentation covering the full UX surface area | |
| 92 | - | - **840+ automated tests**: Unit, integration, workflow, and health tests | |
| 89 | + | - **Health monitoring**: Uptime tracking, service connectivity checks | |
| 90 | + | - **Malware scanning**: Every uploaded file is scanned for malware before it's made available | |
| 91 | + | - **840+ automated tests**: Comprehensive test suite covering all platform features | |
| 93 | 92 | ||
| 94 | 93 | ### Developer Infrastructure (SyncKit) | |
| 95 | 94 | ||
| 96 | 95 | Cloud sync and OTA update infrastructure for indie app developers, hosted on Makenot.work. | |
| 97 | 96 | ||
| 98 | - | - **Cloud sync**: Push/pull changelog sync, cursor-based pagination, E2E encryption (ChaCha20-Poly1305 + Argon2) | |
| 97 | + | - **Cloud sync**: Push/pull changelog sync with end-to-end encryption (the server never sees your data) | |
| 99 | 98 | - **Device management**: Register devices, track sync state per device, platform detection | |
| 100 | 99 | - **API key system**: App registration, key generation and rotation | |
| 101 | 100 | - **OAuth 2.0 + PKCE**: Browser-based authentication flow for desktop apps |
| @@ -17,3 +17,11 @@ So I built what I wanted to exist: infrastructure that charges a flat fee instea | |||
| 17 | 17 | ## Current Status | |
| 18 | 18 | ||
| 19 | 19 | Private alpha. Self-funded, no investors, no exit strategy. See [Service Level Agreement](./guarantees.md) for commitments, [FAQ](../support/faq.md) for hard questions. | |
| 20 | + | ||
| 21 | + | --- | |
| 22 | + | ||
| 23 | + | ## See Also | |
| 24 | + | ||
| 25 | + | - [How We Work](./how-we-work.md) — Business model and pricing | |
| 26 | + | - [Roadmap](./roadmap.md) — What's built and what's next | |
| 27 | + | - [Getting Started](../guide/01-getting-started.md) — Create your account |
| @@ -30,7 +30,7 @@ Applications are reviewed in waves. You'll get an email when you're approved. | |||
| 30 | 30 | ||
| 31 | 31 | ## Connect Stripe | |
| 32 | 32 | ||
| 33 | - | Once approved as a creator, connect your Stripe account to receive payments: | |
| 33 | + | Stripe is the payment service that processes purchases from your fans and deposits money into your bank account. Once approved as a creator, connect your Stripe account to receive payments: | |
| 34 | 34 | ||
| 35 | 35 | 1. Go to your **Dashboard** | |
| 36 | 36 | 2. Click **Connect Stripe** | |
| @@ -44,7 +44,7 @@ Payments go directly to your Stripe account. We never hold or touch your revenue | |||
| 44 | 44 | Projects are how you organize your work. Think of them like albums, podcast feeds, or product lines. | |
| 45 | 45 | ||
| 46 | 46 | 1. From your Dashboard, click **New Project** | |
| 47 | - | 2. Enter a **slug** (URL-safe name, e.g., `my-album`) and a **title** | |
| 47 | + | 2. Enter a **URL name** (e.g., `my-album` — this becomes `/p/my-album`) and a **title** | |
| 48 | 48 | 3. Choose a category (Music, Podcast, Software, Blog, Art, etc.) | |
| 49 | 49 | 4. Add a description | |
| 50 | 50 | ||
| @@ -69,7 +69,7 @@ Items are individual pieces of content inside a project. | |||
| 69 | 69 | ||
| 70 | 70 | ## Publish | |
| 71 | 71 | ||
| 72 | - | 1. Make your item public: edit the item and toggle **is_public** | |
| 72 | + | 1. Make your item public: edit the item and switch on **Public** | |
| 73 | 73 | 2. Make your project public: edit the project and set **visibility** to public | |
| 74 | 74 | 3. Share your link: `/u/yourname` | |
| 75 | 75 |
| @@ -8,7 +8,7 @@ Projects group your items under a single page with its own URL, settings, and fe | |||
| 8 | 8 | ||
| 9 | 9 | From your Dashboard, click **New Project**. You'll need: | |
| 10 | 10 | ||
| 11 | - | - **Slug**: URL-safe name (e.g., `my-album`). This becomes `/p/my-album`. Cannot be changed after creation. | |
| 11 | + | - **URL name**: A short name for your project's web address (e.g., `my-album` becomes `/p/my-album`). Cannot be changed after creation. | |
| 12 | 12 | - **Title**: Display name shown on the project page. | |
| 13 | 13 | ||
| 14 | 14 | ## Project Settings | |
| @@ -30,15 +30,19 @@ Categories are used for discovery and filtering. Each project can have one categ | |||
| 30 | 30 | | Podcast | Podcast feeds | | |
| 31 | 31 | | Blog | Writing and newsletters | | |
| 32 | 32 | | Software | Apps, plugins, tools | | |
| 33 | - | | Art | Visual art, photography | | |
| 33 | + | | Art | Visual art, illustration | | |
| 34 | + | | Video | Video content, tutorials | | |
| 35 | + | | Writing | Long-form fiction, non-fiction | | |
| 36 | + | | Photography | Photo sets, stock photography | | |
| 34 | 37 | | Education | Courses, tutorials | | |
| 35 | - | | Games | Game projects | | |
| 38 | + | | Games | Indie games, mods, TTRPG content | | |
| 39 | + | | Comics | Webcomics, graphic novels | | |
| 36 | 40 | ||
| 37 | 41 | ## Visibility | |
| 38 | 42 | ||
| 39 | 43 | Projects start as **drafts**. Draft projects and their items are invisible to everyone except you. | |
| 40 | 44 | ||
| 41 | - | To publish, set visibility to `public`. All published items within the project become discoverable. | |
| 45 | + | To publish, set visibility to **Public**. All published items within the project become discoverable. | |
| 42 | 46 | ||
| 43 | 47 | ## Organizing Items | |
| 44 | 48 |
| @@ -35,7 +35,7 @@ From the item settings, you can update: | |||
| 35 | 35 | ||
| 36 | 36 | Items start as drafts. To publish: | |
| 37 | 37 | ||
| 38 | - | 1. Edit the item and set **is_public** to true | |
| 38 | + | 1. Edit the item and switch on **Public** | |
| 39 | 39 | 2. Make sure the parent project is also public | |
| 40 | 40 | ||
| 41 | 41 | Published items appear on your profile, in search results, and in RSS feeds. |
| @@ -17,14 +17,14 @@ Upload your audio file from the item's content tab. Large files are supported | |||
| 17 | 17 | ||
| 18 | 18 | ## Text | |
| 19 | 19 | ||
| 20 | - | Write directly in the markdown editor. Features include: | |
| 20 | + | Write directly in the editor using markdown (a simple formatting language — **bold**, *italic*, links, headers, and lists). Features include: | |
| 21 | 21 | ||
| 22 | 22 | - **Live preview**: See rendered output as you type | |
| 23 | 23 | - **Word count**: Automatically calculated | |
| 24 | 24 | - **Reading time**: Estimated based on word count | |
| 25 | 25 | - **Full markdown support**: Headers, lists, code blocks, links, images, tables | |
| 26 | 26 | ||
| 27 | - | Text content is stored and rendered on the platform. Fans read it in a clean, distraction-free view. | |
| 27 | + | Text content is stored and rendered on the platform. Fans read it without ads, recommendations, or sidebars. | |
| 28 | 28 | ||
| 29 | 29 | ## Digital Downloads | |
| 30 | 30 |
| @@ -12,16 +12,9 @@ From the item dashboard, add a new version: | |||
| 12 | 12 | - **Changelog** (optional): Up to 10,000 characters describing what changed | |
| 13 | 13 | - **File**: Optionally attach a new file to this version | |
| 14 | 14 | ||
| 15 | - | ## How is_current Works | |
| 15 | + | ## Current Version | |
| 16 | 16 | ||
| 17 | - | Only one version per item can be marked as "current." When you create a new version: | |
| 18 | - | ||
| 19 | - | 1. All existing versions are marked `is_current = false` | |
| 20 | - | 2. The new version is marked `is_current = true` | |
| 21 | - | ||
| 22 | - | This happens atomically — there's no moment where zero or multiple versions are current. | |
| 23 | - | ||
| 24 | - | Fans downloading the item get the current version by default. | |
| 17 | + | Only one version per item is the "current" version — the one fans download by default. When you upload a new version, it automatically becomes current. The switch is instant; there's no gap where fans see the wrong version. | |
| 25 | 18 | ||
| 26 | 19 | ## Changelogs | |
| 27 | 20 | ||
| @@ -33,7 +26,7 @@ Each version tracks its download count independently. This helps you see which v | |||
| 33 | 26 | ||
| 34 | 27 | ## Listing Versions | |
| 35 | 28 | ||
| 36 | - | The public version list is ordered newest-first (by creation date). Only published items expose their version list — draft items return a 404. | |
| 29 | + | The public version list is ordered newest-first (by creation date). Only published items show their version list — draft items keep versions hidden. | |
| 37 | 30 | ||
| 38 | 31 | ## Validation | |
| 39 | 32 |
| @@ -10,7 +10,7 @@ From the item dashboard, add chapters to any audio item: | |||
| 10 | 10 | ||
| 11 | 11 | - **Title** (required): 1-200 characters | |
| 12 | 12 | - **Start seconds** (required): Timestamp where the chapter begins (e.g., `0`, `30.5`, `125`) | |
| 13 | - | - **Sort order**: Integer controlling display order (default: 0) | |
| 13 | + | - **Sort order**: Number controlling display order (default: 0) | |
| 14 | 14 | ||
| 15 | 15 | ## Editing and Deleting | |
| 16 | 16 | ||
| @@ -18,13 +18,13 @@ Update any chapter's title, timestamp, or sort order. Delete chapters you no lon | |||
| 18 | 18 | ||
| 19 | 19 | ## Ordering | |
| 20 | 20 | ||
| 21 | - | Chapters are displayed sorted by `sort_order` first, then by `start_seconds`. If all chapters have the same sort order, they appear in timestamp order. | |
| 21 | + | Chapters are displayed sorted by sort order first, then by start time. If all chapters have the same sort order, they appear in timestamp order. | |
| 22 | 22 | ||
| 23 | 23 | Create chapters in any order — the system sorts them for display. | |
| 24 | 24 | ||
| 25 | 25 | ## Ownership | |
| 26 | 26 | ||
| 27 | - | Only the item's creator can add, edit, or delete chapters. Other creators receive a 403 if they try. | |
| 27 | + | Only the item's creator can add, edit, or delete chapters. | |
| 28 | 28 | ||
| 29 | 29 | ## Validation | |
| 30 | 30 | ||
| @@ -32,11 +32,11 @@ Only the item's creator can add, edit, or delete chapters. Other creators receiv | |||
| 32 | 32 | |-------|------| | |
| 33 | 33 | | Title | 1-200 characters, required | | |
| 34 | 34 | | Start seconds | Non-negative number, required | | |
| 35 | - | | Sort order | Integer, default 0 | | |
| 35 | + | | Sort order | Whole number, default 0 | | |
| 36 | 36 | ||
| 37 | 37 | ## Draft Items | |
| 38 | 38 | ||
| 39 | - | Chapter lists are only visible for published items. If the item is still a draft, the chapters endpoint returns 404 for unauthenticated users. The creator can still manage chapters while the item is in draft. | |
| 39 | + | Chapter lists are only visible for published items. If the item is still a draft, chapters won't be shown to anyone except you. You can still manage chapters while the item is in draft. | |
| 40 | 40 | ||
| 41 | 41 | --- | |
| 42 | 42 |
| @@ -23,7 +23,7 @@ Offer recurring monthly subscriptions per project: | |||
| 23 | 23 | - Fans subscribe through Stripe Checkout | |
| 24 | 24 | - Stripe handles billing, renewals, and cancellations | |
| 25 | 25 | ||
| 26 | - | Subscription lifecycle events (active, past due, canceled, renewed) are processed automatically via Stripe webhooks. | |
| 26 | + | Subscription status changes (active, past due, canceled, renewed) sync from Stripe via webhooks and update your dashboard automatically. | |
| 27 | 27 | ||
| 28 | 28 | ## License Keys | |
| 29 | 29 |
| @@ -21,8 +21,8 @@ When a fan purchases from you, they can opt in to share their email address. Thi | |||
| 21 | 21 | ||
| 22 | 22 | 1. At checkout, the fan sees a "Share your email with this creator" option | |
| 23 | 23 | 2. If they opt in, their email appears in your contacts | |
| 24 | - | 3. Fans can revoke sharing at any time via `DELETE /api/contacts/{seller_id}` | |
| 25 | - | 4. Revocation is idempotent — revoking twice is fine | |
| 24 | + | 3. Fans can revoke sharing at any time from their account settings | |
| 25 | + | 4. Revocation takes effect immediately | |
| 26 | 26 | ||
| 27 | 27 | ### For Fans | |
| 28 | 28 |
| @@ -32,11 +32,11 @@ Export all your data at any time. Five export types are available: | |||
| 32 | 32 | ||
| 33 | 33 | | Export | Format | Contents | | |
| 34 | 34 | |--------|--------|----------| | |
| 35 | - | | **Projects** | JSON | All project metadata, settings, categories | | |
| 36 | - | | **Items** | JSON | All items with metadata, pricing, tags | | |
| 37 | - | | **Blog posts** | JSON | All blog posts with content and publish status | | |
| 38 | - | | **Sales** | CSV | Complete sales transaction history | | |
| 39 | - | | **Purchases** | CSV | Your purchase history as a fan | | |
| 35 | + | | **Projects** | JSON (structured data file) | All project metadata, settings, categories | | |
| 36 | + | | **Items** | JSON (structured data file) | All items with metadata, pricing, tags | | |
| 37 | + | | **Blog posts** | JSON (structured data file) | All blog posts with content and publish status | | |
| 38 | + | | **Sales** | CSV (spreadsheet file — opens in Excel, Google Sheets, etc.) | Complete sales transaction history | | |
| 39 | + | | **Purchases** | CSV (spreadsheet file) | Your purchase history as a fan | | |
| 40 | 40 | ||
| 41 | 41 | Exports are generated on demand and download as files. No limits on how often you export. | |
| 42 | 42 |
| @@ -4,7 +4,7 @@ Protect your account with multiple layers of authentication. | |||
| 4 | 4 | ||
| 5 | 5 | --- | |
| 6 | 6 | ||
| 7 | - | ## Two-Factor Authentication (2FA/TOTP) | |
| 7 | + | ## Two-Factor Authentication (2FA) | |
| 8 | 8 | ||
| 9 | 9 | Add time-based one-time passwords as a second factor: | |
| 10 | 10 | ||
| @@ -19,7 +19,7 @@ When 2FA is enabled, you'll enter a code from your authenticator app after your | |||
| 19 | 19 | ||
| 20 | 20 | You get 10 single-use backup codes at setup. Each code works once. If you lose access to your authenticator app, use a backup code to log in, then reconfigure 2FA. | |
| 21 | 21 | ||
| 22 | - | ## Passkeys (WebAuthn) | |
| 22 | + | ## Passkeys | |
| 23 | 23 | ||
| 24 | 24 | Passkeys offer passwordless, phishing-resistant login: | |
| 25 | 25 |
| @@ -8,7 +8,7 @@ Everything you can do as a fan on Makenot.work — no creator subscription neede | |||
| 8 | 8 | ||
| 9 | 9 | Browse content on the Discover page: | |
| 10 | 10 | ||
| 11 | - | - **Search**: Full-text fuzzy search across titles, descriptions, and usernames | |
| 11 | + | - **Search**: Search across titles, descriptions, and usernames | |
| 12 | 12 | - **Filters**: Filter by item type (Audio, Text, Digital), price range, tags, and project category | |
| 13 | 13 | - **Sort**: Newest, price (low/high), or popularity | |
| 14 | 14 | ||
| @@ -66,6 +66,7 @@ Fan accounts are free. You never pay the platform — only for content you choos | |||
| 66 | 66 | ||
| 67 | 67 | ## See Also | |
| 68 | 68 | ||
| 69 | + | - [Fan Guide](../../unpublished/fan/fan-guide.md) — Supporting creators and your library | |
| 69 | 70 | - [Getting Started](./01-getting-started.md) — Creating your account | |
| 70 | 71 | - [Audience & Communication](./08-audience.md) — How contact sharing works | |
| 71 | 72 | - [FAQ](../support/faq.md) — Common questions |
| @@ -0,0 +1,135 @@ | |||
| 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>Getting Started — Makenot.work</title> | |
| 7 | + | <link rel="preconnect" href="https://fonts.googleapis.com"><link rel="preconnect" href="https://fonts.gstatic.com" crossorigin><link href="https://fonts.googleapis.com/css2?family=IBM+Plex+Mono:ital,wght@0,400;0,700;1,400&family=Lato:wght@400;700&family=Young+Serif&display=swap" rel="stylesheet"> | |
| 8 | + | <link rel="stylesheet" href="docs.css"> | |
| 9 | + | </head> | |
| 10 | + | <body class="padded-page"> | |
| 11 | + | <header class="site-header"><a href="./index.html">makenot<span class="dot">.</span>work</a></header> | |
| 12 | + | <article class="doc-container"> | |
| 13 | + | <nav class="doc-nav"><a href="./index.html">Docs</a> / Guide</nav> | |
| 14 | + | <h1>Getting Started <span class="dot">.</span></h1> | |
| 15 | + | <p>Your first 15 minutes on Makenot.work — from sign-up to your first | |
| 16 | + | published item.</p> | |
| 17 | + | <hr /> | |
| 18 | + | <h2 id="create-your-account">Create Your Account</h2> | |
| 19 | + | <ol type="1"> | |
| 20 | + | <li>Visit the homepage and click <strong>Join</strong></li> | |
| 21 | + | <li>Pick a username (this becomes your public URL: | |
| 22 | + | <code>/u/yourname</code>)</li> | |
| 23 | + | <li>Enter your email and a strong password</li> | |
| 24 | + | <li>Verify your email (check your inbox)</li> | |
| 25 | + | </ol> | |
| 26 | + | <p>Your fan account is ready immediately. You can browse, follow | |
| 27 | + | creators, and purchase content right away.</p> | |
| 28 | + | <h2 id="apply-for-creator-access">Apply for Creator Access</h2> | |
| 29 | + | <p>Creator access is currently invite-only via the waitlist. To | |
| 30 | + | apply:</p> | |
| 31 | + | <ol type="1"> | |
| 32 | + | <li>Go to the waitlist page</li> | |
| 33 | + | <li>Write a short pitch (20-500 characters) about what you want to | |
| 34 | + | create</li> | |
| 35 | + | <li>Submit your application</li> | |
| 36 | + | </ol> | |
| 37 | + | <p>Applications are reviewed in waves. You’ll get an email when you’re | |
| 38 | + | approved.</p> | |
| 39 | + | <p><strong>Requirements:</strong></p> | |
| 40 | + | <ul> | |
| 41 | + | <li>Verified email address</li> | |
| 42 | + | <li>You haven’t already applied</li> | |
| 43 | + | <li>You don’t already have creator access</li> | |
| 44 | + | </ul> | |
| 45 | + | <h2 id="connect-stripe">Connect Stripe</h2> | |
| 46 | + | <p>Once approved as a creator, connect your Stripe account to receive | |
| 47 | + | payments:</p> | |
| 48 | + | <ol type="1"> | |
| 49 | + | <li>Go to your <strong>Dashboard</strong></li> | |
| 50 | + | <li>Click <strong>Connect Stripe</strong></li> | |
| 51 | + | <li>Follow the Stripe Connect onboarding flow</li> | |
| 52 | + | <li>Complete identity verification (Stripe requirement)</li> | |
| 53 | + | </ol> | |
| 54 | + | <p>Payments go directly to your Stripe account. We never hold or touch | |
| 55 | + | your revenue.</p> | |
| 56 | + | <h2 id="create-your-first-project">Create Your First Project</h2> | |
| 57 | + | <p>Projects are how you organize your work. Think of them like albums, | |
| 58 | + | podcast feeds, or product lines.</p> | |
| 59 | + | <ol type="1"> | |
| 60 | + | <li>From your Dashboard, click <strong>New Project</strong></li> | |
| 61 | + | <li>Enter a <strong>slug</strong> (URL-safe name, e.g., | |
| 62 | + | <code>my-album</code>) and a <strong>title</strong></li> | |
| 63 | + | <li>Choose a category (Music, Podcast, Software, Blog, Art, etc.)</li> | |
| 64 | + | <li>Add a description</li> | |
| 65 | + | </ol> | |
| 66 | + | <p>Your project starts as a draft. You’ll make it public after adding | |
| 67 | + | items.</p> | |
| 68 | + | <h2 id="create-your-first-item">Create Your First Item</h2> | |
| 69 | + | <p>Items are individual pieces of content inside a project.</p> | |
| 70 | + | <ol type="1"> | |
| 71 | + | <li>Navigate to your project</li> | |
| 72 | + | <li>Click <strong>New Item</strong></li> | |
| 73 | + | <li>Choose an item type:</li> | |
| 74 | + | </ol> | |
| 75 | + | <table> | |
| 76 | + | <thead> | |
| 77 | + | <tr> | |
| 78 | + | <th>Type</th> | |
| 79 | + | <th>Best For</th> | |
| 80 | + | </tr> | |
| 81 | + | </thead> | |
| 82 | + | <tbody> | |
| 83 | + | <tr> | |
| 84 | + | <td><strong>Audio</strong></td> | |
| 85 | + | <td>Songs, podcast episodes, sound effects</td> | |
| 86 | + | </tr> | |
| 87 | + | <tr> | |
| 88 | + | <td><strong>Text</strong></td> | |
| 89 | + | <td>Articles, stories, documentation</td> | |
| 90 | + | </tr> | |
| 91 | + | <tr> | |
| 92 | + | <td><strong>Digital</strong></td> | |
| 93 | + | <td>Software, plugins, files, images</td> | |
| 94 | + | </tr> | |
| 95 | + | </tbody> | |
| 96 | + | </table> | |
| 97 | + | <ol start="4" type="1"> | |
| 98 | + | <li>Set a title and price (free, fixed, or pay-what-you-want)</li> | |
| 99 | + | <li>Upload your content or write your text</li> | |
| 100 | + | </ol> | |
| 101 | + | <h2 id="publish">Publish</h2> | |
| 102 | + | <ol type="1"> | |
| 103 | + | <li>Make your item public: edit the item and toggle | |
| 104 | + | <strong>is_public</strong></li> | |
| 105 | + | <li>Make your project public: edit the project and set | |
| 106 | + | <strong>visibility</strong> to public</li> | |
| 107 | + | <li>Share your link: <code>/u/yourname</code></li> | |
| 108 | + | </ol> | |
| 109 | + | <h2 id="first-15-minutes-checklist">First 15 Minutes Checklist</h2> | |
| 110 | + | <ul class="task-list"> | |
| 111 | + | <li><label><input type="checkbox" />Account created and email | |
| 112 | + | verified</label></li> | |
| 113 | + | <li><label><input type="checkbox" />Waitlist application submitted (or | |
| 114 | + | creator access granted)</label></li> | |
| 115 | + | <li><label><input type="checkbox" />Stripe connected</label></li> | |
| 116 | + | <li><label><input type="checkbox" />First project created with title, | |
| 117 | + | slug, and category</label></li> | |
| 118 | + | <li><label><input type="checkbox" />First item created with content | |
| 119 | + | uploaded</label></li> | |
| 120 | + | <li><label><input type="checkbox" />Item and project | |
| 121 | + | published</label></li> | |
| 122 | + | </ul> | |
| 123 | + | <hr /> | |
| 124 | + | <h2 id="see-also">See Also</h2> | |
| 125 | + | <ul> | |
| 126 | + | <li><a href="./02-projects.html">Projects</a> — Organizing your | |
| 127 | + | work</li> | |
| 128 | + | <li><a href="./03-items.html">Items</a> — Content types and | |
| 129 | + | settings</li> | |
| 130 | + | <li><a href="./07-pricing.html">Pricing & Monetization</a> — Setting | |
| 131 | + | prices and getting paid</li> | |
| 132 | + | </ul> | |
| 133 | + | </article> | |
| 134 | + | </body> | |
| 135 | + | </html> |
| @@ -0,0 +1,112 @@ | |||
| 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>Projects — Makenot.work</title> | |
| 7 | + | <link rel="preconnect" href="https://fonts.googleapis.com"><link rel="preconnect" href="https://fonts.gstatic.com" crossorigin><link href="https://fonts.googleapis.com/css2?family=IBM+Plex+Mono:ital,wght@0,400;0,700;1,400&family=Lato:wght@400;700&family=Young+Serif&display=swap" rel="stylesheet"> | |
| 8 | + | <link rel="stylesheet" href="docs.css"> | |
| 9 | + | </head> | |
| 10 | + | <body class="padded-page"> | |
| 11 | + | <header class="site-header"><a href="./index.html">makenot<span class="dot">.</span>work</a></header> | |
| 12 | + | <article class="doc-container"> | |
| 13 | + | <nav class="doc-nav"><a href="./index.html">Docs</a> / Guide</nav> | |
| 14 | + | <h1>Projects <span class="dot">.</span></h1> | |
| 15 | + | <p>Projects group your items under a single page with its own URL, | |
| 16 | + | settings, and feed.</p> | |
| 17 | + | <hr /> | |
| 18 | + | <h2 id="creating-a-project">Creating a Project</h2> | |
| 19 | + | <p>From your Dashboard, click <strong>New Project</strong>. You’ll | |
| 20 | + | need:</p> | |
| 21 | + | <ul> | |
| 22 | + | <li><strong>Slug</strong>: URL-safe name (e.g., <code>my-album</code>). | |
| 23 | + | This becomes <code>/p/my-album</code>. Cannot be changed after | |
| 24 | + | creation.</li> | |
| 25 | + | <li><strong>Title</strong>: Display name shown on the project page.</li> | |
| 26 | + | </ul> | |
| 27 | + | <h2 id="project-settings">Project Settings</h2> | |
| 28 | + | <p>Edit your project to configure:</p> | |
| 29 | + | <ul> | |
| 30 | + | <li><strong>Description</strong>: Text shown on the project page</li> | |
| 31 | + | <li><strong>Category</strong>: Helps fans discover your work. Choose | |
| 32 | + | from 12 built-in categories (Music, Band, Podcast, Blog, Software, Art, | |
| 33 | + | etc.) or create your own</li> | |
| 34 | + | <li><strong>Visibility</strong>: Draft (only you can see it) or Public | |
| 35 | + | (visible to everyone)</li> | |
| 36 | + | </ul> | |
| 37 | + | <h2 id="categories">Categories</h2> | |
| 38 | + | <p>Categories are used for discovery and filtering. Each project can | |
| 39 | + | have one category. Built-in options include:</p> | |
| 40 | + | <table> | |
| 41 | + | <thead> | |
| 42 | + | <tr> | |
| 43 | + | <th>Category</th> | |
| 44 | + | <th>Typical Use</th> | |
| 45 | + | </tr> | |
| 46 | + | </thead> | |
| 47 | + | <tbody> | |
| 48 | + | <tr> | |
| 49 | + | <td>Music</td> | |
| 50 | + | <td>Albums, singles, EPs</td> | |
| 51 | + | </tr> | |
| 52 | + | <tr> | |
| 53 | + | <td>Band</td> | |
| 54 | + | <td>Band or artist pages</td> | |
| 55 | + | </tr> | |
| 56 | + | <tr> | |
| 57 | + | <td>Podcast</td> | |
| 58 | + | <td>Podcast feeds</td> | |
| 59 | + | </tr> | |
| 60 | + | <tr> | |
| 61 | + | <td>Blog</td> | |
| 62 | + | <td>Writing and newsletters</td> | |
| 63 | + | </tr> | |
| 64 | + | <tr> | |
| 65 | + | <td>Software</td> | |
| 66 | + | <td>Apps, plugins, tools</td> | |
| 67 | + | </tr> | |
| 68 | + | <tr> | |
| 69 | + | <td>Art</td> | |
| 70 | + | <td>Visual art, photography</td> | |
| 71 | + | </tr> | |
| 72 | + | <tr> | |
| 73 | + | <td>Education</td> | |
| 74 | + | <td>Courses, tutorials</td> | |
| 75 | + | </tr> | |
| 76 | + | <tr> | |
| 77 | + | <td>Games</td> | |
| 78 | + | <td>Game projects</td> | |
| 79 | + | </tr> | |
| 80 | + | </tbody> | |
| 81 | + | </table> | |
| 82 | + | <h2 id="visibility">Visibility</h2> | |
| 83 | + | <p>Projects start as <strong>drafts</strong>. Draft projects and their | |
| 84 | + | items are invisible to everyone except you.</p> | |
| 85 | + | <p>To publish, set visibility to <code>public</code>. All published | |
| 86 | + | items within the project become discoverable.</p> | |
| 87 | + | <h2 id="organizing-items">Organizing Items</h2> | |
| 88 | + | <p>Items are ordered within a project. You can reorder them from the | |
| 89 | + | project dashboard. Each item belongs to exactly one project.</p> | |
| 90 | + | <h2 id="blog">Blog</h2> | |
| 91 | + | <p>Every project gets a blog. Blog posts use markdown, support drafts, | |
| 92 | + | and are included in the project’s RSS feed. See <a | |
| 93 | + | href="./04-content.html">Content Types</a> for details.</p> | |
| 94 | + | <h2 id="rss-feeds">RSS Feeds</h2> | |
| 95 | + | <p>Each project automatically generates an RSS feed containing published | |
| 96 | + | items and blog posts. Fans can subscribe using any feed reader.</p> | |
| 97 | + | <h2 id="deleting-a-project">Deleting a Project</h2> | |
| 98 | + | <p>Deleting a project removes it and all its items permanently. This | |
| 99 | + | cannot be undone. Active subscriptions should be canceled first.</p> | |
| 100 | + | <hr /> | |
| 101 | + | <h2 id="see-also">See Also</h2> | |
| 102 | + | <ul> | |
| 103 | + | <li><a href="./03-items.html">Items</a> — Creating content within | |
| 104 | + | projects</li> | |
| 105 | + | <li><a href="./04-content.html">Content Types</a> — Audio, text, | |
| 106 | + | digital, and blog</li> | |
| 107 | + | <li><a href="./09-analytics.html">Analytics & Data</a> — | |
| 108 | + | Project-level stats</li> | |
| 109 | + | </ul> | |
| 110 | + | </article> | |
| 111 | + | </body> | |
| 112 | + | </html> |
| @@ -0,0 +1,108 @@ | |||
| 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>Items — Makenot.work</title> | |
| 7 | + | <link rel="preconnect" href="https://fonts.googleapis.com"><link rel="preconnect" href="https://fonts.gstatic.com" crossorigin><link href="https://fonts.googleapis.com/css2?family=IBM+Plex+Mono:ital,wght@0,400;0,700;1,400&family=Lato:wght@400;700&family=Young+Serif&display=swap" rel="stylesheet"> | |
| 8 | + | <link rel="stylesheet" href="docs.css"> | |
| 9 | + | </head> | |
| 10 | + | <body class="padded-page"> | |
| 11 | + | <header class="site-header"><a href="./index.html">makenot<span class="dot">.</span>work</a></header> | |
| 12 | + | <article class="doc-container"> | |
| 13 | + | <nav class="doc-nav"><a href="./index.html">Docs</a> / Guide</nav> | |
| 14 | + | <h1>Items <span class="dot">.</span></h1> | |
| 15 | + | <p>Items are individual pieces of content — a song, an article, a | |
| 16 | + | software release, a file download.</p> | |
| 17 | + | <hr /> | |
| 18 | + | <h2 id="item-types">Item Types</h2> | |
| 19 | + | <table> | |
| 20 | + | <thead> | |
| 21 | + | <tr> | |
| 22 | + | <th>Type</th> | |
| 23 | + | <th>Content</th> | |
| 24 | + | <th>Player/Viewer</th> | |
| 25 | + | <th>Chapters</th> | |
| 26 | + | <th>Versions</th> | |
| 27 | + | </tr> | |
| 28 | + | </thead> | |
| 29 | + | <tbody> | |
| 30 | + | <tr> | |
| 31 | + | <td><strong>Audio</strong></td> | |
| 32 | + | <td>MP3, WAV, FLAC, OGG</td> | |
| 33 | + | <td>In-browser streaming player</td> | |
| 34 | + | <td>Yes</td> | |
| 35 | + | <td>Yes</td> | |
| 36 | + | </tr> | |
| 37 | + | <tr> | |
| 38 | + | <td><strong>Text</strong></td> | |
| 39 | + | <td>Markdown</td> | |
| 40 | + | <td>Clean reading view</td> | |
| 41 | + | <td>No</td> | |
| 42 | + | <td>No</td> | |
| 43 | + | </tr> | |
| 44 | + | <tr> | |
| 45 | + | <td><strong>Digital</strong></td> | |
| 46 | + | <td>Any file (ZIP, DMG, EXE, etc.)</td> | |
| 47 | + | <td>Download link</td> | |
| 48 | + | <td>No</td> | |
| 49 | + | <td>Yes</td> | |
| 50 | + | </tr> | |
| 51 | + | </tbody> | |
| 52 | + | </table> | |
| 53 | + | <p>Choose the type when creating the item. It cannot be changed | |
| 54 | + | afterward.</p> | |
| 55 | + | <h2 id="creating-an-item">Creating an Item</h2> | |
| 56 | + | <ol type="1"> | |
| 57 | + | <li>Navigate to your project</li> | |
| 58 | + | <li>Click <strong>New Item</strong></li> | |
| 59 | + | <li>Set a <strong>title</strong> and <strong>item type</strong></li> | |
| 60 | + | <li>Optionally set a price (defaults to free)</li> | |
| 61 | + | </ol> | |
| 62 | + | <h2 id="editing-an-item">Editing an Item</h2> | |
| 63 | + | <p>From the item settings, you can update:</p> | |
| 64 | + | <ul> | |
| 65 | + | <li><strong>Title</strong>: Display name</li> | |
| 66 | + | <li><strong>Description</strong>: Shown on the item page</li> | |
| 67 | + | <li><strong>Price</strong>: Free, fixed amount, or pay-what-you-want | |
| 68 | + | (see <a href="./07-pricing.html">Pricing</a>)</li> | |
| 69 | + | <li><strong>Tags</strong>: Hierarchical tags for discovery</li> | |
| 70 | + | <li><strong>Cover image</strong>: Displayed on the item card</li> | |
| 71 | + | </ul> | |
| 72 | + | <h2 id="publishing">Publishing</h2> | |
| 73 | + | <p>Items start as drafts. To publish:</p> | |
| 74 | + | <ol type="1"> | |
| 75 | + | <li>Edit the item and set <strong>is_public</strong> to true</li> | |
| 76 | + | <li>Make sure the parent project is also public</li> | |
| 77 | + | </ol> | |
| 78 | + | <p>Published items appear on your profile, in search results, and in RSS | |
| 79 | + | feeds.</p> | |
| 80 | + | <h2 id="scheduling">Scheduling</h2> | |
| 81 | + | <p>Set a future publish date to schedule content releases. The item | |
| 82 | + | becomes visible automatically at the scheduled time.</p> | |
| 83 | + | <h2 id="bulk-operations">Bulk Operations</h2> | |
| 84 | + | <p>From the project dashboard, you can perform bulk operations on items: | |
| 85 | + | publish, unpublish, or delete multiple items at once.</p> | |
| 86 | + | <h2 id="duplicating-an-item">Duplicating an Item</h2> | |
| 87 | + | <p>Duplicate an item to create a copy with the same settings and | |
| 88 | + | metadata. Useful for creating similar items quickly. Content (files, | |
| 89 | + | text) is not duplicated — only metadata.</p> | |
| 90 | + | <h2 id="deleting-an-item">Deleting an Item</h2> | |
| 91 | + | <p>Deleting an item removes it permanently. Fans who purchased it will | |
| 92 | + | lose access. Active download codes and license keys for the item are | |
| 93 | + | invalidated.</p> | |
| 94 | + | <hr /> | |
| 95 | + | <h2 id="see-also">See Also</h2> | |
| 96 | + | <ul> | |
| 97 | + | <li><a href="./04-content.html">Content Types</a> — Uploading and | |
| 98 | + | managing content</li> | |
| 99 | + | <li><a href="./05-versions.html">Versions</a> — Release versioned | |
| 100 | + | files</li> | |
| 101 | + | <li><a href="./06-chapters.html">Chapters</a> — Audio chapter | |
| 102 | + | markers</li> | |
| 103 | + | <li><a href="./07-pricing.html">Pricing & Monetization</a> — Free, | |
| 104 | + | fixed, and PWYW</li> | |
| 105 | + | </ul> | |
| 106 | + | </article> | |
| 107 | + | </body> | |
| 108 | + | </html> |
| @@ -0,0 +1,81 @@ | |||
| 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>Content Types — Makenot.work</title> | |
| 7 | + | <link rel="preconnect" href="https://fonts.googleapis.com"><link rel="preconnect" href="https://fonts.gstatic.com" crossorigin><link href="https://fonts.googleapis.com/css2?family=IBM+Plex+Mono:ital,wght@0,400;0,700;1,400&family=Lato:wght@400;700&family=Young+Serif&display=swap" rel="stylesheet"> | |
| 8 | + | <link rel="stylesheet" href="docs.css"> | |
| 9 | + | </head> | |
| 10 | + | <body class="padded-page"> | |
| 11 | + | <header class="site-header"><a href="./index.html">makenot<span class="dot">.</span>work</a></header> | |
| 12 | + | <article class="doc-container"> | |
| 13 | + | <nav class="doc-nav"><a href="./index.html">Docs</a> / Guide</nav> | |
| 14 | + | <h1>Content Types <span class="dot">.</span></h1> | |
| 15 | + | <p>What you can upload and how it’s delivered to fans.</p> | |
| 16 | + | <hr /> | |
| 17 | + | <h2 id="audio">Audio</h2> | |
| 18 | + | <p>Upload audio files in MP3, WAV, FLAC, or OGG format. Each audio item | |
| 19 | + | gets:</p> | |
| 20 | + | <ul> | |
| 21 | + | <li><strong>In-browser player</strong>: Stream without downloading. | |
| 22 | + | Custom player with playback controls.</li> | |
| 23 | + | <li><strong>Cover image</strong>: Album art displayed in the player and | |
| 24 | + | on the item card.</li> | |
| 25 | + | <li><strong>Chapters</strong>: Timestamp markers for navigating within | |
| 26 | + | the track. See <a href="./06-chapters.html">Chapters</a>.</li> | |
| 27 | + | <li><strong>Downloads</strong>: Fans can download the original file | |
| 28 | + | after purchase.</li> | |
| 29 | + | </ul> | |
| 30 | + | <p>Upload your audio file from the item’s content tab. Large files are | |
| 31 | + | supported — there are no per-file size limits.</p> | |
| 32 | + | <h2 id="text">Text</h2> | |
| 33 | + | <p>Write directly in the markdown editor. Features include:</p> | |
| 34 | + | <ul> | |
| 35 | + | <li><strong>Live preview</strong>: See rendered output as you type</li> | |
| 36 | + | <li><strong>Word count</strong>: Automatically calculated</li> | |
| 37 | + | <li><strong>Reading time</strong>: Estimated based on word count</li> | |
| 38 | + | <li><strong>Full markdown support</strong>: Headers, lists, code blocks, | |
| 39 | + | links, images, tables</li> | |
| 40 | + | </ul> | |
| 41 | + | <p>Text content is stored and rendered on the platform. Fans read it in | |
| 42 | + | a clean, distraction-free view.</p> | |
| 43 | + | <h2 id="digital-downloads">Digital Downloads</h2> | |
| 44 | + | <p>Upload any file type. Digital items support:</p> | |
| 45 | + | <ul> | |
| 46 | + | <li><strong>Any format</strong>: ZIP, DMG, EXE, PDF, images, fonts — | |
| 47 | + | whatever you make</li> | |
| 48 | + | <li><strong>Versioned releases</strong>: Upload new versions with | |
| 49 | + | changelogs. See <a href="./05-versions.html">Versions</a>.</li> | |
| 50 | + | <li><strong>Download tracking</strong>: See how many times each version | |
| 51 | + | has been downloaded</li> | |
| 52 | + | <li><strong>License keys</strong>: Auto-generated keys for software | |
| 53 | + | products. See <a href="./07-pricing.html">Pricing</a>.</li> | |
| 54 | + | </ul> | |
| 55 | + | <h2 id="blog-posts">Blog Posts</h2> | |
| 56 | + | <p>Every project includes a blog. Blog posts use the same markdown | |
| 57 | + | editor as text items, plus:</p> | |
| 58 | + | <ul> | |
| 59 | + | <li><strong>Draft/publish workflow</strong>: Write drafts, publish when | |
| 60 | + | ready</li> | |
| 61 | + | <li><strong>Included in RSS</strong>: Published posts appear in the | |
| 62 | + | project’s RSS feed</li> | |
| 63 | + | <li><strong>Included in data exports</strong>: Blog posts export | |
| 64 | + | alongside all other project data</li> | |
| 65 | + | <li><strong>Separate from items</strong>: Blog posts don’t appear in | |
| 66 | + | your item list — they have their own tab</li> | |
| 67 | + | </ul> | |
| 68 | + | <p>Blog posts are always free. Use them for updates, announcements, | |
| 69 | + | liner notes, or changelogs.</p> | |
| 70 | + | <hr /> | |
| 71 | + | <h2 id="see-also">See Also</h2> | |
| 72 | + | <ul> | |
| 73 | + | <li><a href="./06-chapters.html">Chapters</a> — Audio timestamp | |
| 74 | + | markers</li> | |
| 75 | + | <li><a href="./05-versions.html">Versions</a> — Versioned file | |
| 76 | + | releases</li> | |
| 77 | + | <li><a href="./03-items.html">Items</a> — Item types and settings</li> | |
| 78 | + | </ul> | |
| 79 | + | </article> | |
| 80 | + | </body> | |
| 81 | + | </html> |
| @@ -0,0 +1,80 @@ | |||
| 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>Versions — Makenot.work</title> | |
| 7 | + | <link rel="preconnect" href="https://fonts.googleapis.com"><link rel="preconnect" href="https://fonts.gstatic.com" crossorigin><link href="https://fonts.googleapis.com/css2?family=IBM+Plex+Mono:ital,wght@0,400;0,700;1,400&family=Lato:wght@400;700&family=Young+Serif&display=swap" rel="stylesheet"> | |
| 8 | + | <link rel="stylesheet" href="docs.css"> | |
| 9 | + | </head> | |
| 10 | + | <body class="padded-page"> | |
| 11 | + | <header class="site-header"><a href="./index.html">makenot<span class="dot">.</span>work</a></header> | |
| 12 | + | <article class="doc-container"> | |
| 13 | + | <nav class="doc-nav"><a href="./index.html">Docs</a> / Guide</nav> | |
| 14 | + | <h1>Versions <span class="dot">.</span></h1> | |
| 15 | + | <p>Track releases of digital and audio items with version numbers and | |
| 16 | + | changelogs.</p> | |
| 17 | + | <hr /> | |
| 18 | + | <h2 id="creating-a-version">Creating a Version</h2> | |
| 19 | + | <p>From the item dashboard, add a new version:</p> | |
| 20 | + | <ul> | |
| 21 | + | <li><strong>Version number</strong> (required): Any string up to 50 | |
| 22 | + | characters (e.g., <code>1.0.0</code>, <code>v2</code>, | |
| 23 | + | <code>2024-03-01</code>)</li> | |
| 24 | + | <li><strong>Changelog</strong> (optional): Up to 10,000 characters | |
| 25 | + | describing what changed</li> | |
| 26 | + | <li><strong>File</strong>: Optionally attach a new file to this | |
| 27 | + | version</li> | |
| 28 | + | </ul> | |
| 29 | + | <h2 id="how-is_current-works">How is_current Works</h2> | |
| 30 | + | <p>Only one version per item can be marked as “current.” When you create | |
| 31 | + | a new version:</p> | |
| 32 | + | <ol type="1"> | |
| 33 | + | <li>All existing versions are marked | |
| 34 | + | <code>is_current = false</code></li> | |
| 35 | + | <li>The new version is marked <code>is_current = true</code></li> | |
| 36 | + | </ol> | |
| 37 | + | <p>This happens atomically — there’s no moment where zero or multiple | |
| 38 | + | versions are current.</p> | |
| 39 | + | <p>Fans downloading the item get the current version by default.</p> | |
| 40 | + | <h2 id="changelogs">Changelogs</h2> | |
| 41 | + | <p>Use changelogs to tell fans what changed. Changelogs are plain text, | |
| 42 | + | up to 10,000 characters. Keep them concise — fans want to know what’s | |
| 43 | + | new, not read a novel.</p> | |
| 44 | + | <h2 id="download-tracking">Download Tracking</h2> | |
| 45 | + | <p>Each version tracks its download count independently. This helps you | |
| 46 | + | see which versions fans are using.</p> | |
| 47 | + | <h2 id="listing-versions">Listing Versions</h2> | |
| 48 | + | <p>The public version list is ordered newest-first (by creation date). | |
| 49 | + | Only published items expose their version list — draft items return a | |
| 50 | + | 404.</p> | |
| 51 | + | <h2 id="validation">Validation</h2> | |
| 52 | + | <table> | |
| 53 | + | <thead> | |
| 54 | + | <tr> | |
| 55 | + | <th>Field</th> | |
| 56 | + | <th>Rule</th> | |
| 57 | + | </tr> | |
| 58 | + | </thead> | |
| 59 | + | <tbody> | |
| 60 | + | <tr> | |
| 61 | + | <td>Version number</td> | |
| 62 | + | <td>1-50 characters, required</td> | |
| 63 | + | </tr> | |
| 64 | + | <tr> | |
| 65 | + | <td>Changelog</td> | |
| 66 | + | <td>0-10,000 characters, optional</td> | |
| 67 | + | </tr> | |
| 68 | + | </tbody> | |
| 69 | + | </table> | |
| 70 | + | <hr /> | |
| 71 | + | <h2 id="see-also">See Also</h2> | |
| 72 | + | <ul> | |
| 73 | + | <li><a href="./03-items.html">Items</a> — Item types and settings</li> | |
| 74 | + | <li><a href="./04-content.html">Content Types</a> — Upload formats</li> | |
| 75 | + | <li><a href="./09-analytics.html">Analytics & Data</a> — Download | |
| 76 | + | tracking and exports</li> | |
| 77 | + | </ul> | |
| 78 | + | </article> | |
| 79 | + | </body> | |
| 80 | + | </html> |