m0ngr31 / DailyNotes

App for taking notes and tracking tasks on a daily basis
MIT License
705 stars 44 forks source link
docker flask typescript vue

DailyNotes: Daily tasks and notes in Markdown

Current version: 1.0-beta18

About

The idea for this app came from using my Hobonichi Techo planner every morning to write down what I needed to accomplish that day & using it for scratching down random thoughts and notes as the day went on. The closest thing I've seen to an app for replacing this system is Noteplan, but I don't use a Mac or an iOS device, and it's not self-hostable, so I decided to write my own.

Since I had the need for keeping track of to-dos throughout the day, regular Markdown didn't work for me since it doesn't natively support tasks. So as an alternative I'm using Github Flavored Markdown (GFM). I really wanted it to feel like an actual text editor and not just a textbox, so I decided to use CodeMirror to handle all the input. Fira Code is used to provide font ligatures. Some other nice features include code highlighting, text/code folding, and a task list where you can toggle the status of any task from any date or note.

Roadmap

I'd like to try add include at least of some the following features to get to a final v1.0 release:

In Action

Here is some screenshots of what it looks like:

Main editor:

Search page:

Task list:

Running

The recommended way of running is to pull the image from Docker Hub.

Docker Setup

Environment Variables

Environment Variable Description Default
API_SECRET_KEY Used to sign API tokens. Will be generated automatically if not passed in.
DATABASE_URI Connection string for DB. Will create and use a SQLite DB if not passed in.
DB_ENCRYPTION_KEY Secret key for encrypting data. Length must be a multiple of 16.

Warning: If changed data will not be able to be decrypted!
Will be generated automatically if not passed in.
PREVENT_SIGNUPS Disable signup form? Anything in this variable will prevent signups. False
BASE_URL Used when using a subfolder on a reverse proxy None
PUID User ID (for folder permissions) None
PGID Group ID (for folder permissions) None

Volumes

Volume Name Description
/app/config Used to store DB and environment variables. This is not needed if you pass in all of the above environment variables.

Docker Run

By default, the easiest way to get running is:

docker run -p 5000:5000 -v /config_dir:/app/config m0ngr31/dailynotes

Development setup

Installing dependencies

You need Python (works on 2 and 3) and Node >= 8 installed

pip install -r requirements.txt
cd client
npm ci

Creating the environment

You can use the environment variables from above, or you can generate new ones by running the following:

./verify_env.py

Keep in mind that since the data is encrypted, if you modify the DB_ENCRYPTION_KEY variable, your data will not be accessible anymore.

Running

During development you need to run the client and server simultaneously

./run.sh
cd client
npm run serve