Notebook pad-pad.net



    I present to your attention the web service note-pad.net , designed to replace a simple paper notebook. I tried to make it so that I could just open the site, record something and close it. My notebook consists of a large text field on the entire screen and a column of buttons on the right, designed for turning pages.

    There are a total of 36 pages in the notebook; you cannot add or delete them. If you need more pages, you can create several notebooks. Everything is as in life.

    Initially, the site had a minimum of options, but in two years it acquired good functionality: autosave, encryption in the browser, downloading notepad as a file, hot keys, following links from the notepad, sorting pages by dragging and dropping, searching, and flexible appearance settings. However, this does not complicate the use of notepad.



    In this article I will try to talk about the development of the service and its technical features.

    Editor

    The heart of the service is the text editor. It would seem that here is complicated? At the click of a button, we send the text to the server, that's all.



    In fact, everything is more complicated. After the user clicked “Save”, he can continue to print the text. As a result, when the response comes from the server, the text in the field will already be unsaved. This complexity is superimposed on autosave, page navigation, user attempts to leave the site or close the tab. Great efforts should be made to ensure that unsaved text is not going anywhere, and that the wrong text does not overwrite the correct one.

    Indication of the status “saved / not saved”, as well as the process of exchanging data with the server also has nuances. On the one hand, the indication should always be in sight so that the user knows whether the text is saved or not. On the other hand, with autosave on, this indication often blinks and distracts from text editing. In the current implementation, when autosave is enabled, by default, the indication is not shown. To view the current status, you can hover over the save button or press the key combination corresponding to the save. In case of problems with the connection, the site notifies the user that auto-save is not possible and that he needs to take care of the text safety himself.

    Authorization and registration



    Initially, there was no authorization on the site. Each notebook had a unique link with a secret code. To access the notebook, it was enough to open this link. There is such an opportunity now. When the user first visits the site, clicks the "Create Notepad" button, a notepad is created with access via the link. Due to this, there is no need for authorization to use the service.

    Then, the Loginza widget appeared on the site, allowing you to log in using your account on one of the popular sites or using OpenID. When I implemented this method, it seemed to me that this is quite enough. However, after a while complaints from users rained down: the proposed method was unusual and uncomfortable. There were both psychological and constructive problems. For example, Yandex will by default offer to remember access permission, so that after the first login Yandex no longer has any questions. Logging in is really easy, but logging out is not very. When you exit the account on the site, the user remains logged in to Yandex and can re-enter the site in two clicks, which reduces data security. And authorization using a different Yandex account becomes a non-trivial task: You need to go to Yandex directly and log in. Users are used to the fact that authorization on one site does not affect authorization on another, and this behavior seems to them unobvious.

    For me personally, OpenID is very convenient, but at some point I was tired of tormenting users and I still realized a warm tube registration with a username and password. Oddly enough, for users this is the most convenient option.

    Each authorized user can create several notebooks and set a name for each of them. Notepads that have become unnecessary can be deleted. Each notebook can be customized:



    Encryption

    I added encryption recently. I know that paranoids read me (I hope they weren’t very scared by this phrase), and this feature is designed specifically for them. Encryption works according to the AES algorithm, the Crypto-JS library is used. The user password is not transmitted to the server at all, and the text is transmitted only in encrypted form.

    Other functions

    You can configure hotkeys corresponding to saving, turning pages, following the link under the cursor. In addition, you can follow the link by clicking on the link with Ctrl pressed. This allows you to use notepad as a bookmark storage.

    You can adjust the colors of all interface elements, turn off the display of icons and page numbers.

    The user can search for text on their notebooks.

    The server makes daily backup of data on Amazon S3, which significantly reduces the likelihood of accidental data loss. You can also take care of the safety of your notebook: there is an easy way to download the entire notebook as a text file.

    API

    The browser communicates with the server using a simple JSON-based API. In the help section of the site there is a description of the API methods. So enthusiasts can integrate the site with anything. True, some methods for full functionality are still lacking there, but if there are enthusiasts, we will fix it.

    Development

    I did the site alone. The first working version appeared in March 2010 and was a simple PHP script added to the page of my main site.

    The main driving force for the development was the fact that I used the site myself. There were few users (and even now there are few of them). A year later, I gathered my strength and rewrote the client part, introducing a little order into the chaos that settled there. Then I created a project on Reformal for user feedback. They told me a few things that the service lacked.

    And last month I gathered my strength and rewrote the server side using Ruby on Rails. Still, adding new features to the PHP code two years ago, which you look at once a month, is very difficult. By the way, the server side is very simple, it took me only one day to completely rewrite it.

    And finally, my notebook has grown to a level at which it is not a shame to show it to the habrasociety. I hope that the discussion in the comments will be fruitful, the number of users of the site will replenish, and my work will make sense.

    I have no plans for monetization yet. I do not want to add advertising. I don’t really want to do part of the paid functionality either. But if attendance increases and hosting costs increase, you have to come up with something.

    In the future, it is planned to implement the following functions:
    • Mobile version of the site.
    • English version.
    • Versioning the text, the ability to roll back to the previous version.
    • Work offline.
    • Sending backups by email.
    That’s all for me. Enjoy using the online notebook.

    Also popular now: