Manuel Bustillo 2147d7ad5e
All checks were successful
Run unit tests / rubocop (push) Successful in 27s
Run unit tests / check-licenses (push) Successful in 32s
Run unit tests / copyright_notice (push) Successful in 36s
Run unit tests / unit_tests (push) Successful in 1m22s
Run unit tests / build-static-assets (push) Successful in 10m9s
Redo simulations lifecycle (#222)
## Why

The current way of creating and deleting simulations doesn't scale for big instances. We cannot generate 50 simulations every time a guest confirms attendance, and we should not delete existing valuable simulations. For example, if a guest confirms attendance and declines right after, previously generated simulations should still be valid.

## What

In this PR we are introducing a series of changes that make simulations management easier:

1. We're removing the automatic creation of simulations.
2. Simulations are not removed anymore, neither manually nor automatically.
3. A new endpoint has been defined to create simulations on demand.
4. A digest property has been defined to determine whether a simulation is still valid (meaning there have not been any change in the list of guests involved).

Reviewed-on: #222
Co-authored-by: Manuel Bustillo <bustikiller@bustikiller.com>
Co-committed-by: Manuel Bustillo <bustikiller@bustikiller.com>
2025-01-26 12:53:21 +00:00
2025-01-26 12:53:21 +00:00
2024-11-03 08:59:56 +01:00
2025-01-26 12:53:21 +00:00
2025-01-26 12:53:21 +00:00
2024-07-11 18:42:31 +02:00
2024-07-11 18:42:31 +02:00
2025-01-26 12:53:21 +00:00
2024-07-11 18:42:31 +02:00
2024-07-11 18:42:31 +02:00
2024-07-11 18:42:31 +02:00
2024-11-03 13:40:50 +01:00
2024-07-11 18:42:31 +02:00
2024-11-15 18:28:45 +01:00
2024-07-11 19:41:36 +02:00
2024-12-30 08:15:56 +00:00
2024-12-30 08:15:56 +00:00
2024-08-10 08:28:09 +00:00

Libre Wedding Planner

Libre Wedding Planner is Free, Open Source Software that helps organize several aspects of a wedding.

The project is not production-ready yet.

Features

The follwing features are either developed or under active development:

  • Guests management
  • Expense management
  • Seating chart

Next steps

Some ideas we would like to implement next:

  • Authentication (required to make an instance public)
  • Website with wedding information
  • Attendance confirmation forms
  • Multitenancy

Development setup

Libre Wedding Planner is made of two main pieces:

  • The backend (this repo), built with Ruby (on Rails)
  • The frontend (repo here), built with NextJS and React. You will need both to have the service fully working.

Both repositories are expected to live have a common parent directory:

projects <or anything else>
  |-> wedding-planner 
  |-> wedding-planner-frontend 

Docker compose

Docker compose is the recommended way to run Libre Wedding Planner for development purposes. After downloading both repositories, cd to the root of wedding-planner and run:

docker compose up --build

Several containers will be started:

  • backend: starts a Rails server that will act as an API.
  • workers: starts a runner of solid queue that takes .care of async tasks.
  • frontend: starts a NextJS application in charge of the frontend.
  • nginx: A reverse proxy that the backend and frontend under the same domain, and routes all requests to the upstream services.
  • db: A Postgres instance used by the backend service.

The backend service will seed the database with fake data. It's worth noting that the Postgres container does not have a volume, so the application will be seeded every time the container is created.

The backend, frontend and workers have hot-reloading enabled, so changes made to the codebase should be reflected in the application on the next request.

Once all containers have started, visit http://libre-wedding-planner.app.localhost/default/dashboard to load the application.

Multitenancy

LibreWeddingPlanner is designed to manage multiple weddings in a single host. All URLs (in the API and the frontend) are scoped under a slug that is unique per wedding. The slug is made of lowercase letters, numbers, and dashes (-).

The development environment is seeded with a wedding whose slug is default.

Email delivery

In the development environment, real emails will not be sent. You can visit http://libre-wedding-planner.app.localhost/letter_opener/ to get a list of emails generated by the application.

Testing

Unit tests can be executed with

bundle exec rspec

API documentation

Generate the OpenAPI documentation with the command:

rake rswag:specs:swaggerize

The documentation is available in Swagger UI in http://libre-wedding-planner.app.localhost/api/api-docs/index.html. If testing the API through the UI, you will need to select the second server (which includes the /api path), intended for development.

Contributing

Contributions of all kinds (code, UX/UI, testing, translations, etc.) are welcome. The procedures to contribute are still being defined, but don't hesitate to reach out in case you want to participate.

License

This project is licensed under the GNU Affero General Public License (AGPL). Check COPYING.md for additional information.

Description
No description provided
Readme 3.2 MiB
Languages
Ruby 93.5%
HTML 4.2%
Dockerfile 1.1%
JavaScript 0.7%
CSS 0.4%
Other 0.1%