Contributor's Guide - AananthV/DeNote GitHub Wiki
What is DeNote?
DeNote is a note taking application built using DerbyJs. It lets you create notes, organise it within a notebook with real time updation and markdown support. What distinguishes this from any other notes application would be the way in which notes are organised into resizable sections (consider them to be parts of a chapter) which are further divided into cells and use key strokes for navigating within a note. The fun part lies in building the application, figuring out how to implement real time sync and write scalable code.
Project Ideas
If you'd like to contribute, a good place to begin is by going through the codebase and fixing bugs or searching through open issues. The following are some ideas which your project can be based upon. Individually they aren't monumental and several of these can be combined to form a singular project. Feel free to explore your own ideas as well. Please take a look at code of conduct before proceeding with the ideas.
Smart Editor
Supporting various formats of text is an important part of a editor and will enrich user experience. The editor currently supports only markdown syntax and has to be modified to support syntax highlighting, various formats like Latex etc, autocomplete syntax and code formatting.
Sketcher
Diagrams / sketches are a frequent occurance while taking notes and hence should be a quick and convinient feature to use. Come up with a scalable and fast way to add sketches to notes and edit them in real time. Option to switch between text and sketch in a cell can be added as well. One example could be using a synchronized sketchpad on your mobile phone to edit / create sketches in the note.
Support for Themes
There's no theme / styling right now and adding it would increase the aesthetic look of the application. Generalise the current stylesheets to allow theming and implement few themes to choose from. Additional features like colour coded notes and sections can be implemented.
Directory
A notebook should be able to hold another notebook in it for well organisation of notes. Implement directory based structure for notebooks.
Hyperlinks and Dictionary
Bookmarking important definitions and parts of the notebook would be very helpful for quick reference. Linking sections between notes within the same notebook can help in avoiding repetition and makes taking notes quicker. Add support to define a certain section of the note as a definition which can be linked to other notes in the notebook. Come up with a new syntax to add a hyperlink within a note.
Contributing Workflow
Fork the repo
To fork the repository you need to have a GitHub account. Once you have an account you can click the fork button up top. Then clone the fork
git clone https://github.com/{username}/DeNote.git
Add a remote
git remote add upstream https://github.com/AananthV/DeNote.git
Create feature branch
git checkout -b {branch_name}
Make changes to the code and Test the changes
After making changes, commit it with meaningful commit messages.
git add [changed_files]
git commit -m {commit_msg}
Push changes to your fork
git push origin {branch_name}
Give pull request
Create a pull request from your feature branch to upstream master.
Code review and Merge
Pull request will be reviewed and merged if everything goes well.
Happy Coding!