Coder Social home page Coder Social logo

ohsayan / jotsy Goto Github PK

View Code? Open in Web Editor NEW
473.0 8.0 17.0 564 KB

Jotsy is a self-hosted, free and open-source note taking app with a goal of simplicity in mind

Home Page: https://app.jotsy.dev

License: Apache License 2.0

Rust 67.38% CSS 3.04% HTML 25.44% JavaScript 3.92% Dockerfile 0.22%
self-hosted web-app javascript rust skytable css bootstrap notes-app

jotsy's Introduction

app icon Jotsy: Just your notes

Jotsy is a self-hosted, free and open-source note taking app with a goal of simplicity in mind. It is powered by Skytable. Read the full blog post here.

App Login page Signup page
app app app

🚧 This is currently under development

Features

  • 🏒 Multi-user
  • ✍️ Effective and distraction free notemaking
  • πŸ–‹ Plaintext or markdown
  • πŸ” Secure authentication and session management
  • 🌱 Extremely simple to self-host
  • 🌲 Extremely light on resources
  • πŸƒ Extremely lightweight on the browser
  • βš’οΈ Simple configuration (read more here)

Getting started

  1. First, install docker-compose by following the instructions here
  2. Run this:
    mkdir jotsy && cd jotsy && wget https://raw.githubusercontent.com/ohsayan/jotsy/next/docker-compose.yml && sudo docker-compose up -d
  3. Open your browser and head to http://localhost:2022

If you're having issues, consider reading the configuration guide.

Updating to the latest release

To update to the latest release (don't worry, you won't lose any data), run this:

cd jotsy && sudo docker pull ohsayan/jotsy:latest && sudo docker-compose up -d

This will pull the latest Jotsy image, stop the existing instance, rebuild the container and start it up again.

Stack

  • Backend:
    • Database: Skytable
    • Language: Rust
    • Framework/tools:
      • Tokio: Asynchronous runtime
      • Axum: A web framework built on top of Tokio
  • Frontend:
    • CSS Framework: Bootstrap
    • Scripting: Pure JavaScript (uses AJAX)
    • Markup: Pure HTML

Contributing

As highlighted in the original blog post, please create issues for any ideas you have; I want to hear them! Want to collaborate (would love some frontend wizard for some help :P)? Shoot me a DM on Twitter.

License

This app is distributed under the Apache-2.0 License.

jotsy's People

Contributors

ohsayan 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  avatar  avatar  avatar  avatar  avatar  avatar  avatar

jotsy's Issues

[FEATURE] Pagination

Is your feature request related to a problem? Please describe.

As discussed earlier, if one has a lot of notes, the browser may crash while loading all of them at once. This is solved with pagination. If anyone wants to work on this, I'd be happy to mentor them.

Describe the solution you'd like

With pagination, a subset of the notes will be loaded and further notes will be loaded in fixed size batches as requested.

Describe alternatives you've considered
NA

Additional context
NA

[FEATURE] Contact

Is your feature request related to a problem? Please describe.
Hello !
I would want to participate on this project and i don’t have Twitter (and don’t want to sign-up on it).
So I leave a comment here :)

I am a Front-End dev / webdesigner / designer (did my studies in design), who loves Rust and new tech around it.
I have already developed in Rust and, obviously, have done a lot of web dev pure or not.

Feel free to contact me via email if my help could be interesting: [email protected]

Describe the solution you'd like
A way to contact you that is not twitter.

Describe alternatives you've considered
Discord Github or email maybe (we could still make this issue more structured to be like a board to leave contacts for you).
I am not so much of a connected guy.

Additional context
don't know !

why can't login ? myself compile and run

i download u code , compile release and run ,
signed up is ok.
click "signed in", but can't login, it always redirect to login page.

and , found err by signed up , use name : 123456

thread 'tokio-runtime-worker' panicked at 'called `Result::unwrap()` on an `Err` value: SkyError(UnexpectedDataType)', src/handlers/signup.rs:88:41        
note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace 

Feature Requests , i want ...

del/merge/group notes:
operation like Collections in Microsoft Edge

search
modify
paste image : and auto save to server
pagination
tag/label management

(frontend)edit auto height

