Commit graph

17 commits

Author SHA1 Message Date
526a60c040 Add short-eared owl as the Owltide mascot and icon
All checks were successful
/ build (push) Successful in 2m29s
/ deploy (push) Successful in 26s
I've settled on a short-eared owl (Asio Flammeus) to serve as the mascot
and icon for Owltide. This is not a settled and final decision, but
rather a branding that's good enough for now.

To create the mascot I sketched some owls that I have saved to
/assets/mascot/owl-sketch.png and then selected one I liked.  Going
clockwise from the top right the sketches were based on the reference
photos [1], [2], and [3] found by searching for "owl" on Wikimedia
Commons.  I then lightly refined it to work as a small icon.

To avoid confusing terms that only make sense for software the artworks
are licensed under the Creative Commons Attribution-ShareAlike 4.0
License.  This has a similar spirit to the AGPL and ensures that should
improvements be made upon them they can be incorporated in the project.

[1]: https://commons.wikimedia.org/wiki/File:Athene_cunicularia_-near_Goiania,_Goias,_Brazil-8_edit.jpg
[2]: https://commons.wikimedia.org/wiki/File:Hibou_des_marais.jpg
[3]: https://commons.wikimedia.org/wiki/File:Uhu-muc.jpg
2025-07-01 19:41:59 +02:00
e6cda256ae Set html lang attribute to en 2025-07-01 18:48:01 +02:00
9592cd3160 Name the application Owltide
The name is inspired by the watchful owl perching from the tree tops
with complete overview of all that's going on combined with -tide in
the sense it's used for in words like summertide and eastertide.
2025-07-01 18:41:24 +02:00
e52972853d License under AGPL version 3 or later
I firmly believe in free software.

The application I'm making here have capabilities that I've not seen in
any system.  It presents itself as an opportunity to collaborate on a
tool that serves the people rather than corporations.  Whose incentives
are to help people rather, not make the most money.  And whose terms
ensure that these freedoms and incentives cannot be taken back or
subverted.

I license this software under the AGPL.
2025-06-30 18:58:24 +02:00
73bb12c104 Add payload plugin for ClientSchedule
All checks were successful
/ build (push) Successful in 1m29s
/ deploy (push) Successful in 16s
Add plugin to serialise ClientSchedule objects as JSON when it's passed
from the server to client on SSR requests.
2025-06-13 22:01:42 +02:00
fb7a60db28 Add per account locale setting
Add a per user account setting for the locale so that the server can
correctly render pages with localized time formatting.
2025-06-13 21:50:22 +02:00
aa52a6c651 Setup vitest
Done according to https://nuxt.com/docs/getting-started/testing
2025-06-12 21:38:47 +02:00
75abd82f81 Workaround issue with VSCode Nuxtr
When the object passed to defineNuxtConfig contains logic for enable
devtools option the Nuxtr plugin annoyingly shows an endlessly spinning
orb on the statusline.
2025-06-12 14:01:50 +02:00
25793fecb8 Add DISABLE_DEV_TOOLS env to disable Nuxt dev tools
All checks were successful
/ build (push) Successful in 1m14s
/ deploy (push) Successful in 15s
The dev tools built into Nuxt take up way too much resources to run on
low end hardware.  Add config to disable it.
2025-05-31 22:14:06 +02:00
fae8b4e2e4 Use a pinia store to manage session state
Replace the convoluted useAccountSession composable with a pinia store
that in addition allows for the consolidation of all session related
functions to grouped into one module.
2025-05-24 18:18:27 +02:00
4444daaca9 Load secrets from files
All checks were successful
/ build (push) Successful in 1m8s
/ deploy (push) Successful in 16s
Putting secrets into environment variables is problematic due to them
being inherited by sub-processes, the ease as which these can be
leaked in logs, and the lack of support for loading secrets into
environment variables by systems such as systemd and docker.

Change the loading of secrets to be done by loading the content of a
file specified by an environment variable.
2025-05-20 00:43:29 +02:00
a16921f264 Read vapid subject from the environment
Load the contact details for push notifications from the
NUXT_VAPID_SUBJECT environment variable.
2025-05-20 00:25:28 +02:00
c4a6f6b3f9 Add per account overridable timezone setting
To make it possible to render the timetable in the user's local time we
need to know the timezone to render it in on the server.  Otherwise
there will be hydration errors and paint flashing as the client renders
a different timezone.

Add a server global default timezone that can be overriden on a
per-account bases to prepare for timezone handling the timetable.
2025-03-09 15:53:51 +01:00
8da4b02154 Implement signed cookie helpers
Provide a convenient wrapper for setting SHA-256 HMAC signed cookies and
retreiving them with the signature validated.  The secret key is
configured in the NUXT_COOKIE_SECRET_KEY environment variable.
2025-03-06 22:07:51 +01:00
250ca9a1ac Port application from Next.js to Nuxt
Nuxt is based on Vue.js and I find their building blocks to be much
neater compared to the React based Next.js.
2025-03-05 15:36:50 +01:00
8c8b561f1a Convert indents to tabs 2025-03-01 17:06:41 +01:00
5e4ea1be61 Setup defaut Nuxt template 2025-03-01 16:52:23 +01:00