97 lines
3.4 KiB
Markdown
97 lines
3.4 KiB
Markdown
# 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](https://gitea.bustikiller.com/bustikiller/wedding-planner-frontend/)), 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:
|
|
|
|
```bash
|
|
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](https://github.com/rails/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](./COPYING.md) for additional information.
|
|
|