Welcome to Notebook.ai!
Notebook.ai is designed to feel like a specialized notebook for of all your worldbuilding ideas.
Start your worldbuilding journey by creating a universe with the button below (or jump straight to the good stuff!).
All of the worldbuildings pages you create can be assigned to a universe, which contains your world.
Once you've created a few worlds, they make it easy to focus on just the world you want to work on!
<%= link_to new_universe_path do %>
<%= Universe.icon %>
add
Create a Universe
<% end %>
<% (@activated_content_types - ['Universe']).each do |type| %>
<%= link_to send("new_#{type.downcase}_path") do %>
<%= content_class_from_name(type).icon %>
add
Create a <%= type %>
<% end %>
<% end %>
The free tier of Notebook.ai was intentionally designed to be enough for most beginner worldbuilders. Your noun trifecta
(people, places, and things) can be created with Character, Location, and Item pages.
For more advanced worlds, the site is supported by an optional Premium subscription that unlocks
<%= pluralize Rails.application.config.content_types[:premium].count, 'other page type' %> for you to use!
<%= link_to customization_content_types_path do %>
add
Browse all page types
<% end %>
Expand
<% if @universe_scope.present? %>
<%= link_to @universe_scope.name, @universe_scope, class: "#{Universe.text_color}" %>
<% else %>
your worlds
<% end %>
<%=
if @content
render partial: 'cards/serendipitous/content_question', locals: {
content: @content,
field: @attribute_field_to_question,
expand_by_default: true,
include_quick_reference: false
}
end
%>
<%= link_to prompts_path do %>
lightbulb_outline
arrow_right
View more prompts
<% if @universe_scope.present? %>
in this universe
<% end %>
<% end %>
<% if @universe_scope.present? || @current_user_content.fetch('Universe', []).count == 1 %>
<% if @current_user_content.except('Universe').values.flatten.any? %>
<%= pluralize @current_user_content.except('Universe').values.flatten.count, 'page' %>
in
<%= @universe_scope.try(:name) || @current_user_content.fetch('Universe').first.name %>
<%= link_to({ universe: 'all' }, class: 'right grey-text') do %>
See all universes instead
arrow_right
<% end %>
<% @current_user_content.except('Universe').values.flatten.sort_by { |p| p.name.downcase }.each do |content_page| %>
<%= link_to send("edit_#{content_page.page_type.downcase}_path", content_page.id) do %>
<%= image_tag content_page.random_image_including_private, style: 'height: 245px' %>
<%= content_page.icon %>
<%= content_page.name %>
<% end %>
<% end %>
<% end %>
<% else %>
<%
accessible_universes = (@current_user_content.fetch('Universe', []) + current_user.contributable_universes).uniq(&:id)
if accessible_universes.count > 1
%>
Focus on one universe at a time
<%= render partial: 'notice_dismissal/messages/16' %>
<% accessible_universes.sort_by { |u| u.name.downcase }.each do |universe| %>
<%= link_to "?universe=#{universe.id}" do %>
<%= image_tag universe.random_image_including_private, style: 'height: 162px' %>
<%= universe.name %>
<% end %>
<% end %>
<% end %>
<% end %>
<% end %>
<%= render partial: 'notice_dismissal/messages/20' if show_notice?(id: 20) %>
<% if @recently_edited_pages.any? %>
Pick up where you left off
<% if @recently_edited_pages.count > 5 %>
<%= link_to 'view more', '#', class: 'sidenav-trigger right', data: { target: 'recent-edits-sidenav' } %>
<% end %>
<% end %>
Create something new
<% @activated_content_types.sample(3).each do |type| %>
<% klass = content_class_from_name(type) %>
<%= link_to send("new_#{type.downcase}_path"), class: "white-text", style: 'width: 100%' do %>
<%= klass.icon %>
New
<%= type %>
You've created
<%= pluralize @current_user_content.fetch(type, []).count, type.downcase %>
<% if @universe_scope %>
in this universe
<% end %>
<% end %>
<% end %>
Join discussions
<% @most_recent_threads.each do |topic| %>
<%= link_to topic, class: "white-text", style: 'width: 100%' do %>
forum
<%= topic.title %>
<%= pluralize topic.posts.count, 'post' %>
in <%= topic.messageboard.name %>
<% end %>
<% end %>
<%= link_to 'see all', thredded_path, class: 'right' %>