Cess Advisor 🐪🚽 is a stupid yet really useful web app that helps you find a suitable toilet when you are in a hurry.
TL;DR: OCaml 🐪 (Sihl) + JavaScript 🤢 (SvelteKit) + PostgreSQL 🐘
[!TIP] If you want to preserve your mental health, you should NOT write JavaScript code (and frontends in general). OCaml is just better.
The project started as an excuse to play around with OCaml, but I needed a frontend to make it useful. I tried to pick the simplest one and ended up with Svelte. But I absolutely fucked up and started a SvelteKit project (the docs don't mention how to setup a vanilla Svelte project). So I ended up writing SSR pages and basically two backends.
Backend: OCaml 🐪
Frontend: JavaScript 🤢
Database: 🐘
TL;DR: Docker 🐳 + GitHub Actions 🤖 for backend and Cloudflare Pages ☁️ for frontend
Backend: Docker 🐳 + GitHub Actions 🤖
main
branch, deploy-backend
GitHub action is triggeredHOST
, USERNAME
, PORT
, KEY
, SCRIPT
secrets to GitHubKEY
provided in secrets to allowed hosts on server.env
file in the root of the repository (see .env.template for reference)logs
in the root of the repositorySCRIPT
secret should cd into the repository and run git pull
and docker-compose up -d --build --force-recreate
Frontend: Cloudflare Pages ☁️
main
branch, the Cloudflare pages integration detects the changeRoot directory (advanced)
as frontend
The project is licensed under the GPLv3 license.
It was licensed under CC-BY 4.0 before version 1.0 (commit a21d9f70c002aa497e5196308c6e71012211e468
), so the code before that commit is licensed under CC-BY 4.0 (the license is not revokable).
Each contribution is welcome, especially building alteranive better frontends (if you are brave enough to write JavaScript code).
Please follow the conventions below.
This project follows the following commit convention: <type>(<part>/<scope>): <summary>
Type: commit type
feat
: add new featurefix
: bug fixrefactor
: code refactoringbuild
: build system (dependencies, ...)test
: add testsdocs
: documentation changesci
: continuous integration (github actions, ...)Module/Scope: commit part (mandatory) and scope (optional)
be/
: backendhandlers
: request handlersmiddlewares
: middleware functionsutils
: utility modulefe/
: frontendcomponents
: componentspages
: pages (client side)ssr
: server side rendered pagesservices
: interaction with backend APIvalidators
: form validatorsdb/
: databasetables
: tablesrepo
: repository (omit scope)Summary: commit summary, present tense, start with lowercase, no period at the end
Adding new scopes is allowed if necessary, just add it to the list above.
See CHANGELOG.md file.