exports/export zip(markdown and res)/pdf

public: customer specify note public access , like blog

other:
plugin mechanism: above implement by plugin
OS tool: mouse select text/image... right click send to jotsy.(config token or login)

[QUESTION] How to redirect a page on server side.

I'm learning how Jotsy application works using the cutting-edge technologies such as Rust, Axum, and Tokio. Right now, Jotsy application uses redirect.html to redirect a page, but meta refresh is discouraged by World Wide Web Consortium (W3C) as described here. If the Jotsy app developer decides to stick with meta refresh, it's absolutely fine. I just want to know a different approach to handling redirection, which is to redirect a page on server side. I looked into crates such as reqwest and hyper to do this, but I can't figure this out. Any suggestions will be appreciated.

[FEATURE] logseq like outliner with back-references to the block level , plain text backend and other misc feedback

Is your feature request related to a problem? Please describe.
nope, just hoping for the next best notetaking system

Describe the solution you'd like

  1. persuation to consider a logseq style outliner with back-references to the block level
    (emacs org-mode, obsidian, roam are also note-taking outliners)
  2. persuation to consider a plain text file format backend with regeneratable indexes

Firstly, thankyou for your attempt at making a note-taking tool in rust.

Its seems obvious that you are attempting to make a hosted notetaking system for office/collaborative/enterprise-deployment situation. Some things I mention here may arrive from a different angle to your design/vision.

I also see that skytable is also your baby.

Unfortunately I didn't get to try out jotsy yet, nor find a youtube demo showing its current 0.1/0.2 versions, except for a few screenshots. As you can see wsl docker-machine setup is a small entry barrier hurdle one needs to overcome. So I'm sorry for being in the blind here, while filing this issue.

Its fine to close this issue if you have already considered this. I am sure most of what I write below, you would have also already surveyed.

As a note taking system user, I just wanted to share/provide some feedback, based on my use of other notetaking systems.

Some general strengths I see in some notetaking systems

  • having a plain text or encrypted text backend ( as compared to web interface with database storage)
    • local machine failure is a real risk/hazard. one safe guards that with backups. But the more infrastructure you need to set up like webservers/databases, can make setting-up and configuring things back to original a big chore, before one can access one's notes. One always need one's notes quick at hand for any daily activity, when daily routine is tracked with one's notes. Notetaking systems like logseq, zettler, dendron, etc save notes in plain text. Additionally, some apps keep an any time regenerate-able database for indexing, linking, caching and the like.
  • while web backend is good, local-apps are better
    • for the same reasons, it reduces time to setup and get going.
    • no need to do infrastructure setup, like configuring and deployment of web backend and database etc
  • syncing to cloud storage
    • this allows for use on multiple devices
    • the advantage of web-only with web-storage is that data is stored in one place, and synchronization is managed easily. the disdvantage is that that host server needs to always run, and local client can't edit offline.
  • Being able to just move/relocate the note-base quickly easily from machine to machine
    • moving becomes easy, when all one has to do, is copy over the note-base and just make the new software just reindex the plain-text files.
  • Easier to backup
    • for the same reasons
  • In plaintext there seem to be some choices: markdown flavor, common-mark, github-mark, djot, yaml, etc. I don't insist on an any given markdown, because one can easily convert between one to another using pandoc. But some human-editable markdown-like standard-fileformat gives a feeling of freedom, no file-format trap, no-lock-in, as well as a ease of edit using whichever editor, though one will usually choose to edit using the same notetaking tool because of instantaneous index updates. Writing auto-structured plaintext/markdown keeps persons writing focus on the note-writing-content instead of the looks/formatting.
  • The hierarchical note taking system has problems when a note can belong to multiple hierarchies.
    • I have come to like the outliner style with the tagging, because a tagging system seems to provide natural and better organization. The date based journaling itself acts like a linear order structure and the tags themselves act as a good descriptor of the content. In most cases it obviates the need for a note with its own descriptive title. When one searches for a note, one searches based on tag, and looks for relevant content by date.
  • When notes are in plain-text and indexes are regenerated, its possible to move/try different note taking systems, without

I think its a plus if optionally allows the data(notes) to reside outside as plaintext files, while skytable does indexing and other feature support.

