Git Product home page Git Product logo

denotes's Introduction

A fully decentralized note-taking app powered by the Interplanetary File System and the implemented using ThirdWeb.

Unhinged Privacy

The app is fully open source and completely decentralized, meaning none of the data is stored on any database, not even the notes. It only consists of a client-side app. No server or database is involved. You communicate directly with the IPFS.

This means nobody will ever be able to access your notes without the CID. The CID is unique to your note and makes use of content-based addressing. The only way to read your data is with this CID which nobody knows except the creator of the note.

You can even see your notes if you copy the CID provided by this app and paste it into a browser tab (along with a public gateway) as shown below.

These cloudflare-ipfs.com and ipfs.io are known as public gateways and there are many of those. You must only go to https://ipfs.io/ipfs/${cid} to see your data (or some other public gateway).

For a more clear picture of IPFS and content-based addressing, please go through this short blog post.

So where are your CIDs stored in this app?

In the cookies of your browser. Only DeNotes can access these cookies, meaning any other website cannot see them. Your notes data persists through the sessions using cookies so it doesn't just disappear when you close the app.

Won't the CIDs take up too much space in the cookies?🍪

They are not stored as plain text. They have been stringified and encrypted using the AES algorithm and a secret key from the environment variables. The app uses it by decrypting the cookie using the same key. So even if the cookies get leaked, nobody can make sense of it without knowing the encryption key. And it takes up slightly less storage this way.

What if I clear the cookies?🍪

Then the CIDs disappear and you will not be able to access your notes. Ever.

That's why a new feature must be implemented for downloading these CIDs as a text file and also a feature for uploading the same text file to be able to read CIDs from it and load the notes. I will code it or you can open a pull request if you do it before me.

Contributions🤝

Apart from the above-stated features, this app obviously has a lot of room for improvement. It's a notes app after all. It can take markdown for the notes, it can take checklists and images, and the possibilities are limitless. Feel free to implement any feature or fix any bug and open pull requests.

Please check this file for more help with contributing.

denotes's People

Stargazers

 avatar  avatar  avatar  avatar

Watchers

 avatar

denotes's Issues

Update Readme

As read me is an important File. There are some typos in the read-me file.I would like to correct it.

Use indexedDB instead of cookies

  • Completely eliminate the usage of cookies and replace it with indexed DB.
  • Uninstall the react-cookies package.
  • Also encryption and decryption not needed anymore as it creates an unnecessary dependency of the users on the environment variable's encryption key. The URIs can be stored in the IndexedDB directly.
  • Uninstall crypto-js and remove the encryption key from the env.

Download and Upload CIDs

  • Create a button for downloading the URIs array as a string in a TXT file.
  • Create another button for uploading a file. It must take a TXT file and try to parse the same array into URIs and render the notes in app.
  • Handle the parsing errors properly and show messages.

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.