Reviewed-on: #202
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.