Novelize is a full-stack application created for writers in the process of drafting a novel. It was created to solve the problem of juggling multiple documents containing prose, character profiles, plot outlines, research notes, and worldbuilding systems.
Novelize is a free, easy-to-use program with a clean and modern UI.
To test out the application, visit the link below. You can create your own account or use the test demo account:
- Email: user@test.com
- Password: password
If you choose to use the test demo account, please be respectful about the data that is preloaded.
https://novel-ize.herokuapp.com/
Novelize uses the following technologies:
- MySQL (using JawsDB as an online host)
- Express
- React
- Node
- Passport
- Heroku
- First, users must create an account.
- Upon first login, users will be prompted to add a new story to their account.
- They will then be able to open the main editing environment, or quick-jump to edit charaters, notes, plotlines, or worldbuilding items.
- Users are able to delete any of these items from their account.
-
Home
-
Login or Register
-
User Dashboard
-
Main Editor
-
Character Edit
-
Plot Edit
-
Worldbuilding Edit
-
Notes Edit
- Novelize utilizes React's stateful components and database calls to automatically update and save the user's writing.
- Express hosts the site's API routes, and the rest of the pages are routed using the React Router.
- MySQL holds multiple associated tables that tie the user's data to their account.
- The drafting spaces use TinyMCE, an NPM plugin for editing text.
- The front-end design was created using Bootstrap.
Novelize is currently developing the following features:
- Ability to import and export stories and data
- Draft versioning and history
- Reorder plot items in the plot timeline
- Visually display where the user is in their plotline
- Send reminder emails to write
- Allow users to adjust their account settings
- Store session data in a more secure way
- Incorporate Google login as an authentication option
- Full mobile responsiveness
On a more grainy level...
-
Remove comments from client code
-
Refactor client code, as there are a lot of repeat functions
-
Refactor server-side sanitization
-
Avoid mutating objects
-
Remove all the alerts just added as temporary notices for required fields
-
Add visual notice of required title fields
-
Debounce database writes from the client
-
Fix tinymce editor size
-
Adjust positioning of plot point dots (same line as title)
-
Allow users to login or register by hitting enter key
-
Adjust spacing for characters without images (left-align it)
-
Add an autosave indicator
-
Investigate redux as a solution for global data
-
Set up a linting service
-
Move to typescript
-
Add in error handling for all CRUD actions
-
Fix React compile warnings (mostly double ==)