Gotify is an application that provides authorization/authentication, user creation, and a notification system. Users can subscribe to topics and receive email notifications when there are updates.
Distribution and processing of tasks is done via a asynchronous Redis worker and is run side-by-side with our API in a separate goroutine. Both goroutines are managed by an errgroup and support graceful shutdown and load shedding. For the data layer I decided to use sqlx in combination with the pgx driver.
Before running the app create a app.env
file and copy all of the configuration from app.env.example
.
I recommend leaving the defaults but you can optionally add your own email and password. Then simply run:
$ docker-compose up --build
API documentation is served here when the server is running.
Database documentation can be accessed here.
- Authorization/Authentication: Secure register & login system to protect users accounts.
- Notification System: Users can subscribe to topics and receive email notifications.
- Retry Mechanism: Sending notifications is being retried upon failure.
- Email Verification: Users are sent a verification email when registered.