lens @ 14e5580efd51c7b9e70d304715e512a2ea2a1b21

feat: Add option to download file
feat: Migrate from logrus to slog
ref: Remove ggen entry

I have no intention of going further with that.
feat: Simplify mosaic

The old implementation was not good and would render the list on mobile
in the wrong order
feat: Add detail page
fix: Oder by correct field

Before the order was not taking the `date_shot` into consideration.
chore: Update readme readmap
feat: Add admin control

Now only admins can access settings.
fix: Fix initial setup check
ref: Move to a pure go sqlite implementation
feat: Handle login error
fix: Adjust some of the layout error
ref: Better worker description

This is hard coded as I always want to check that.
ref: Relayout settings page a bit

Settings was all over the place with its layout. Now it better fits
mobile.
fix: Fix various linting error
fix: Actually add install rule
feat: Add task loop

Now the tasks will loop every given time. With this it will be able to
pick up new photos after the application was started.

I added 2h for file because my personal photo gallery is quite big and
quite IO bottled necked so it tasks a lot of time to go through.
ref: Minor ui changes
fix: Fix album and media navidation
feat: Make mosaic reusable
ref: Update mosaic to remove empty spaces
ref: Some typography tweaks
fix: Add on fail for exif

Also remove unique index from thumbails path, because on fail it saves a
empty path.
chore: Check album
feat: Add (yet again) crude album implementation

This is a initial UI album implementation. This should cover the most
basic album navigation.

This is still plenty to do :)
feat: Add better tooling for running the project

* Add watch option for hot reload(ish).
* Read from `.env` file. This make local development a bit easier since
  now can easily run the application with custom configuration.
feat: Add album scanner
ref: Move net/http

I was young and naive, fasthttp does not fit my needs and make
development slower. I'll move to net/http since it has a wider support
and will spare some time on implementation detail things (like CSRF). It
will allow me to reduce a bit of the code since there may be lib for
handling cookie encryption and auth in general.
ref: Move some bin from img to lens
ref: Move to boxed tests
feat: Add user management

As many things it is on crude state. The settings.go has become a big
mess, but I have achieve MVP, so from now one things shall improve as
I'll spent more time on refactoring.
feat: Add option to preload metadata

Let the use pick if they want to preload videos' metadata.
fix: Build qtc on the pipeline
feat: Fix video loading its full width
feat: Add build process

To make sure that the project does not only compile on my machine.
ref: Fix linting errors
ref: Remove static fs on root

Go embed does allow to load parent folder, so I move static fs to
static folder as I think it fits better there than in the root of the
project.
feat: Move last page to qtpl
ref: Move auth functions to service
feat: Move settings from `html/template` to qtpl
fix: Fix path not storing properly

Also, initial user is now created as admin.
feat: Move register from `html/template` to qtpl
feat: Move login from `html/template` to qtpl
feat: Move error from `html/template` to qtpl
doc: Add dev requirements

Add some requirements to run the project.
feat: Add template generating to make file

Add template generating code to `make` process.
feat: Move media from `html/template` to qtpl
chore: Add quicktemplate dependency
feat: Move to user path media

Now media also base on user folder to fetch its media.
feat: Add use based file scanner
feat: Add user based files

Now files follow user path configuration
fix: Fix content type

Content type was always being set to `text/html`.

Also swap lib for processing thumbnail for something that accepts HEIC.
feat: Add thumbnailer
feat: Add new rule for not so useful optimization
test: Add simple test for settings
ref: Move all controller under the same folder

Move all controller to the same folder and rename them to service.

Moving them to the same folder allow an easier setup for testing.
ref: Move away other repositories

Finish moving all repositories to a repository package. This should
reduce the amount of packages.
ref: Refactor how repository is define

To make things easier and reduce the number of package I'll move all
repository to one folder, starting with auth and user repository.

Also implements all testing on top of the repository interface with a im
memory implementation. This will later make mescling unit and
integration easier.
feat: Partially fix test

This will totally be fixed later.
feat: Add initial user setup
feat: Add scheduler to chan processor
feat: Store image size

Add image dimensions to exif fetch.
feat: Add user list UI

Fill user settings UI with actual data.
feat: Add make rules for upx compressing

I don't know if that will work in the long run but I have added just in
case.
fix: Actually read from embedded

Previous implementation was not reading from embedded fs.
feat: Remove bin size
feat: Add mockup for user settings
feat: Add static file to output bin

Now the final binary has a standalone web server including necessary
static file.
feat: Remove unnecessary function
ref: Add itens to TODO
ref: Rename list to batch processor
feat: Add log to list list processor
feat: Add scheduler again

Since I have fixed the issue with the `SIGTINT` hanging the application
I can readd the scheduler once more.

Also move the param for amount of scheduler work.
fix: Wrap media scan into a go routine

For some unknown reason `ReadExif` hangs when the context is canceled
through signal handling. Perhaps perl-exif tooling is closing on
`SIGNINT`.
feat: Remove unecessary param from repo
ref: Remove scratchpad notes
feat: Move params to flags

Start using flags to set some params like key and database connection.
As a flag parse I opt for a lib that uses posix style params.
fix: Fix having to login every server reload
fix: Fix linter issues
feat: Inicial commit

It contains rough template for the server and runners.

It contains rough template for the server and runners.