A web application written in Nim that allows one to create/edit Reminders and sends email and/or xmpp notifications when they are due.
Go to file
ITwrx 781d30b285 Update README.md
note about send-reminders route
2025-05-23 14:06:10 -05:00
assets remove unneeded assets and add two files from dev dir 2025-05-18 08:43:08 -05:00
dev remove unneeded assets and add two files from dev dir 2025-05-18 08:43:08 -05:00
helpers make hardcoded values release friendly 2025-05-18 10:52:58 -05:00
models make hardcoded values release friendly 2025-05-18 10:52:58 -05:00
post_handlers make hardcoded values release friendly 2025-05-18 10:52:58 -05:00
templates fix nim compiler warnings and clearAllReminders() after updating sendDate 2025-05-17 07:10:54 -05:00
CHANGELOG.md add CHANGELOG, README, and COPYING 2025-05-18 09:56:47 -05:00
COPYING add CHANGELOG, README, and COPYING 2025-05-18 09:56:47 -05:00
Forget_Me_Not.nimble Fix issues in nimble file 2025-05-23 17:33:38 +02:00
README.md Update README.md 2025-05-23 14:06:10 -05:00
fmn_gs.nim make hardcoded values release friendly 2025-05-18 10:52:58 -05:00

README.md

Forget-Me-Not

A single-user-per-instance web application for creating/editing Reminders that can repeat in various ways. Supports email and XMPP notifications. It is written in Nim using the Guildenstern multi-threaded server library and the muti-threaded SQLiteral SQLite API library.

System Package Dependencies

curl: send any due Reminders by running the following Curl command from /etc/periodic/15min or similar cron mechanism.

-- curl -d "send_reminders_key=your-string-key" -X POST http://127.0.0.1:your-apps-post-port-num/send-reminders

-- set your send_reminders_key in /post_handlers/send_reminders_post_handler.nim

xmppc: Forget-Me-Not uses this program to send the XMPP messages. If you only ever intend to use email notifications then you don't need it. see xmppc docs about using a default config so Forget-Me-Not can just use that.

libsodium: This is used to hash user passwords when creating a Forget-Me-Not user with /dev/create_user.nim. See comments in fmn_gs.nim.

sqlite3: for the database.

nim: to compile binary. We used nim 2.2.4 at the time of writing this.

Compiling and running

-- Until the next release, you can install any non std/lib Nim package dependencies listed in Forget_Me_Not.nimble with Nimble.

-- compile with nim c --cc:clang --mm:atomicArc -d:ssl --d:release fmn_gs.nim. Remove --cc:clang to use gcc instead.

-- automate starting with openrc, systemd, or similar.

-- use nginx (or similar) as reverse proxy and for serving assets.

-- we will try to add some example configs for some of this as time allows, assuming user interest.

-- locally, we installed tailwindcss cli in the dev folder and run ./tailwindcss -i fmn.css -o ../assets/css/fmn.css -w -m from there to create the production css file in assets/css. You can do the same, if you wanted to tweak anything.

-- In some cases, you may have to manually edit nimword and/or nim-libsodium to add the libsodium.so version your distro has installed. If you have libsodium installed, and Forget-Me-Not still won't run, run it in the foreground to get the error message, and take a look at that.

-- You may want to add an extra layer of protection for your whole instance if running on the WAN, by using http basic auth, and/or deny outside access to your send-reminders POST route in a nginx location directive or at least throttle for that route so adversaries can't guess your key.