< Go back
This is a web app which allows students to share their lecture notes, helpful resources, start discussions, or ask questions. This site is separated into different sections for different courses.
Users are authenticated by emailing the users a one-time password to their university email address, which also confirms that they are either students or faculty of that university.
Markdown, HTML, and LaTeX are supported in comments and posts, so students are able to write notes in any way they are comfortable with. goldmark is used for rendering Markdown, and bluemonday sanitizes the output which includes user added HTML. LaTeX is rendered using MathJax on the client side.
Users are able to upvote posts, and posts with more upvotes (called iota), will appear on top. This is somewhat similar to upvoting in Hacker News or Reddit, which many are familiar with.
The following packages must be installed on your system.
This program is written by Humaid AlQassimi, and is distributed under the AGPL 3.0 only license. This means if you make your own fork of this app, you must release its source to its users under the same license.
$ git clone https://git.sr.ht/~humaid/neatnote $ cd neatnote $ make
Running the web server will automatically generate a configuration file
config.toml) if it is not yet created.
$ ./neatnote run
The program will exit when run for the first time, prompting you to configure the program. Check out the configuration documentation.
If you are using the MySQL driver you must create a table with the same name as
the user. You will have to also add the
CREATE TABLE `session` ( `key` CHAR(16) NOT NULL, `data` BLOB, `expiry` INT(11) UNSIGNED NOT NULL, PRIMARY KEY (`key`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8;
You should then run the web server again, and login with your account. You can set your account as admin by running the following command:
$ ./neatnote set-admin firstname.lastname@example.org
You may revoke the admin status by using the
--status false flag.
The last thing to do is to add the courses needed on the web interface, using the admin account.