GithubHelp home page GithubHelp logo

quolpr / harika Goto Github PK

View Code? Open in Web Editor NEW
135.0 1.0 3.0 6.56 MB

Offline-, mobile-first graph note-taking app focused on performance with the knowledgebase of any scale

Home Page: https://app-dev.harika.io

License: GNU Affero General Public License v3.0

TypeScript 96.21% JavaScript 0.83% CSS 1.06% HTML 0.32% Shell 0.24% PEG.js 0.94% Dockerfile 0.40%
graph knowledge-graph knowledge-base local-first performant mobile-friendly scalable offline database roamresearch

harika's Introduction

Harika [development is paused]

Harika is an offline-first, performance-focused note taking app for organizing your knowledge database.

out.mp4

Right now the project development is paused, but Harika somehow is still ready to use product. This features are ready to use:

  1. Synchronization with server. It's done with LWW CRDT per field on top of SQLite. It also stores all changes locally and sends them to server. Server also store all the changes and recalculate snapshots on new received changes and send those snapshots back to the client. Due to we store all the changes at server, it is also planned to add time travel, when CRDT is not what user expect at some cases.
  2. Offline mode, with sync when back only
  3. Attachment uploading (just paste file into block)
  4. Referencing, back-referencing
  5. Full text search
  6. Mobile support
  7. Markdown like styling
  8. Daily notes
  9. Notes tree and the left bar

It's a good project to discover how to make offline-first synchronization mechanism. You can run Harika locally(just run docker-compose -f docker-compose.local.yml up --build), and discover in DevTools logs what SQL queries it makes to store data and changes to send to the server.

Status of the project

As for the 14.08.22, I managed to pause my work on Harika.

There are multiple reasons why did it happen. The main one is that I don't have enough resources to maintain the project. Finally, it's hard for me to keep working both on a full-time job, and on Harika(which I can say that it is another full-time job). Then, I also joined Remnote. I want to bring all the experience to the company, and make their product better.

But, one day I want to resume work on Harika when I will have enough money to take 1-2 years off. I need a product that will match only my needs, that matches my soul.

Key features

  • Offline first — use it with your mobile or desktop, and see changes on the fly; even when you are offline, it all got synced when you will get online back.
  • Scalable — notes are loading on-demand, so it doesn't matter how large your knowledge base will be.
  • Instant startup time — no matter how extensive your database is.
  • Mobile support — you will have the same experience as with the desktop version.
  • Great performance — we did a huge work to achieve smooth U, but there is still a lot of space to work.
  • Open source — you can always host Harika on your server, including the sync server too.

Future features

  • Time travel for notes. Right now, I store all the changes at backend, and backend has logic that can return the snapshot state for the certain time by recalculating all the changes by the certain time.

Demo?

You can create a test account at https://app-dev.harika.io . You will need to specify strong password and a good email(like that end with @gmail.com), otherwise Kratos will not accept registration.

How can I try it locally?

Clone the repo, and run docker-compose -f docker-compose.local.yml up --build. Harika will be available at http://localhost:3000

You will need to specify strong password and existent email, otherwise Kratos will not accept registration.

harika's People

Contributors

dependabot[bot] avatar quolpr avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar

harika's Issues

Merging of conflicting edits after going online

Hi, this looks like something I am looking for for over 4 years now! A wiki-like offline-first mobile-first notes & pics & anything_visual taking app.

I wonder how you solve merge conflicts in case two devices (e.g. smartphones) went offline having both the very same revision of the DB data. Then on both devices you will make mutually incompatible - i.e. conflicting - edits (both independently changing the revision of the DB) and then both devices will turn online again (in arbitrary sequence).

Feel free to elaborate. Thanks!

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.