logseq

  • strengths:
    • outliner, with tagging and back reference, plain text markdown, regeneratable indexes, easy to port, easy to backup, easy to get to notes post disaster
    • can do datalog (a query language)
    • can do sci (embedded clojure scripting language)
    • can do a note-graph
    • can do zotero
    • has mobile/android port
    • has a plugin system
  • neutral
    • cljs lang, (clojurescript), has a REPL, fast interpretted language
  • weaknesses:
    • slow (at least to start)
    • large software size to install ~200Mb!!

IMHO, logseq has done many things right.

Other seemingly good contenders as of 20221222

  • zettlr: implementation lang: typescript, Zettlr seems to be best for keeping academic style zettelkastens, specially liked the zotero integration, not an outliner
  • dendron: implementation lang: typescript, requires vscode, not on mobile, some kind of GUID/git based tree
  • emanote: implementation lang haskell
  • Joplin: implementation lang: typescript, not plaintext backend but uses sqlite backend,
  • trillium-notes implementation lang: javascript, not plaintext backend but uses sqlite backend.

Other notetaking systems seen/considered, less preferred

Other notetaking systems seen, over the years,, even less preferred

  • boostnote, microsoft-one-note, nixnotes, evernote, standard-notes

Describe alternatives you've considered
A clear and concise description of any alternative solutions or features you've considered.

Additional context
Add any other context or screenshots about the feature request here.

Feature request: Nested notes

Ability to classify notes into categories without any limits on how much I can nest them, like in CherryTree. There are too many simple note taking applications out there without this feature ;)

[BUG] jotsy-app container fails to start

Describe the bug

Having followed the steps in README, the app container fails to run.
docker compose logs says:

jotsy-app-1  | Error: SkyError(ParseError)
jotsy-skydb-1  | [2022-11-04T11:52:46Z INFO  skyd] Skytable v0.8.0 | https://github.com/skytable/skytable
jotsy-skydb-1  | [2022-11-04T11:52:46Z INFO  skyd] Using settings from supplied configuration
jotsy-skydb-1  | [2022-11-04T11:52:46Z WARN  skyd::config::feedback] CLI warnings: Running in `user` mode. Set mode to `prod` in production
jotsy-skydb-1  | [2022-11-04T11:52:46Z INFO  skyd::dbnet::listener] Server started on skyhash://0.0.0.0:2003
jotsy-skydb-1  | [2022-11-04T11:52:46Z ERROR skyd::dbnet::tcp] Error: connection reset
jotsy-skydb-1  | [2022-11-04T11:52:46Z ERROR skyd::dbnet::tcp] Error: connection reset

docker container ls:

CONTAINER ID   IMAGE                  COMMAND                  CREATED          STATUS                           PORTS                                   NAMES
5d6e165da23e   ohsayan/jotsy:latest   "jotsy"                  28 minutes ago   Exited (1) 28 minutes ago                                                jotsy-app-1
385b8a9cfa54   skytable/sdb:latest    "skyd --noart -h 0.0…"   28 minutes ago   Up 28 minutes                    127.0.0.1:2003->2003/tcp                jotsy-skydb-1

To Reproduce

  1. Run mkdir jotsy && cd jotsy && wget https://raw.githubusercontent.com/ohsayan/jotsy/next/docker-compose.yml && sudo docker-compose up -d
  2. Interrogate the Docker service

Expected behavior

jotsy-app container initiates and runs

Meta (please complete the following information):

  • OS: Fedora 36
  • Version/Commit hash: Tag latest, digest 79b6657e2fc1

CSRF and XSS

At the moment the cookies jotsy_token and jotsy_user aren't setting the HttpOnly (XSS) and Secure flags. Furthermore I also do not see any CSRF protection (SameSite flag and/or CSRF-Token), so scripts like

<body onload="document.forms[0].submit()">
<form action="https://jotsy.skytable.io/createnote" method="POST">
<input type="hidden" name="note" value="Hello there"/>
<input type="submit" value="Some Button"/>
</form>

embedded in any website will work.

Feature Requests

  • LDAP support: this way, it can be restricted to for instance company users.
  • Edit/Delete single notes, sometimes you want to change a note you made, or delete it.

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.