max / makenotwork
- Co-Authored-By
- Claude Opus 4.7 (1M context) <noreply@anthropic.com>
15 files changed,
+273 insertions,
-75 deletions
| @@ -4140,7 +4140,7 @@ | |||
| 4140 | 4140 | ||
| 4141 | 4141 | [[package]] | |
| 4142 | 4142 | name = "makenotwork" | |
| 4143 | - | version = "0.8.14" | |
| 4143 | + | version = "0.8.15" | |
| 4144 | 4144 | dependencies = [ | |
| 4145 | 4145 | "anyhow", | |
| 4146 | 4146 | "apple-codesign", |
| @@ -1,6 +1,6 @@ | |||
| 1 | 1 | [package] | |
| 2 | 2 | name = "makenotwork" | |
| 3 | - | version = "0.8.14" | |
| 3 | + | version = "0.8.15" | |
| 4 | 4 | edition = "2024" | |
| 5 | 5 | license-file = "LICENSE" | |
| 6 | 6 |
| @@ -33,6 +33,7 @@ | |||
| 33 | 33 | pub mod storage; | |
| 34 | 34 | pub mod synckit_auth; | |
| 35 | 35 | pub mod templates; | |
| 36 | + | pub mod tier_prices; | |
| 36 | 37 | pub mod types; | |
| 37 | 38 | pub mod validation; | |
| 38 | 39 | pub mod wordlist; | |
| @@ -73,6 +74,7 @@ | |||
| 73 | 74 | pub stripe: Option<Arc<dyn PaymentProvider>>, | |
| 74 | 75 | pub email: EmailClient, | |
| 75 | 76 | pub docs: Arc<DocLoader>, | |
| 77 | + | pub tier_prices: tier_prices::TierPrices, | |
| 76 | 78 | pub scanner: Option<Arc<ScanPipeline>>, | |
| 77 | 79 | pub webauthn: Arc<Webauthn>, | |
| 78 | 80 | pub syntax: Option<Arc<git::SyntaxHighlighter>>, |
| @@ -301,6 +301,7 @@ | |||
| 301 | 301 | stripe, | |
| 302 | 302 | email, | |
| 303 | 303 | docs, | |
| 304 | + | tier_prices: makenotwork::tier_prices::TierPrices::from_assumptions(&assumptions), | |
| 304 | 305 | scanner, | |
| 305 | 306 | webauthn, | |
| 306 | 307 | syntax, |
| @@ -335,6 +335,9 @@ | |||
| 335 | 335 | pub is_founder: bool, | |
| 336 | 336 | /// Whether this user's founder pricing is permanently locked in. | |
| 337 | 337 | pub is_founder_locked: bool, | |
| 338 | + | /// Tier cards rendered in the upgrade grid. Built from `state.tier_prices` | |
| 339 | + | /// so a price change in `assumptions.toml` flows through automatically. | |
| 340 | + | pub tier_cards: Vec<crate::tier_prices::TierCard>, | |
| 338 | 341 | } | |
| 339 | 342 | ||
| 340 | 343 | /// Dashboard tab: project overview with stat cards. |
| @@ -57,27 +57,27 @@ | |||
| 57 | 57 | <tbody> | |
| 58 | 58 | <tr> | |
| 59 | 59 | <td>Basic</td> | |
| 60 | - | <td>$16</td> | |
| 60 | + | <td>${{ tier_prices.basic_std }}</td> | |
| 61 | 61 | <td>Text, blogs, newsletters</td> | |
| 62 | - | <td>50 GB</td> | |
| 62 | + | <td>{{ tier_prices.basic_total }}</td> | |
| 63 | 63 | </tr> | |
| 64 | 64 | <tr> | |
| 65 | 65 | <td>Small Files</td> | |
| 66 | - | <td>$24</td> | |
| 66 | + | <td>${{ tier_prices.small_files_std }}</td> | |
| 67 | 67 | <td>Audio, plugins, small software</td> | |
| 68 | - | <td>250 GB</td> | |
| 68 | + | <td>{{ tier_prices.small_files_total }}</td> | |
| 69 | 69 | </tr> | |
| 70 | 70 | <tr> | |
| 71 | 71 | <td>Big Files</td> | |
| 72 | - | <td>$36</td> | |
| 72 | + | <td>${{ tier_prices.big_files_std }}</td> | |
| 73 | 73 | <td>Video, games, large software</td> | |
| 74 | - | <td>500 GB</td> | |
| 74 | + | <td>{{ tier_prices.big_files_total }}</td> | |
| 75 | 75 | </tr> | |
| 76 | 76 | <tr> | |
| 77 | 77 | <td>Everything</td> | |
| 78 | - | <td>$60</td> | |
| 78 | + | <td>${{ tier_prices.everything_std }}</td> | |
| 79 | 79 | <td>All features, current and future</td> | |
| 80 | - | <td>500 GB</td> | |
| 80 | + | <td>{{ tier_prices.everything_total }}</td> | |
| 81 | 81 | </tr> | |
| 82 | 82 | </tbody> | |
| 83 | 83 | </table> |
| @@ -37,19 +37,19 @@ | |||
| 37 | 37 | <div class="founder-tier-grid" aria-label="Founder tier pricing"> | |
| 38 | 38 | <div class="founder-tier"> | |
| 39 | 39 | <span class="founder-tier-name">Basic</span> | |
| 40 | - | <span class="founder-tier-price"><del>$16</del> <strong>$8</strong><span class="founder-tier-unit">/mo</span></span> | |
| 40 | + | <span class="founder-tier-price"><del>${{ tier_prices.basic_std }}</del> <strong>${{ tier_prices.basic_founder }}</strong><span class="founder-tier-unit">/mo</span></span> | |
| 41 | 41 | </div> | |
| 42 | 42 | <div class="founder-tier"> | |
| 43 | 43 | <span class="founder-tier-name">Small Files</span> | |
| 44 | - | <span class="founder-tier-price"><del>$24</del> <strong>$12</strong><span class="founder-tier-unit">/mo</span></span> | |
| 44 | + | <span class="founder-tier-price"><del>${{ tier_prices.small_files_std }}</del> <strong>${{ tier_prices.small_files_founder }}</strong><span class="founder-tier-unit">/mo</span></span> | |
| 45 | 45 | </div> | |
| 46 | 46 | <div class="founder-tier"> | |
| 47 | 47 | <span class="founder-tier-name">Big Files</span> | |
| 48 | - | <span class="founder-tier-price"><del>$36</del> <strong>$18</strong><span class="founder-tier-unit">/mo</span></span> | |
| 48 | + | <span class="founder-tier-price"><del>${{ tier_prices.big_files_std }}</del> <strong>${{ tier_prices.big_files_founder }}</strong><span class="founder-tier-unit">/mo</span></span> | |
| 49 | 49 | </div> | |
| 50 | 50 | <div class="founder-tier"> | |
| 51 | 51 | <span class="founder-tier-name">Everything</span> | |
| 52 | - | <span class="founder-tier-price"><del>$60</del> <strong>$30</strong><span class="founder-tier-unit">/mo</span></span> | |
| 52 | + | <span class="founder-tier-price"><del>${{ tier_prices.everything_std }}</del> <strong>${{ tier_prices.everything_founder }}</strong><span class="founder-tier-unit">/mo</span></span> | |
| 53 | 53 | </div> | |
| 54 | 54 | </div> | |
| 55 | 55 | {% if let Some(remaining) = founder_slots_remaining %} | |
| @@ -67,7 +67,7 @@ | |||
| 67 | 67 | ||
| 68 | 68 | <ul class="fork-list"> | |
| 69 | 69 | {% if !founder_window_open %} | |
| 70 | - | <li><strong>Flat monthly pricing</strong>: starts at $16/mo</li> | |
| 70 | + | <li><strong>Flat monthly pricing</strong>: starts at ${{ tier_prices.basic_std }}/mo</li> | |
| 71 | 71 | {% endif %} | |
| 72 | 72 | <li><strong>0% platform fee</strong>: only ~3% payment processing</li> | |
| 73 | 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> | |
| @@ -112,7 +112,7 @@ | |||
| 112 | 112 | <ul class="how-list"> | |
| 113 | 113 | <li><strong>No investors, no ads</strong>: funded by subscriptions, not surveillance.</li> | |
| 114 | 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 ($16–$60).</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 | 116 | <li><strong>Built to last</strong>: no debt, no growth mandates, no reason to enshittify.</li> | |
| 117 | 117 | </ul> | |
| 118 | 118 | <a class="section-link" href="/docs/how-we-work">How the business model works</a> |
| @@ -23,27 +23,27 @@ | |||
| 23 | 23 | <p class="tier-intro">Every tier is the complete platform: profile, project pages, forum, discovery, memberships, analytics, full data export. The tier picks the file-size envelope, not the feature set.</p> | |
| 24 | 24 | <div class="tier-selector" role="radiogroup" aria-label="Content tier"> | |
| 25 | 25 | <label class="tier-card tier-option is-selected"> | |
| 26 | - | <input type="radio" name="tier" value="16" checked> | |
| 26 | + | <input type="radio" name="tier" value="{{ tier_prices.basic_std }}" checked> | |
| 27 | 27 | <div class="tier-name">Basic</div> | |
| 28 | - | <div class="tier-price">$16/mo</div> | |
| 29 | - | <div class="tier-desc">10MB/file, 50GB total. Fits text, blogs, newsletters.</div> | |
| 28 | + | <div class="tier-price">${{ tier_prices.basic_std }}/mo</div> | |
| 29 | + | <div class="tier-desc">{{ tier_prices.basic_per_file }}/file, {{ tier_prices.basic_total }} total. Fits text, blogs, newsletters.</div> | |
| 30 | 30 | </label> | |
| 31 | 31 | <label class="tier-card tier-option"> | |
| 32 | - | <input type="radio" name="tier" value="24"> | |
| 32 | + | <input type="radio" name="tier" value="{{ tier_prices.small_files_std }}"> | |
| 33 | 33 | <div class="tier-name">Small Files</div> | |
| 34 | - | <div class="tier-price">$24/mo</div> | |
| 35 | - | <div class="tier-desc">500MB/file, 250GB total. Fits audio, plugins, binaries.</div> | |
| 34 | + | <div class="tier-price">${{ tier_prices.small_files_std }}/mo</div> | |
| 35 | + | <div class="tier-desc">{{ tier_prices.small_files_per_file }}/file, {{ tier_prices.small_files_total }} total. Fits audio, plugins, binaries.</div> | |
| 36 | 36 | </label> | |
| 37 | 37 | <label class="tier-card tier-option"> | |
| 38 | - | <input type="radio" name="tier" value="36"> | |
| 38 | + | <input type="radio" name="tier" value="{{ tier_prices.big_files_std }}"> | |
| 39 | 39 | <div class="tier-name">Big Files</div> | |
| 40 | - | <div class="tier-price">$36/mo</div> | |
| 41 | - | <div class="tier-desc">20GB/file, 500GB total. Fits video, games, large software.</div> | |
| 40 | + | <div class="tier-price">${{ tier_prices.big_files_std }}/mo</div> | |
| 41 | + | <div class="tier-desc">{{ tier_prices.big_files_per_file }}/file, {{ tier_prices.big_files_total }} total. Fits video, games, large software.</div> | |
| 42 | 42 | </label> | |
| 43 | 43 | <label class="tier-card tier-option"> | |
| 44 | - | <input type="radio" name="tier" value="60"> | |
| 44 | + | <input type="radio" name="tier" value="{{ tier_prices.everything_std }}"> | |
| 45 | 45 | <div class="tier-name">Everything</div> | |
| 46 | - | <div class="tier-price">$60/mo</div> | |
| 46 | + | <div class="tier-price">${{ tier_prices.everything_std }}/mo</div> | |
| 47 | 47 | <div class="tier-desc">Big Files envelope plus first access to high-cost features as they ship.</div> | |
| 48 | 48 | </label> | |
| 49 | 49 | </div> | |
| @@ -53,7 +53,7 @@ | |||
| 53 | 53 | <h2 class="section-label">You keep</h2> | |
| 54 | 54 | <div class="mnw-summary"> | |
| 55 | 55 | <div class="mnw-keep" id="mnw-keep">$943.00</div> | |
| 56 | - | <div class="mnw-detail" id="mnw-detail">of every $1,000 after processing fees (~3%) and $16/mo membership</div> | |
| 56 | + | <div class="mnw-detail" id="mnw-detail">of every $1,000 after processing fees (~3%) and ${{ tier_prices.basic_std }}/mo membership</div> | |
| 57 | 57 | </div> | |
| 58 | 58 | </div> | |
| 59 | 59 | ||
| @@ -83,10 +83,10 @@ | |||
| 83 | 83 | <h2 class="section-label">Where your tier fee goes</h2> | |
| 84 | 84 | <p class="cost-allocation-intro">Per typical creator, monthly. These are platform-wide budget allocations, not per-account accounting. Hover a segment for details.</p> | |
| 85 | 85 | ||
| 86 | - | {# Basic — $16 = 0.76 + 0.40 + 5.00 + 6.00 + 2.00 + 1.84 #} | |
| 86 | + | {# Basic — $16 = 0.76 + 0.40 + 5.00 + 6.00 + 2.00 + 1.84. Sub-amounts hardcoded; see launchplan §4.5.1 for the planned [cost_allocation] toml section. #} | |
| 87 | 87 | <div class="cost-row"> | |
| 88 | - | <div class="cost-row-label"><strong>Basic</strong>$16/mo</div> | |
| 89 | - | <div class="cost-bar" role="img" aria-label="Basic tier $16/mo allocation: Stripe $0.76, Storage $0.40, Support $5.00, Engineering $6.00, Reserves $2.00, Earn-back $1.84"> | |
| 88 | + | <div class="cost-row-label"><strong>Basic</strong>${{ tier_prices.basic_std }}/mo</div> | |
| 89 | + | <div class="cost-bar" role="img" aria-label="Basic tier ${{ tier_prices.basic_std }}/mo allocation: Stripe $0.76, Storage $0.40, Support $5.00, Engineering $6.00, Reserves $2.00, Earn-back $1.84"> | |
| 90 | 90 | <div class="cost-bar-seg cost-bar-seg-stripe" style="flex: 76" title="Stripe processing: $0.76. Stripe's fee on your monthly subscription.">$0.76</div> | |
| 91 | 91 | <div class="cost-bar-seg cost-bar-seg-storage" style="flex: 40" title="Storage: $0.40. Object storage at your tier's typical fill, on Hetzner.">$0.40</div> | |
| 92 | 92 | <div class="cost-bar-seg cost-bar-seg-support" style="flex: 500" title="Human support time: $5.00. Identity recovery, billing disputes, moderation, abuse, and legal — the work that can't be automated.">$5.00</div> | |
| @@ -98,8 +98,8 @@ | |||
| 98 | 98 | ||
| 99 | 99 | {# Small Files — $24 = 1.00 + 0.60 + 5.00 + 6.00 + 2.00 + 9.40 #} | |
| 100 | 100 | <div class="cost-row"> | |
| 101 | - | <div class="cost-row-label"><strong>Small Files</strong>$24/mo</div> | |
| 102 | - | <div class="cost-bar" role="img" aria-label="Small Files tier $24/mo allocation: Stripe $1.00, Storage $0.60, Support $5.00, Engineering $6.00, Reserves $2.00, Earn-back $9.40"> | |
| 101 | + | <div class="cost-row-label"><strong>Small Files</strong>${{ tier_prices.small_files_std }}/mo</div> | |
| 102 | + | <div class="cost-bar" role="img" aria-label="Small Files tier ${{ tier_prices.small_files_std }}/mo allocation: Stripe $1.00, Storage $0.60, Support $5.00, Engineering $6.00, Reserves $2.00, Earn-back $9.40"> | |
| 103 | 103 | <div class="cost-bar-seg cost-bar-seg-stripe" style="flex: 100" title="Stripe processing: $1.00.">$1.00</div> | |
| 104 | 104 | <div class="cost-bar-seg cost-bar-seg-storage" style="flex: 60" title="Storage: $0.60. Object storage at your tier's typical fill.">$0.60</div> | |
| 105 | 105 | <div class="cost-bar-seg cost-bar-seg-support" style="flex: 500" title="Human support time: $5.00.">$5.00</div> | |
| @@ -111,8 +111,8 @@ | |||
| 111 | 111 | ||
| 112 | 112 | {# Big Files — $36 = 1.34 + 0.90 + 5.00 + 6.00 + 2.00 + 20.76 #} | |
| 113 | 113 | <div class="cost-row"> | |
| 114 | - | <div class="cost-row-label"><strong>Big Files</strong>$36/mo</div> | |
| 115 | - | <div class="cost-bar" role="img" aria-label="Big Files tier $36/mo allocation: Stripe $1.34, Storage $0.90, Support $5.00, Engineering $6.00, Reserves $2.00, Earn-back $20.76"> | |
| 114 | + | <div class="cost-row-label"><strong>Big Files</strong>${{ tier_prices.big_files_std }}/mo</div> | |
| 115 | + | <div class="cost-bar" role="img" aria-label="Big Files tier ${{ tier_prices.big_files_std }}/mo allocation: Stripe $1.34, Storage $0.90, Support $5.00, Engineering $6.00, Reserves $2.00, Earn-back $20.76"> | |
| 116 | 116 | <div class="cost-bar-seg cost-bar-seg-stripe" style="flex: 134" title="Stripe processing: $1.34.">$1.34</div> | |
| 117 | 117 | <div class="cost-bar-seg cost-bar-seg-storage" style="flex: 90" title="Storage: $0.90.">$0.90</div> | |
| 118 | 118 | <div class="cost-bar-seg cost-bar-seg-support" style="flex: 500" title="Human support time: $5.00.">$5.00</div> | |
| @@ -124,8 +124,8 @@ | |||
| 124 | 124 | ||
| 125 | 125 | {# Everything — $60 = 2.04 + 1.50 + 5.00 + 6.00 + 2.00 + 43.46 #} | |
| 126 | 126 | <div class="cost-row"> | |
| 127 | - | <div class="cost-row-label"><strong>Everything</strong>$60/mo</div> | |
| 128 | - | <div class="cost-bar" role="img" aria-label="Everything tier $60/mo allocation: Stripe $2.04, Storage $1.50, Support $5.00, Engineering $6.00, Reserves $2.00, Earn-back $43.46"> | |
| 127 | + | <div class="cost-row-label"><strong>Everything</strong>${{ tier_prices.everything_std }}/mo</div> | |
| 128 | + | <div class="cost-bar" role="img" aria-label="Everything tier ${{ tier_prices.everything_std }}/mo allocation: Stripe $2.04, Storage $1.50, Support $5.00, Engineering $6.00, Reserves $2.00, Earn-back $43.46"> | |
| 129 | 129 | <div class="cost-bar-seg cost-bar-seg-stripe" style="flex: 204" title="Stripe processing: $2.04.">$2.04</div> | |
| 130 | 130 | <div class="cost-bar-seg cost-bar-seg-storage" style="flex: 150" title="Storage: $1.50.">$1.50</div> | |
| 131 | 131 | <div class="cost-bar-seg cost-bar-seg-support" style="flex: 500" title="Human support time: $5.00.">$5.00</div> | |
| @@ -291,7 +291,8 @@ | |||
| 291 | 291 | var revenue = parseFloat(revenueInput.value) || 0; | |
| 292 | 292 | ||
| 293 | 293 | var tierRadios = document.querySelectorAll('input[name="tier"]'); | |
| 294 | - | var tierCost = 16; | |
| 294 | + | // Default falls back to the Basic-tier radio value; templates render the canonical price. | |
| 295 | + | var tierCost = {{ tier_prices.basic_std }}; | |
| 295 | 296 | for (var i = 0; i < tierRadios.length; i++) { | |
| 296 | 297 | if (tierRadios[i].checked) { | |
| 297 | 298 | tierCost = parseInt(tierRadios[i].value, 10); |
| @@ -24,7 +24,7 @@ | |||
| 24 | 24 | <li>RSS feed per project</li> | |
| 25 | 25 | <li>Pay-what-you-want pricing</li> | |
| 26 | 26 | </ul> | |
| 27 | - | <div class="use-case-tier">Small Files $24/mo · 250GB, 500MB/file</div> | |
| 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 | 30 | <div class="use-case-card"> | |
| @@ -37,7 +37,7 @@ | |||
| 37 | 37 | <li>Subscriber-only feeds</li> | |
| 38 | 38 | <li>Broadcast emails to followers</li> | |
| 39 | 39 | </ul> | |
| 40 | - | <div class="use-case-tier">Small Files $24/mo · 250GB, 500MB/file</div> | |
| 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 | 43 | <div class="use-case-card"> | |
| @@ -51,7 +51,7 @@ | |||
| 51 | 51 | <li>Scheduled publishing</li> | |
| 52 | 52 | <li>Broadcast emails</li> | |
| 53 | 53 | </ul> | |
| 54 | - | <div class="use-case-tier">Basic $16/mo · 50GB, 10MB/file</div> | |
| 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 | 57 | <div class="use-case-card"> | |
| @@ -64,7 +64,7 @@ | |||
| 64 | 64 | <li>Git source browser</li> | |
| 65 | 65 | <li>Promo codes and discounts</li> | |
| 66 | 66 | </ul> | |
| 67 | - | <div class="use-case-tier">Small Files $24/mo · 250GB, 500MB/file</div> | |
| 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 | 70 | <div class="use-case-card"> | |
| @@ -78,7 +78,7 @@ | |||
| 78 | 78 | <li>Pay-what-you-want pricing</li> | |
| 79 | 79 | <li>Cover art</li> | |
| 80 | 80 | </ul> | |
| 81 | - | <div class="use-case-tier">Small Files $24/mo · 250GB, 500MB/file</div> | |
| 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 | 84 | <div class="use-case-card"> | |
| @@ -91,7 +91,7 @@ | |||
| 91 | 91 | <li>Subscription tiers</li> | |
| 92 | 92 | <li>Cover images</li> | |
| 93 | 93 | </ul> | |
| 94 | - | <div class="use-case-tier">Small Files $24/mo · 250GB, 500MB/file</div> | |
| 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 | 97 | <div class="use-case-card"> | |
| @@ -104,7 +104,7 @@ | |||
| 104 | 104 | <li>Subscription tiers</li> | |
| 105 | 105 | <li>Scheduled publishing</li> | |
| 106 | 106 | </ul> | |
| 107 | - | <div class="use-case-tier">Basic $16/mo or Small Files $24/mo</div> | |
| 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 | 110 | <div class="use-case-card"> | |
| @@ -117,7 +117,7 @@ | |||
| 117 | 117 | <li>License keys with activation limits</li> | |
| 118 | 118 | <li>Promo codes</li> | |
| 119 | 119 | </ul> | |
| 120 | - | <div class="use-case-tier">Big Files $36/mo · 500GB, 20GB/file</div> | |
| 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 | 123 | <div class="use-case-card"> | |
| @@ -130,7 +130,7 @@ | |||
| 130 | 130 | <li>Subscriptions</li> | |
| 131 | 131 | <li>Scheduled publishing</li> | |
| 132 | 132 | </ul> | |
| 133 | - | <div class="use-case-tier">Small Files $24/mo · 250GB, 500MB/file</div> | |
| 133 | + | <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> | |
| 134 | 134 | </div> | |
| 135 | 135 | </div> | |
| 136 | 136 | </div> | |
| @@ -147,7 +147,7 @@ | |||
| 147 | 147 | <li>Adaptive streaming</li> | |
| 148 | 148 | <li>All existing features included</li> | |
| 149 | 149 | </ul> | |
| 150 | - | <div class="use-case-tier">Big Files $36/mo · 500GB, 20GB/file</div> | |
| 150 | + | <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> | |
| 151 | 151 | </div> | |
| 152 | 152 | ||
| 153 | 153 | <div class="use-case-card coming-soon"> | |
| @@ -159,7 +159,7 @@ | |||
| 159 | 159 | <li>VOD archives</li> | |
| 160 | 160 | <li>All existing features included</li> | |
| 161 | 161 | </ul> | |
| 162 | - | <div class="use-case-tier">Everything $60/mo · 500GB, all features</div> | |
| 162 | + | <div class="use-case-tier">Everything ${{ tier_prices.everything_std }}/mo · {{ tier_prices.everything_total }}, all features</div> | |
| 163 | 163 | </div> | |
| 164 | 164 | </div> | |
| 165 | 165 | </div> |