diff --git a/Gemfile.lock b/Gemfile.lock index 116c5edd..223dfabb 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -1295,7 +1295,7 @@ GEM execjs coffee-script-source (1.12.2) concurrent-ruby (1.1.10) - connection_pool (2.2.5) + connection_pool (2.3.0) crass (1.0.6) csv (3.2.5) d3-rails (5.9.2) @@ -1555,9 +1555,9 @@ GEM railties (>= 3.2) tilt redcarpet (3.5.1) - redis (5.0.2) - redis-client (~> 0.7) - redis-client (0.7.3) + redis (5.0.5) + redis-client (>= 0.9.0) + redis-client (0.10.0) connection_pool remotipart (1.4.4) responders (3.0.1) @@ -1593,10 +1593,10 @@ GEM rubyzip (>= 1.2.2, < 3.0) websocket (~> 1.0) semantic_range (3.0.0) - sidekiq (6.5.6) - connection_pool (>= 2.2.5) + sidekiq (6.5.5) + connection_pool (>= 2.2.2) rack (~> 2.0) - redis (>= 4.5.0, < 5) + redis (>= 4.5.0) simplecov (0.13.0) docile (~> 1.1.0) json (>= 1.8, < 3) diff --git a/app/controllers/subscriptions_controller.rb b/app/controllers/subscriptions_controller.rb index 5887c081..2edb0063 100644 --- a/app/controllers/subscriptions_controller.rb +++ b/app/controllers/subscriptions_controller.rb @@ -1,7 +1,7 @@ class SubscriptionsController < ApplicationController protect_from_forgery except: :stripe_webhook - before_action :authenticate_user!, except: [:redeem] + before_action :authenticate_user!, except: [:redeem, :faq] before_action :set_navbar_actions, except: [:redeem, :prepay_paid] before_action :set_sidenav_expansion, except: [:redeem, :prepay_paid] @@ -231,6 +231,9 @@ class SubscriptionsController < ApplicationController redirect_back(fallback_location: subscription_path, notice: "Promo code successfully activated!") end + def faq + end + private def move_user_to_plan_requested(plan_id) @@ -264,12 +267,18 @@ class SubscriptionsController < ApplicationController end def set_navbar_actions - @navbar_actions = [{ - label: "Your plan", - href: main_app.subscription_path - }, { - label: "Billing history", - href: main_app.billing_history_path - }] + if user_signed_in? + @navbar_actions = [{ + label: "Your plan", + href: main_app.subscription_path + }, { + label: "Billing history", + href: main_app.billing_history_path + }, + { + label: 'Billing FAQ', + href: main_app.billing_faq_path + }] + end end end diff --git a/app/helpers/marketing_helper.rb b/app/helpers/marketing_helper.rb new file mode 100644 index 00000000..ad4a3551 --- /dev/null +++ b/app/helpers/marketing_helper.rb @@ -0,0 +1,7 @@ +module MarketingHelper + def linked_page_type(text:, page_type:) + content_tag(:a, href: send("#{page_type.name.downcase}_worldbuilding_info_path"), class: page_type.text_color) do + content_tag(:strong, text) + end + end +end diff --git a/app/javascript/components/Footer.js b/app/javascript/components/Footer.js index 012fad14..49d066f3 100644 --- a/app/javascript/components/Footer.js +++ b/app/javascript/components/Footer.js @@ -19,6 +19,10 @@ class Footer extends React.Component { GitHub + · + + Discord + diff --git a/app/views/subscriptions/faq.html.erb b/app/views/subscriptions/faq.html.erb new file mode 100644 index 00000000..cc71ea76 --- /dev/null +++ b/app/views/subscriptions/faq.html.erb @@ -0,0 +1,285 @@ +
+ The free Notebook.ai experience was intentionally designed to be powerful enough for most amateur worldbuilders. + All users receive full access to the core trifecta of worldbuilding pages: + <%= linked_page_type(text: 'Characters', page_type: Character) %>, + <%= linked_page_type(text: 'Locations', page_type: Location) %>, and + <%= linked_page_type(text: 'Items', page_type: Item) %>. +
++ Notebook.ai Premium is an optional upgrade for adventurous worldbuilders looking to take their fictional worlds + to the next level. A Premium subscription unlocks <%= Rails.application.config.content_types[:premium].count %> + additional page types for you to create: +
++ <% Rails.application.config.content_types[:premium].each_with_index do |page_type, idx| %> + <%= linked_page_type(text: page_type.name.pluralize, page_type: page_type) %>, + <% end %> + and unlimited <%= linked_page_type(text: 'Universes', page_type: Universe) %> to + organize your worlds into. +
++ Notebook.ai Premium also unlocks several other advanced features across the site, such as + Timelines, our AI-powered document analysis, Collections that organize your worlds in new ways, + and increased upload storage space for all of your images and reference material. +
++ There are two account tiers on Notebook.ai: Starter and Premium. +
++ The free tier is called Starter. You can create unlimited + <%= linked_page_type(text: 'Characters', page_type: Character) %>, + <%= linked_page_type(text: 'Locations', page_type: Location) %>, and + <%= linked_page_type(text: 'Items', page_type: Item) %>, as well as create up + to 5 + <%= linked_page_type(text: 'Universes', page_type: Universe) %> to organize your + worlds into. +
++ The paid tier is called Premium. Premium starts at $9 per month, but you can + secure it at a cheaper price by choosing longer subscription periods. Right now, + the following options are available: +
++ Subscriptions automatically renew based on the date you started them. You can + see what day your subscription will renew by viewing your + <%= link_to 'Billing Page', subscription_path %> with a subscription active. +
++ You're free to cancel any subscription at any time, without any penalties or + additional fees. To do so, simply visit your + <%= link_to 'Billing Page', subscription_path %> and click "Downgrade" + to switch back to the free Starter tier. Your subscription will cancel + immediately and any unused time will be credited to your account. +
++ You can cancel a subscription at any time by visiting your + <%= link_to 'Billing Page', subscription_path %> and clicking "Downgrade" + to switch back to the free Starter tier. Your subscription will + cancel immediately and no longer renew. +
++ Once you've created any page on Notebook.ai, you will keep full access to + view, edit, and/or share that page, regardless of whether you have an + active Premium subscription or not. +
++ While on the free Starter tier, you simply cannot create additional + Premium pages without re-upgrading to a new subscription. Your existing pages + are always yours and will never be locked behind any kind of payment to access. +
++ Notebook.ai also offers prepaid subscriptions where you choose a duration of time + you'd like Premium for and pay upfront for that time. Afterwards, your account + will automatically be downgraded back to the free Starter tier, but you'll keep + full access to any pages you've created. +
++ To pay for Premium without a subscription, you'll need to purchase and activate a + Premium Code <%= link_to 'here', prepay_path %>. +
++ Premium Codes are prepaid codes that can be shared with others and activated on any + account to enable Premium access for a set amount of time. Premium Codes are often + purchased by those who don't wish to have a renewing subscription, or wish to gift + Premium to someone else without sharing their payment details. +
++ Premium Codes are available for purchase <%= link_to 'here', prepay_path %>. +
++ Right now, we don't accept Paypal payments for the standard Premium subscription. +
++ However, we do accept Paypal for Premium Code purchases, which can be activated for + the same Premium access without a recurring subscription. You can purchase Premium + codes <%= link_to 'here', prepay_path %>. +
++ The best way to purchase Premium for a friend is with Premium Codes. Premium Codes + allow for you to prepay for as much Premium as you'd like and receive a code that + you can share with your friend, which they can then activate on their account + whenever they want. +
++ When you have an active Premium subscription, any collaborators you add to your + universes will automatically receive Premium access when they're working within + your universe. This will let them create Premium pages as if they had Premium + themselves. +
++ Notebook.ai doesn't store your payment information anywhere on our site or servers; + instead, our industry-standard payment processor Stripe handles the secure storage + of your payment information. +
++ While not storing your payment information protects us from data leaks that could + otherwise put your data at risk, it also means we can't provide access to directly + view or edit your existing payment information. +
++ If you wish to change your saved payment method, we recommend you first delete + your existing payment method and simply add a new one. + You can delete existing payment methods or add new payment methods at any time + by visiting your <%= link_to 'Billing History', billing_history_path %> page. +
++ Please reach out to me directly at andrew@indentlabs.com. +
++ Notebook.ai supports data exports in CSV, JSON, XML, YAML, and plaintext formats. +
++ To export your notebook, just click "Export your data" in the + <%= link_to 'Data Vault', data_vault_path %> and select the format you want. +
+Of course! :)
++ I wish I could provide Notebook.ai for free to everyone. In fact, the site is + intentionally designed for the free tier to be enough for most worldbuilders, + leaving the Premium subscription to those who want to dive deep and really flesh + out amazing worlds. +
++ Offering a Premium subscription has kept the site running smoothly for over + half a million users since 2016—and we're not planning on going away + any time soon. Whether you're subscribed and supporting the site financially + or just using the site, sharing it with friends, and/or offering feedback, you're + still supporting the site. ♥ +
++ Feel free to reach out to me any time at andrew@indentlabs.com + or post on the <%= link_to 'Site Support', 'https://www.notebook.ai/forum/site-support' %> + discussion board. I'm constantly working to make the site better and I'm always happy + to help! +
diff --git a/app/views/subscriptions/new.html.erb b/app/views/subscriptions/new.html.erb index 065d2a9e..0cc66bbb 100644 --- a/app/views/subscriptions/new.html.erb +++ b/app/views/subscriptions/new.html.erb @@ -39,6 +39,8 @@ You will be charged <%= number_to_currency(@active_billing_plan.monthly_cents / 100) %> on the <%= renewal_day %><%= renewal_day.ordinal %> of each month. <% end %> + + Click <%= link_to 'here', billing_faq_path %> to view our cancellation policy and other frequently-asked questions. <% end %> <% end %> diff --git a/config/routes.rb b/config/routes.rb index 9c700f39..1ca33c31 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -179,8 +179,9 @@ Rails.application.routes.draw do # Info pages scope '/about' do - get '/paper', to: 'main#paper', as: :green_paper - get '/privacy', to: 'main#privacyinfo', as: :privacy_policy + get '/paper', to: 'main#paper', as: :green_paper + get '/privacy', to: 'main#privacyinfo', as: :privacy_policy + get '/billing/faq', to: 'subscriptions#faq' end # Landing pages diff --git a/public/503.html b/public/503.html index ac5afd2d..26c49cf6 100644 --- a/public/503.html +++ b/public/503.html @@ -2,7 +2,7 @@ -