Simple plaintext diary
Find a file
2024-05-04 22:42:47 +03:00
config Make log location configurable 2024-05-04 15:39:15 +03:00
i18n Add i18n and optimise template parsing 2024-05-03 15:40:40 +03:00
pages Add i18n and optimise template parsing 2024-05-03 15:40:40 +03:00
public Improve list pages' backend 2024-04-23 14:13:45 +03:00
.gitignore Fix timezone issue in reference compose.yml 2024-05-01 00:22:23 +03:00
api.go Integrate notes into front end 2024-03-30 14:22:03 +03:00
auth.go Make log location configurable 2024-05-04 15:39:15 +03:00
compose.yml Fix timezone issue in reference compose.yml 2024-05-01 00:22:23 +03:00
config.go Improve file closing 2024-05-04 21:36:43 +03:00
Dockerfile Fix Dockerfile 2024-05-04 15:56:04 +03:00
export.go Improve file closing 2024-05-04 21:36:43 +03:00
files.go Ensure data sub-directories exist 2024-05-04 22:42:47 +03:00
flags.go Add debug flag 2024-05-04 14:29:49 +03:00
go.mod Bump to go 1.22 2024-03-18 19:33:57 +03:00
go.sum Init 2024-03-15 18:34:24 +03:00
i18n.go Make log location configurable 2024-05-04 15:39:15 +03:00
LICENSE License under MIT 2024-03-17 18:26:13 +03:00
logger.go Make log location configurable 2024-05-04 15:39:15 +03:00
main.go Add debug flag 2024-05-04 14:29:49 +03:00
README.md Improve file closing 2024-05-04 21:36:43 +03:00
routes.go Add i18n and optimise template parsing 2024-05-03 15:40:40 +03:00
serve.go Add debug flag 2024-05-04 14:29:49 +03:00
TODO.md Ensure data sub-directories exist 2024-05-04 22:42:47 +03:00
update-docker.sh Use Local as default TZ 2024-04-23 23:16:20 +03:00

🌺 Hibiscus.txt

Simple plaintext diary.

This project is very opinionated and minimal, and is designed primarily for my usage. As a result, I can't guarantee that it's either secure or stable.

Features:

  • Each day, you get a text file. You have until 23:59 of that very day to finalise it.

  • You can save named notes to document milestones, big events, or just a nice game you played this month

  • You can easily export entire data dir in a .zip archive for backups

  • Everything is plain(text) and simple. No databases, encryption, OAuth, or anything fancy. Even the password is plainte- wait is this a feature?

  • Docker support (in fact, that's probably the best way to run this)

  • Optional Telegram notifications for failed login attempts

Technical details

You can read a relevant entry in my blog here. It provides some useful information and context for why this app exists in the first place. There is also TODO.md file that shows what I will (or may) change in the future.

Data format:

data
+-- day
|   +-- yyyy-mm-dd.txt (ISO 8601)
|       ...
+-- notes
|   +-- note1.txt
|   +-- note2.txt
|       ...
+-- readme.txt

config
+-- config.txt

Config options:

Below are defaults of config.txt. The settings are defined in newline separated key=value pairs. Please don't include the bash-style "comments" in your actual config, they are provided purely for demonstration only and will break the config if present.

username=admin  # Your username
password=admin  # Your password
port=7101  # What port to run on (probably leave on 7101 if using docker)
timezone=Local  # IANA Time zone database identifier ("UTC", Local", "Europe/Moscow" etc.), Defaults to Local if can't parse.
language=en  # ISO-639 language code (currently supported - en, ru)
log_to_file=false  # Whether to write logs to a file
log_file=config/log.txt  # Where to store the log file if it is enabled
enable_scram=false  # Whether the app should shut down if there are 3 or more failed login attempts within 100 seconds

# Not present by default, set only if you want to be notified of any failed login attempts over telegram
tg_token=tgtoken
tg_chat=chatid

Docker deployment:

Due to project's simplicity and me rarely using them there are no image tags, I just use latest and push to it. The package provided in this repository is for linux/amd64 architecture, and there is a Dockerfile in case you want to compile for something rarer (like a Pi). This repo contains the compose.yml that I personally use.

Executable flags

If you for some reason decide to run plain executable instead of docker, it supports following flags:

-config string
    override config file location
-user string
    override username
-pass string
    override password
-port int
    override port
-debug
    show debug log