PageVault is a web application inspired by Evernote built using Ruby on Rails and React.js. PageVault allows users to:
- Create an account
- Log in / Log out
- Create, read, edit, and delete notes
- Organize notes within Notebooks
- Tag notes with multiple tags and search notes by tag
- Search through notes for blocks of text
- Apply complex styling to notes while editing, including inserting inline images
- Share notes with other users giving them read or read/write access
In Phase 1, I will begin by implementing user registration and authentication (using BCrypt). Next I will build out the JSON API for the Notes model. Last I will create a simple landing page with a container for the app's root React component and do some basic styling.
During Phase 2 I will implement my Flux setup as well as the React Router and
view structure. I will implement a Note store class to manage the client side
data, and the requisite action to implement CRUD functionality via the JSON API.
I will also create a Selected store class to manage the transfer of information
from the index to the main view component. Lastly I will create React components
for the NoteIndex
, NoteIndexItem
and NoteForm
objects. When this phase
is over Notes can be created edited and deleted in the browser, and will be
persisted to the database when the editor is left idle. I will also style for
structure and visibility, add a logo and a few icons.
In Phase 3 I will add the Notebooks, Tags and Taggings models to the JSON API and create the React components to interact with them. Notes belong to a Notebook. The Notebook index view will show the NoteIndex for each notebook when selected, sliding over the Note form. Notes can be tagged with multiple non-heirarchical tags. I will create the search box React component which will allow for searching of Notes by tag and text. Once this is done, I will implement fuzzy search.
Using tinymce, allow for complex styling of notes. Using paperclip and S3, allow for image uploads, and embedding of images in note text.
In Phase 5 I will add the ability to share Notes and Notebooks with other users. Notes and Notebooks that are shared can be shared with read only or read/write access. Other users can be searched by username or email.
In Phase 6 I will prettify all of the things and fix any remaining styling issues. I will create seed data. I will also convert some of my React views to modal overlay forms.
- Client-side note encryption
- Prettify transitions
- Simultaneous Editing
- Reminders
- Changelogs for Notes
- Pagination / infinite scroll for Notes Index
- Multiple sessions