Flush Log is Progressive Web App that can be used to track your bowel movements
it is available at https://pgulb.github.io/flush-log/
You can improve your toilet habits, for example reduce time mindlessly scrolling through
Social Media if you see how much time it takes
FL allows you to track stats like time, number/% of times with phone, mean time, mean rating etc
In short it's a web app that allows itself to be 'installed' both on desktop and mobile devices as an app, option to install appears usually at the right side of searchbar, and on mobile in the three dot menu
PWAs aim to look more like native application than a regular website, they also cache themselves on user's device to load faster and notify user when an app can be updated
flush-log uses Taskfile (https://taskfile.dev/) to automate commands used to
develop and test its components
Components are:
- PWA (Go + go-app https://go-app.dev/)
- REST API (Python + FastAPI https://fastapi.tiangolo.com/)
- MongoDB (At production it's MongoDB Atlas free tier https://www.mongodb.com/docs/atlas/reference/free-shared-limitations/)
Go-app can be compiled to executable to run as a server, or compiled to static content
In production I compile it to static and deploy to Github Pages
Tests and local development is done with server version (pipeline tests with Docker)
task
I use uv https://github.com/astral-sh/uv to create venv and install dependencies while developing
Tests are run using venv
task init-uv-venv
task dev
And go to http://localhost:8080 for hot-reloading app
API is located at http://localhost:6789
and Mongo at mongodb://localhost:27017
task cleanup
unit
task test-api-unit
mocked
task test-api-mock
with local mongo
task test-api-integration
unit
task test-pwa-unit
integration (with go-rod https://go-rod.github.io/#/)
task test-pwa-integration
integration with visible browser window
task test-pwa-integration-show-window
Workflows run if files in api/ or pwa/ folder change
- test-pwa.yml - build docker image and run tests for PWA on each push
- deploy-pwa.yml - build static content and deploy to Github Pages after tests complete (on main branch)
- test-api.yml - run tests for API on each push
- publish-api-image.yml - build API image after tests
- deploy-api.yml - deploy API