No description
Find a file
Víctor Martínez 4cfa89ef21
feat: Reconfigure CI for review environments (#6)
This pull request refactors and improves the GitHub Actions CI/CD workflow setup and enhances the application header component. The changes consolidate and clarify deployment workflows for production and review environments, improve environment variable handling, and update the application UI for greater flexibility.

**CI/CD Workflow Refactoring and Improvements:**

* Consolidated the CI workflow in `.github/workflows/ci.yml` to support both manual and reusable workflow triggers, making it easier to compose in other workflows.
* Removed the old deployment workflows (`fly-deploy.yml` and `fly-review.yml`) in favor of new, clearer workflows for production (`production.yml`) and review apps (`review.yml`). These new workflows use reusable CI steps, improved secret management, and explicit environment configuration [[1]](diffhunk://#diff-e98bb23501189d64a1cee3fab4260cfa5fb4e0bf50a7352fc8c4bfe1939f92c2L1-L18) [[2]](diffhunk://#diff-360ed408b1160aff40b11529c2471f642a393cfd9375757bf6d4da2c7ab78db7L1-L34) [[3]](diffhunk://#diff-d5171f9b8c42863b1e934fda1fefedf968913c65aa5d715555a696fb3cbd4c7eR1-R45) [[4]](diffhunk://#diff-ebc21ccd816b27c07389e15ad88c9e74b71bde5e8e315e4e30902097d38386e5R1-R66).
* Added a new `fly.review.toml` configuration file to standardize review app deployments on Fly.io, specifying build, deploy, environment, and VM settings.
* Updated `fly.toml` to explicitly specify the Dockerfile for builds, improving deployment reliability.

**Environment and Configuration Handling:**

* Changed the application to require the `PHX_HOST` environment variable at runtime, raising an error if it is missing. This ensures correct host configuration for all deployments.

**UI Component Enhancement:**

* Refactored the `app_header` component to accept customizable `title` and `icon` attributes, and updated its usage in the main layout to display "Spazio Solazzo" with a sun icon. This makes the header more flexible and visually consistent [[1]](diffhunk://#diff-4b44e6943316f34ab5bf0f9ea1956fd2a65dc8a7cbb9c5a381578c13c6e559f6L42-R42) [[2]](diffhunk://#diff-4b44e6943316f34ab5bf0f9ea1956fd2a65dc8a7cbb9c5a381578c13c6e559f6R119-R138).
2026-01-14 14:50:25 +01:00
.github/workflows feat: Reconfigure CI for review environments (#6) 2026-01-14 14:50:25 +01:00
assets Setup first public version of the project 2026-01-10 19:03:02 +01:00
config feat: Reconfigure CI for review environments (#6) 2026-01-14 14:50:25 +01:00
lib feat: Reconfigure CI for review environments (#6) 2026-01-14 14:50:25 +01:00
priv Setup first public version of the project 2026-01-10 19:03:02 +01:00
rel feat: setup for fly.io deployment 2026-01-13 13:57:52 +01:00
test Setup first public version of the project 2026-01-10 19:03:02 +01:00
.credo.exs Setup first public version of the project 2026-01-10 19:03:02 +01:00
.dockerignore feat: setup for fly.io deployment 2026-01-13 13:57:52 +01:00
.formatter.exs Setup first public version of the project 2026-01-10 19:03:02 +01:00
.gitignore Setup first public version of the project 2026-01-10 19:03:02 +01:00
.igniter.exs Setup first public version of the project 2026-01-10 19:03:02 +01:00
AGENTS.md Setup first public version of the project 2026-01-10 19:03:02 +01:00
CLAUDE.md Setup first public version of the project 2026-01-10 19:03:02 +01:00
compose.yml Setup first public version of the project 2026-01-10 19:03:02 +01:00
Dockerfile feat: setup for fly.io deployment 2026-01-13 13:57:52 +01:00
flex chore: add command to run IEx on the server 2026-01-13 14:23:02 +01:00
fly.review.toml feat: Reconfigure CI for review environments (#6) 2026-01-14 14:50:25 +01:00
fly.toml feat: Reconfigure CI for review environments (#6) 2026-01-14 14:50:25 +01:00
LICENSE.md Setup first public version of the project 2026-01-10 19:03:02 +01:00
mix.exs Setup first public version of the project 2026-01-10 19:03:02 +01:00
mix.lock Setup first public version of the project 2026-01-10 19:03:02 +01:00
README.md feat: setup for fly.io deployment 2026-01-13 13:57:52 +01:00
yamlfmt.yml Setup first public version of the project 2026-01-10 19:03:02 +01:00

SpazioSolazzo

Spazio Solazzo is a cultural space in the heart of Palermo where people around the world gather to work, meet or play music.

Spazio Solazzo is managed by the Caravanserai cultural association and is found next to the Mojo Coliving project, which also makes part of Caravanserai.

This project allows Caravanserai to manage the booking of the different spaces inside Spazio Solazzo. Spazio Solazzo at the moment is made out of three other spaces:

  • A Coworking space, where people can book desks to work and share during the day.
  • A meeting room that people and companies can book for their own meetings.
  • A music jam space that single musicians and bands can book for their rehearsals and other musical projects.

Development

This site is build with Elixir.

I've decided to use the Phoenix web framework together with the Ash framework, together they allow me to build a rich interactive website with a rich data model easy to develop, test and maintain.

Personally, Phoenix is my go-to framework for any web projects that require any interactivity and real-time feedback to the users.

Ash helps modeling your domain and business logic in a very straight-forward way that integrates seamlessly with Phoenix.

Setup DB

First you will need to have Docker and Docker compose installed. See installation instructions.

Then, to spin up your local postgres database simply run:

docker compose up -d

Setup Phoenix project

You'll need to make sure you have Elixir, Erlang and Phoenix installed in your system.

After that, download the dependencies:

mix deps.get

And setup the project with:

mix setup

This should run the DB migrations and seed the DB with mock data.

Now you should be ready to run the tests:

mix test

Or to run the compiler, formatter, tests, credo and more:

mix precommit

Now, to start your Phoenix server:

  • Start Phoenix endpoint with mix phx.server or inside IEx with iex -S mix phx.server

Now you can visit localhost:8080 from your browser and you're ready to go!

License

Copyright 2026 Victor Martinez Montané

Licensed under the Apache License, Version 2.0 (the "License"), subject to the Commons Clause License Condition v1.0. You may not use this file except in compliance with the License.

See the LICENSE file for details.