New contributors may want to review the Zinc contribution guide to ground themselves in the norms we try to follow across projects.
Convene
is as a multi-user, multi-application web-first Operating System.
Convene's design strategy leans heavily into Outcome-Driven Innovation, Accessibility, Usability, and Data Portability. Interoperability is offered by embracing open protocols like Hypermedia as the Engine of Application State (HATEOAS). Quality and Changeability is maintained by performing Test-Oriented Development, Continuous Deployment, and Domain Driven Design.
Stakeholders for Convene
fall into one or more of the following categories:
Clients
, who are the legal owners of the data of theirSpaces
in aNeighborhood
.- [
Members
], have broad authority overSpaces
and their [Furniture
]. They are also responsible for [Visitor
: Support], [Visitor
: Trust & Safety], [Member
: Support], and [Member
: Trust & Safety]. - [
Visitors
], who accessSpaces
and their [Furniture
] according to [Member
] specification. Operators
, who steward the [Neighborhood
: Infrastructure], [Neighborhood
: Trust & Safety], and [Client
: Support] responsibilities- [
Contributors
] and [Maintainers
], who design and build [Furniture
].
Note: Furniture
has been renamed to Gizmo/Gizmos
.
Contributing to Convene benefits from fluency with the following tools:
- For Data Storage and Retrieval: PostgreSQL, Redis, and an [S3-compatible] file store.
- Servicing HTTP Requests is done with [Ruby on Rails].
- Background Jobs are performed by [Sidekiq].
- The User Interface is Server-Side Rendered [
Components
] implemented using [ViewComponent] styled by [Tailwind] and with interactivity provided by [Turbo] and [StimulusJS].
We auto-generate an ERD from our Domain Model.
Generate an updated ERD via:
bin/erd
To set up your development environment you'll need ruby
, node
and
postgresql
. If on Windows using WSL2, please see this document.
First, ensure your development environment has:
- Ruby (See .ruby-version for version)
- Node (See .nvmrc for version)
- Yarn
- PostgreSQL
- Redis
(Note: If you use Docker, a docker-compose.yml file has been included with PostgreSQL and Redis for convenience.)
Then, run bin/setup
to install Ruby and Node dependencies and set up the
database.
Once setup completes, configure your local development environment.
- Open
.env
and make any changes.
Once you have completed configuration; run bin/run
. You now should be able to open
http://localhost:3000 and see Convene.
Log in with space-member@example.com. You can check the email using http://localhost:1080.
Finally, with the server still running (perhaps in a different terminal), run
bin/test
to ensure that your development environment is configured correctly.
Set SMTP_* environment variables to configure Action Mailer.
To preview mailers, visit http://localhost:3000/rails/mailers/
For more information about Rails's ActionMailers, see this guide.
To run pry
or byebug
, run bin/connect web
.
The devcontainer workflow was disabled on 2024/05/22, see #2415 for rationale. If you want to re-enable it, let one of the maintainers know.
We have setup a developer container environment using VS Code's Dev Containers extension. Please see this document for instructions on using.
See the Testing documentation.