Some checks failed
		
		
	
	Run unit tests / copyright_notice (pull_request) Successful in 52s
				
			Run unit tests / rubocop (pull_request) Failing after 1m4s
				
			Run unit tests / check-licenses (pull_request) Successful in 1m27s
				
			Run unit tests / unit_tests (pull_request) Successful in 1m51s
				
			Run unit tests / build-static-assets (pull_request) Has been skipped
				
			
		
			
				
	
	
		
			103 lines
		
	
	
		
			3.5 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
			
		
		
	
	
			103 lines
		
	
	
		
			3.5 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.
 | |
| 
 | |
| Please, include this in your `/etc/hosts` file:
 | |
| 
 | |
| ```
 | |
| 127.0.0.1 libre-wedding-planner.app.localhost
 | |
| ```
 | |
| 
 | |
| 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.
 | |
| 
 |