mirror of
https://github.com/indentlabs/notebook.git
synced 2025-10-26 11:19:22 +00:00
Merge branch 'master' into tailwind-redesign
This commit is contained in:
commit
34628823fb
14
Gemfile.lock
14
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)
|
||||
|
||||
@ -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
|
||||
|
||||
7
app/helpers/marketing_helper.rb
Normal file
7
app/helpers/marketing_helper.rb
Normal file
@ -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
|
||||
@ -19,6 +19,10 @@ class Footer extends React.Component {
|
||||
<a href="https://github.com/indentlabs/notebook" target="_blank">
|
||||
<i className="fa fa-github black-text"></i> GitHub
|
||||
</a>
|
||||
·
|
||||
<a href="https://discord.gg/7WCuGxY3AW" target="_blank">
|
||||
<i className="fa fa-comments blue-text"></i> Discord
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
285
app/views/subscriptions/faq.html.erb
Normal file
285
app/views/subscriptions/faq.html.erb
Normal file
@ -0,0 +1,285 @@
|
||||
<h1 class="flow-text grey-text">Frequently-asked questions about billing on Notebook.ai</h1>
|
||||
|
||||
<ul class="collapsible">
|
||||
<li class="active">
|
||||
<div class="collapsible-header">
|
||||
<i class="material-icons">help</i>
|
||||
What is Notebook.ai Premium?
|
||||
</div>
|
||||
<div class="collapsible-body">
|
||||
<p>
|
||||
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) %>.
|
||||
</p>
|
||||
<p>
|
||||
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:
|
||||
</p>
|
||||
<p>
|
||||
<% 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.
|
||||
</p>
|
||||
<p>
|
||||
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.
|
||||
</p>
|
||||
</div>
|
||||
</li>
|
||||
<li>
|
||||
<div class="collapsible-header">
|
||||
<i class="material-icons">help</i>
|
||||
What price tiers are available?
|
||||
</div>
|
||||
<div class="collapsible-body">
|
||||
<p>
|
||||
There are two account tiers on Notebook.ai: Starter and Premium.
|
||||
</p>
|
||||
<p>
|
||||
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.
|
||||
</p>
|
||||
<p>
|
||||
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:
|
||||
</p>
|
||||
<ul class="browser-default">
|
||||
<li>$9 per month, paid every month</li>
|
||||
<li>$8 per month, paid every three months ($24 at a time)</li>
|
||||
<li>$7 per month, paid once per year ($84 at a time)</li>
|
||||
</ul>
|
||||
</div>
|
||||
</li>
|
||||
<li>
|
||||
<div class="collapsible-header">
|
||||
<i class="material-icons">help</i>
|
||||
When do subscriptions renew?
|
||||
</div>
|
||||
<div class="collapsible-body">
|
||||
<p>
|
||||
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.
|
||||
</p>
|
||||
</div>
|
||||
</li>
|
||||
<li>
|
||||
<div class="collapsible-header">
|
||||
<i class="material-icons">help</i>
|
||||
What is your cancellation policy?
|
||||
</div>
|
||||
<div class="collapsible-body">
|
||||
<p>
|
||||
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.
|
||||
</p>
|
||||
</div>
|
||||
</li>
|
||||
<li>
|
||||
<div class="collapsible-header">
|
||||
<i class="material-icons">help</i>
|
||||
How do I cancel my subscription?
|
||||
</div>
|
||||
<div class="collapsible-body">
|
||||
<p>
|
||||
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.
|
||||
</p>
|
||||
</div>
|
||||
</li>
|
||||
<li>
|
||||
<div class="collapsible-header">
|
||||
<i class="material-icons">help</i>
|
||||
What happens to my notebook pages when I cancel my subscription?
|
||||
</div>
|
||||
<div class="collapsible-body">
|
||||
<p>
|
||||
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.
|
||||
</p>
|
||||
<p>
|
||||
While on the free Starter tier, you simply cannot create <em>additional</em>
|
||||
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.
|
||||
</p>
|
||||
</div>
|
||||
</li>
|
||||
<li>
|
||||
<div class="collapsible-header">
|
||||
<i class="material-icons">help</i>
|
||||
How do I purchase Premium without a subscription?
|
||||
</div>
|
||||
<div class="collapsible-body">
|
||||
<p>
|
||||
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.
|
||||
</p>
|
||||
<p>
|
||||
To pay for Premium without a subscription, you'll need to purchase and activate a
|
||||
Premium Code <%= link_to 'here', prepay_path %>.
|
||||
</p>
|
||||
</div>
|
||||
</li>
|
||||
<li>
|
||||
<div class="collapsible-header">
|
||||
<i class="material-icons">help</i>
|
||||
What are Premium Codes?
|
||||
</div>
|
||||
<div class="collapsible-body">
|
||||
<p>
|
||||
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.
|
||||
</p>
|
||||
<p>
|
||||
Premium Codes are available for purchase <%= link_to 'here', prepay_path %>.
|
||||
</p>
|
||||
</div>
|
||||
</li>
|
||||
<li>
|
||||
<div class="collapsible-header">
|
||||
<i class="material-icons">help</i>
|
||||
How do I pay with Paypal?
|
||||
</div>
|
||||
<div class="collapsible-body">
|
||||
<p>
|
||||
Right now, we don't accept Paypal payments for the standard Premium subscription.
|
||||
</p>
|
||||
<p>
|
||||
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 %>.
|
||||
</p>
|
||||
</div>
|
||||
</li>
|
||||
<li>
|
||||
<div class="collapsible-header">
|
||||
<i class="material-icons">help</i>
|
||||
How can I purchase Premium for a friend?
|
||||
</div>
|
||||
<div class="collapsible-body">
|
||||
<p>
|
||||
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.
|
||||
</p>
|
||||
</div>
|
||||
</li>
|
||||
<li>
|
||||
<div class="collapsible-header">
|
||||
<i class="material-icons">help</i>
|
||||
How can I share my Premium access with my collaborators?
|
||||
</div>
|
||||
<div class="collapsible-body">
|
||||
<p>
|
||||
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.
|
||||
</p>
|
||||
</div>
|
||||
</li>
|
||||
<li>
|
||||
<div class="collapsible-header">
|
||||
<i class="material-icons">help</i>
|
||||
How can I change or remove my payment information?
|
||||
</div>
|
||||
<div class="collapsible-body">
|
||||
<p>
|
||||
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.
|
||||
</p>
|
||||
<p>
|
||||
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.
|
||||
</p>
|
||||
<p>
|
||||
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.
|
||||
</p>
|
||||
</div>
|
||||
</li>
|
||||
<li>
|
||||
<div class="collapsible-header">
|
||||
<i class="material-icons">help</i>
|
||||
How do I request a refund?
|
||||
</div>
|
||||
<div class="collapsible-body">
|
||||
<p>
|
||||
Please reach out to me directly at andrew<em></em>@inde<span></span>ntlabs.com.
|
||||
</p>
|
||||
</div>
|
||||
</li>
|
||||
<li>
|
||||
<div class="collapsible-header">
|
||||
<i class="material-icons">help</i>
|
||||
How can I download my entire notebook?
|
||||
</div>
|
||||
<div class="collapsible-body">
|
||||
<p>
|
||||
Notebook.ai supports data exports in CSV, JSON, XML, YAML, and plaintext formats.
|
||||
</p>
|
||||
<p>
|
||||
To export your notebook, just click "Export your data" in the
|
||||
<%= link_to 'Data Vault', data_vault_path %> and select the format you want.
|
||||
</p>
|
||||
</div>
|
||||
</li>
|
||||
<li>
|
||||
<div class="collapsible-header">
|
||||
<i class="material-icons">help</i>
|
||||
Am I allowed to just use a free Notebook.ai account forever?
|
||||
</div>
|
||||
<div class="collapsible-body">
|
||||
<p>Of course! :)</p>
|
||||
<p>
|
||||
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.
|
||||
</p>
|
||||
<p>
|
||||
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. <span class="red-text">♥</span>
|
||||
</p>
|
||||
</div>
|
||||
</li>
|
||||
</ul>
|
||||
|
||||
<h2 class="flow-text grey-text">Have a question that wasn't answered here?</h2>
|
||||
<p>
|
||||
Feel free to reach out to me any time at andrew<em></em>@inde<span></span>ntlabs.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!
|
||||
</p>
|
||||
@ -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 %>
|
||||
</p>
|
||||
|
||||
@ -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
|
||||
|
||||
@ -2,7 +2,7 @@
|
||||
<html>
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<title>Notebook | Server Error</title>
|
||||
<title>Maintenance Mode</title>
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0"/>
|
||||
<link rel="icon" href="/favicon.ico" />
|
||||
|
||||
@ -58,7 +58,7 @@
|
||||
}
|
||||
|
||||
.error {
|
||||
font-size: 9rem;
|
||||
font-size: 6rem;
|
||||
font-weight: bold;
|
||||
padding: 0 4rem;
|
||||
border-right: 1px solid #707980;
|
||||
@ -82,6 +82,13 @@
|
||||
margin-bottom: 1rem;
|
||||
}
|
||||
|
||||
.maintenance-description {
|
||||
color: #707980;
|
||||
font-weight: 100;
|
||||
font-size: 1.2rem;
|
||||
margin-bottom: 1rem;
|
||||
}
|
||||
|
||||
a {
|
||||
display: inline-block;
|
||||
padding: 0.7rem 2rem;
|
||||
@ -131,14 +138,24 @@
|
||||
<img class="logo" src="/notebook-logo-name.png"/>
|
||||
<img class="mark" src="/notebook-logo.png"/>
|
||||
<div class="flex-container">
|
||||
<div class="error">503</div>
|
||||
<div class="error">
|
||||
Maintenance
|
||||
</div>
|
||||
<div class="error-action">
|
||||
<div class="page-error">
|
||||
We'll be right back
|
||||
</div>
|
||||
<div class="page-error-description">
|
||||
We're working on servers under scheduled maintenance and will be back shortly. <br />
|
||||
Thank you for your patience!
|
||||
We're updating the servers to prepare for National Novel Writing Month<br />
|
||||
and will be back shortly. Thank you for your patience!
|
||||
</div>
|
||||
<div class="maintenance-description">
|
||||
Expected maintenance window: <strong>9:20pm PST — 10:00pm PST</strong>
|
||||
</div>
|
||||
<div class="maintenance-follow">
|
||||
<a href="https://www.twitter.com/@IndentLabs">
|
||||
Follow @IndentLabs on Twitter for the latest updates
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
Loading…
Reference in New Issue
Block a user