Skip to content

IngoKl/TodayIngoLearned

master
Switch branches/tags
Code

Latest commit

 

Git stats

Files

Permalink
Failed to load latest commit information.
Type
Name
Latest commit message
Commit time
db
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

TodayIngoLearned

TodayIngoLearned

TodayIngoLearned is a small personal project that I started to experiment with PWAs and full-stack Node.js a while back. It's a personal knowledge/learning management system used for every day (informal) learning. Since I now actually use the tool as part of my personal knowledge/learning management, I wanted to share it!

Be aware: As I started this as a personal learning project to learn about Node.js and some other technologies, the code is really not very good and leaves a lot to be desired. I hope that at some point I'll find the time to really go back to this!

You can find a detailed blog post about this project and its scope on my personal website.

Use Case and Features

TodayIngoLearned (inspired by reddit.com/r/todayilearned) is essentially a database in which you can store whatever your learned on a particular day. Each learning is one TIL - an entry in the database containing information about what you've learned.

Features

  • Progressive Web App (PWA) - installable on Android/iOS (very limited caching)
  • Multi-user support
  • Markdown support
  • Tagging TILs using hashtags
  • Commenting existing TILs
  • Bookmarking
  • Searching for titles, hashtags, and dates
  • Viewing random TILs
  • Basic spaced repetition system for studying TILs
  • Rudimentary dark mode

Usage

Internal Linking

You can link to other TILs using the [[Title]] syntax.

ToDo

I use a #todo tag to label TILs that require further works. For example, sometimes I don't have the time to immediately write a TIL. Hence, the navigation has a shortcut to /tag/todo.

Installation

Traditional Way

TodayIngoLearned-Install

npm install

node install.js createdb
node install.js populatedb

node server.js

Also consider the settings in config.json. If the option lowercasetags is true, all tags will be converted to lowercase. Also make sure to change the expresssessionsecret.

If you plan on running this 'in production' 😅, I would recommend using pm2 to run the server.

npm install pm2 -g
pm2 start server.js

The install.js script also will allow you to create new users (node install.js newuser username password) and to change a user's password (node install.js setuserpassword username new_password). Use node install.js refreshtags to refresh/rebuild all tags.

Docker

Alternatively, you can create your own Docker container to run TodayIngoLearned. I've provided a very rudimentary Dockerfile (not based on pm2) in the repository to get you started.

About

A very simple personal knowledge and learning management system.

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published