JourNLP is a journaling/note-taking web app that automatically categorizes your notes for you, using Natural Language Processing. Type in your notes, submit, and JourNLP categorizes them with NLP. Identical topics are grouped together, and data from your notes can be visualized.
- Express/Node.js
- Passport with passport-jwt, for authentication
- jwt-simple for encoding/decoding our JWTs
- Retext with retext-keywords, for our categorization
- WebWorker Threads and promise-worker, for future-proof threading of our NLP
- MongoDB, with Mongoose for schema, input validation, etc
- bcryptjs for password hashing & salting
- Mocha and Chai, for our tests
- Travis-CI for test automation
- node-cron for periodically refreshing our demo account's data
- jQuery, for our client
Sidebar patterns, courtesy subtlepatterns.com and dinpattern.com. Fonts and data visualization courtesy Google.
The API here is RESTful. Most access involves authentication via JWT; the exceptions are account creation (POST /api/user_account
) and log in (POST /api/log_in
). All request/response bodies are of type application/json
.
The API endpoints for this project broadly do two things:
- CRUD notes entries—that is (1) make posts, (2) access post data, (3) update posts, and (4) delete posts data
- CRUD user accounts—i.e., (1) create user accounts, (2) get access to all the data associated with a user account, (3) change a user password, and (4) delete an account and all associated data
We use the WebWorker Threads library to create a relatively future-proof, threaded implementation of our NLP categorization. That is, once Node rolls out Worker Threads beyond the experimental stage, the existing code should be portable, without too much effort.
Splash page
Write listings; JourNLP categorizes them
Click the categories to view your entries with those same categories
View a visual representation of the topics you've written about