diff --git a/README.md b/README.md index 7db80e4..4d4f615 100644 --- a/README.md +++ b/README.md @@ -1,24 +1,78 @@ -# README +# Libre Wedding Planner -This README would normally document whatever steps are necessary to get the -application up and running. +Libre Wedding Planner is Free, Open Source Software that helps organize several aspects of a wedding. -Things you may want to cover: +The project is not production-ready yet. -* Ruby version +## Features -* System dependencies +The follwing features are either developed or under active development: -* Configuration +- Guests management +- Expense management +- Seating chart -* Database creation -* Database initialization +## Next steps -* How to run the test suite +Some ideas we would like to implement next: -* Services (job queues, cache servers, search engines, etc.) +- Authentication (required to make an instance public) +- Website with wedding information +- Attendance confirmation forms +- Multitenancy -* Deployment instructions +# 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 + |-> 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 build +docker compose up +``` + +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/dashboard to load the application. + +## Testing + +Unit tests can be executed with + +``` +bundle exec rspec +``` + +## 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. -* ...