Code Monkey home page Code Monkey logo

indentlabs / notebook Goto Github PK

View Code? Open in Web Editor NEW
346.0 19.0 71.0 142.27 MB

Notebook.ai is a set of tools for writers, game designers, and roleplayers to create magnificent universes – and everything within them.

Home Page: http://www.notebook.ai

License: MIT License

Ruby 45.63% JavaScript 6.96% CoffeeScript 0.03% CSS 0.12% HTML 45.60% Dockerfile 0.10% SCSS 1.56% Procfile 0.01%
worldbuilding writing-application writing-software writing-tool

notebook's Introduction

Notebook.ai

<img src=“https://codeclimate.com/github/indentlabs/notebook/badges/gpa.svg” /> <img src=“https://codeclimate.com/github/indentlabs/notebook/badges/coverage.svg” /> <img src=“http://inch-ci.org/github/indentlabs/notebook.svg?branch=master” alt=“Inline docs” />

What is Notebook.ai?

see live website

notebook is a set of tools for writers and roleplayers to create magnificent universes – and everything within them.

From a simple interface in your browser, on your phone, or on your tablet, you can do everything you’d ever want to do while creating your own little (or big!) world.

notebook is a writer’s planning tool for creating anything from universes to characters, to plots, to individual items.

It is also meant to expand into many areas to benefit writers (and exciting to developers), including areas like:

  • Automated revision services

  • Structuring real-time natural language processing output into a semantically reusable state

  • Decision-making algorithms for improving reading comprehension, reading level, accent-correction, and other real-time writing suggestions

  • A knowledge graph of structured data in your universe, and an engine to manipulate it in awesome ways

  • Machine learning on generating character and location names, suggesting realistic defaults (random or not), and more

  • and tons more

The Issue Tracker

If you are interested in helping out, check out the issue tracker. I’ve loaded it with tons of action-based, chunk-sized improvements that I think anyone familiar with Rails will be able to jump in and complete. Feel free to make suggestions, open issues, join discussions, or ask where you should look in the code to get started implementing something. :)

You’ll notice there are *a lot* of issues in *a lot* of milestones. Call it feature creep, but I’ve separated every potential idea for full-fledged services into milestones that can be worked on completely independently of others. The features are (for the most part) has no deadlines and are in development simultaneously, meaning if you see a feature you would really like to use, you can make that feature happen by jumping directly into it and completing its issues.

TL;DR Milestones are independent of each other – work on whatever you want to see made!

Installing the notebook development stack locally

Please see the installation Guide in the wiki for setup instructions.

Testing

To run the tests, run ‘rails test` or `rails test path/to/test.rb`.

Deployment to notebook.ai

Deployment to the live production servers at www.Notebook.ai will only be done by approved developers, and consists of a deployment of

  • deploy github to staging (done only by approved developers)

  • mirror data from live into staging

  • run regression tests on staging environment

  • deploy from staging to live (viewed at notebook.ai)

Thanks

Feel free to get in touch if you have any questions, comments, or concerns! :)

© Andrew Brown 2016

notebook's People

Contributors

ahmadsaleem avatar amymartika avatar andrewcarreiro avatar ashleysullins avatar babu-thomas avatar cantido avatar cherez avatar dependabot-preview[bot] avatar dependabot[bot] avatar dp-wes avatar drusepth avatar euank avatar heydonovan avatar joelmichael avatar jorgeandd avatar mpigsley avatar mwerner avatar sethfalco avatar sn31 avatar tristanil avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

notebook's Issues

Serendipitous cards are displayed for content you don't own

I was viewing another user's Location, while I was logged-in, and the Serendipitous card was on the same page prompting me for some info on that area. I'm assuming that the card should not be displayed at all if you do not have write access to that model.

Payment system

Notebook needs a way to take payments, probably using Stripe? I'm not terribly familiar with setting this up, but it'll be needed for user accounts eventually.

Collaboration improvements (collaboration v2)

Collaborators should be able to make changes within a universe just like the owner can, with the exception of adding/removing collaborators, deleting the universe, and other actions.

Owner actions:

  • Everything currently supported on content, plus
  • Adding users by email address as "collaborators" to a universe
  • Viewing all collaborators in a universe
  • Removing any collaborator from a universe

Collaborator actions (for content in a universe they've been added as a collaborator to):

  • Are able to add and edit content within a universe as if they had the same subscription level as the universe owner
    • e.g. a Premium user can add non-Premium users to a universe, and those non-Premium users have unrestricted access to create anything they want within that universe
  • Are not able to delete content within a universe
  • Are not able to modify content privacy settings within a universe

Dependent tasks:

  • Send an email to users with a link to the universe when they are added as a collaborator
  • Keep track of who changed what on what content and display it on that content's page, #57
  • If a user is invited to collaborate on a universe without an existing account, they should be sent an invitation

Goofy grammar in Serendipitous cards

This is partly the gem's fault, but we can make it a little better in the app's localization. We can at least define an activerecord block in the en.yml file to give human names to fields like identmarks.

The pluralization thing is probably the gem's responsibility.

image

Content hovercards

Hovering over any content name (characters, locations, items) should pop up a detailed hovercard with information about that content at a glance, rather than having to click through and see things like name/description and other popular fields.

Users should be able to upload images to content

We should implement image uploads with S3 as a concern we can include on any content type, so users can upload as many images as they'd like to any content they own.

In terms of filesize limits, lets start out by not limiting individual images, but giving each user up to 30MB of usable upload space they can spend uploading images to any content.

After uploading an image, users should be able to browse thumbnails of all images uploaded to their content (from a gallery tab on that content), as well as

  • expand images to a full-screen view
  • delete images from S3 (and free up user upload space)

Plan Turret Defense Games

An experiment with super-niche structured planning from the Imaginarium, this add-on can help you plan out play for a turret defense game, what turrets will be available, their costs and effects, what enemies you'll see at what level, what maps look like, etc.

Plan Startups

Probably a little overlap with #22, but this can focus more on realistic startups, cash flow, capital, invements, user acquisition, etc etc. Basically all the planning for a startup that would otherwise go into a notebook, but now it goes in notebook.

Field value suggester

This is the first of several "generators" to help authors come up with the perfect value for a field while planning. Clicking on some generator icon next to a character's "Name" field should pop up a wizard that allows them to perform some actions, and ultimately either generate a name they like and press OK to add it to the name field, or press cancel to exit the modal with no changes to the name field.

For character names, we should:

  • Allow users to generate random first names and last names, separately (e.g. re-generate last name without wiping first name)
  • Allow users to specify genre/timeframe/etc filters to limit names to a particular field when generating (e.g. only british names, or only scifi names, or only male names, etc)
  • When a user has decided on a name, e.g. "James Bond", we should show them some basic stats on popular characters/figures with that name, if any (e.g. "James Bond is a spy in the popular series James Bond) so they know what connections many readers may draw when seeing the name
  • When a user has decided on a name, e.g. "Tristan Baldwin", we should show stats on the first and last name popularity in the real world, to give them a sense of 1) how popular each part of their name is, and 2) in which countries it's more/less popular

More info: https://www.standoutbooks.com/definitive-guide-naming-characters/

Let's just do this one generator/wizard for now and see how well it is received, but I could see similar in-depth wizards for a lot of fields in the future to help out writers that want a little help fleshing out particular aspects of their ideas.

Plan Plots

Tools necessary for an author to plan out a plot; things like character arcs, conflict and resolution, timelines, location tracking of characters, there is a lot of cool graphics/graphs/interactive stuff to be done here.

See https://github.com/drusepth/Indent/milestone/22

Field autocomplete

Field autocomplete (for things like eye/hair color, item types, etc) is in place except has a few UI bugs (and therefore is disabled):

  • The autocomplete dropdown should float on top of other elements on the page, not push them down
  • Tabbing out of a field (or clicking out of it -- basically any blur of the field) with an autocomplete dropdown visible should hide that dropdown, rather than leave it up

Plan Groups

Should cover planning businesses, governments, activist groups, etc. Basically any large grouping of (named or non) characters.

The Hero's Journey plot wizard

Now that people have content in the Notebook, we should give a Notebook-powered app a shot.

This plot wizard should guide users through Campbell's Hero's Journey pattern, letting authors specify which characters/locations/items are relevant at each point in the journey and give a short description of what drives the plot forward at that point.

We can probably output this all in a nice outline format in the notebook (complete with descriptions and characters/locations/items). Extra bonus if authors can hover over content (#7) and see more info without clicking through.

Example of cycle (start at 12:00 and move clockwise):
heros-journey

Android App

I'm not sure people will want to write a ton of freeform text on mobile, but at the very least we should offer an app that caches their content offline and provides an easy way to refer to any content and/or add details to anything.

Should probably do the same online/offline syncing we do in #82 as well.

Redesign user signup

User signup is currently free, and should stay free. However, the "new" free should be a marked-off price to free from whatever we deem a "Notebook" should cost.

We don't need to implement #35 for this, just redesign the user signup to show people that accounts will eventually cost money on sign-up, and that anyone that signs up in the meantime will have a free-forever membership.

Data exporter

We can pretty easily export content in JSON/XML, but I'm not sure how useful that'd be. We should look into popular formats (Scrivener, others?) and more user-friendly formats (some outline format would be nice) and figure out at least one format to let users export their content to, both for their peace of mind and for opening up integrations with other software.

Content API

We should add an auth token column to users and assign everyone a random token that allows them to authenticate over an API to fetch their content.

  • Add auth token to users
  • Generate random tokens for all existing users
  • Set randomized tokens on user creation
  • Add API endpoints for universes, characters, locations, and items that return each by ID, requiring the owner's auth token if they are private
  • Add API endpoints to list a user's content (universes/characters/locations/items) ids+names+descriptions, serving back all content if their auth token is passed, and only their private content otherwise.

This API would go a long way to developing apps on top of the notebook, like #54

Web-IRC mirror for #nanowrimo chatroom

We should probably host a client-side IRC client mirror (probably mibbit?) for connecting to the official #nanowrimo chatroom.

For October and September, we should stick an unobtrusive message in the sidebar with a link to the room (opening in a new window) for users participating in nanowrimo.

Plan Worlds/Planets

Lets get some discussion going on the best way to do this. Gotta show sci-fi bros some love.

Feedback:

Hello, would you please at a "planet" section? This would allow users to separate locations, (cities, oceans, etc.) from planets in the menu. It would save us a lot of time, confusion, and help with organization.

Users have no profile page

I've realized that there is no user_path(@username) method, because there isn't a profile page for users at all. I'm unable to link authors on content pages for #12 since users don't have a URL to identify them with.

@drusepth Is this intentional?

Each piece of content should have an edit history

Whenever anything changes on a piece of content, we should create some kind of EditedContentEvent that tracks what changes were made, by whom, and when. That way, we can also have an "edit history" page for content that lets users see who made changes (especially when universes can have multiple collaborators, #25), and be able to revert undesirable/mistaken changes more easily.

Universe should have RULES

A lot of people have been asking for more ways to add global information about their universe, such as describing the laws of physics, explaining their magic system, adding laws, technologies, etc.

We should probably add a Rules tab to universes and include some of these and others.

Plan Races

Users should be able to plan races (e.g. Orcs, Klingons, Elves, etc) and have a space to describe their unique features, culture, beliefs, etc.

We should swap out the Character's race field with a link to Races, and list all characters of that race from that race's notebook page. Need to figure out a way to properly do this without wiping the content everyone has already written in the race field, though. Maybe create an actual Race object for each race they've entered, and link it? Could be a lengthy migration, so we might need to figure out zero downtime deployments before releasing this.

Also, we should probably autopopulate a default "Human" race for everyone that's selected by default on new content so they don't have to select it every time, but can choose something else for characters that aren't human.

Desktop app (Windows)

Lots of people are asking for an offline version, which we should eventually support. I've always wanted to make a slick Metro app, perhaps this could be it.

Even though it's offline, I think we should figure out a good way to integrate with #55 so an offline copy of their notebook is always available, and any changes made while online sync back to the notebook, and any changes made while offline sync back as soon as they come back online.

Family tree visualizer/editor

With structured relations between characters, we should also have a way to visualize families in a family tree view. The easiest way to implement this would be a read-only view, but it'd be great if there were some way to actually edit those relationships as well. I have no idea what the UI would look like though. Thoughts?

Universe Explorer

  • Add a "Public and Shared" option to universe privacy
  • Add a Universe Explorer part of the site, where public-and-shared universes are listed and easily discoverable for everyone

Eventually add filters and images and rich experiences to make it not just a text list.

Pitch as a way to show off your universes, but also find universes to contribute to.

Changes made with Serendipitious are not saved

Not sure if this is a bug in Notebook's configuration, or in Serendipitous, but I entered some data into the card and clicked save, and nothing happened. I reloaded the page, and the data I entered was not saved.

(Chrome 53.0.2785.116 (64-bit) on Linux Mint)

Content is not sharable

Characters have a "Share this character" option in their drop-down menu, but it doesn't work. Currently, you can only share content by making the universe public. Make the "Share this character" link work.

Universes should be archiveable

If you're not working with a universe much anymore and don't want to receive serendipitous cards, have content in content-link dropdowns, etc, you should be able to archive that universe without deleting it, so you can always reach it when you want to, but it's out of the way when you don't.

Public content should have a comment/question wall

Visitors viewing any public content should have the capability to add a comment or ask a question, and content owners can respond to any of the above with answers or comments back.

Should probably decide whether to focus on questions or comments and pick one, since you can use either to do either.

Should probably also:

  • Allow viewers to leave an email address attached to their comment, where they'll receive an email upon any response

Zero downtime deployment

Right now we have potentially a few seconds of downtime whenever we deploy to production, and potentially longer pending any database migrations.

Since so much content can be submitted in a single form (e.g. filling out an entire character's profile), we should figure out how to either mitigate this issue (e.g. preserving the user's form content and asking them to submit again) or figure how to do zero downtime deployment (preferably without a complicated, expensive architecture).

Plan Religion

Should support outlining beliefs, various groups' interpretations of those beliefs, how those beliefs have changes and had effects over time, and provide a centralized place for lore, photos, and artifacts about various dieties.

Plan Creatures

Should cover planning monsters, animals, mythological creatures, and other living things that aren't necessarily "characters".

Plan Magic

Should be able to plan a slew of magical spells, artifacts, locations, side-effects, etc.

Plan Mysteries

Detail background information, what order facts are revealed in, links between information, the big reveal, and everything else about procedural mysteries.

Should probably also handle trials.

Update Character sidebar has incorrect grammar

I have a test character named "character," and on the home screen I got this prompt:

image

I'm guessing this is supposed to say "What are character's prejudices?"

P.S. This is a really neat feature, I didn't know the site had this!

Uptime report

I bet there's some free heroku add-on that reports app uptime. We should probably throw up a status page with uptime reports to show users their data is always readily available when inspiration hits.

Generate a Sitemap

I tried adding a sitemap in #12, but found that in order to have one automatically generated and hosted on Heroku, we would need to host the sitemap externally, sine Heroku doesn't allow you to modify its project directory after deployment. That would require us to get S3 up and running again, and we just don't feel like doing that at the moment.

To actually add the sitemap generation code, just add back what we removed in aa83c3a.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.