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.
- Progressive Web App (PWA) - installable on Android/iOS (very limited caching)
- Multi-user support
- Markdown support
- Tagging TILs using hashtags
- Commenting existing TILs
- Searching for titles, hashtags, and dates
- Viewing random TILs
- Basic spaced repetition system for studying TILs
- Rudimentary dark mode
You can link to other TILs using the
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
npm install node install.js createdb node install.js populatedb node server.js
Also consider the settings in
config.json. If the option
true, all tags will be converted to lowercase. Also make sure to change the
If you plan on running this 'in production'
npm install pm2 -g pm2 start server.js
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.
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.