CSA/ACP/Solawi Admin is a web application to manage Community Supported Agriculture organizations:
- CSA (Community Supported Agriculture)
- ACP (Agriculture Contractuelle de Proximité)
- Solawi (Solidarische Landwirtschaft)
Learn more on csa-admin.org.
- Member management (status, contact information, etc.)
- Membership management (basket size, depot location, quantity, delivery cycle, etc.)
- Basket complements (delivery frequency, quantity, etc.)
- Online grocery store for additional product orders
- Advanced delivery cycle management (every two weeks, winter/summer, etc.)
- Basket content management (harvest-based quantity calculations, price monitoring, etc.)
- Bidding rounds for solidarity-based basket pricing (member pledges with min/max bounds)
- Automatic invoicing:
- memberships
- membership shares / annual fees
- invoice dispatch with QR code and SEPA reference numbers
- automatic payment statement import from bank accounts (EBICS 3.0/H005/BTF, BAS, bunq)
- overdue notices
- Activity participation management with member registration forms
- Transactional email and built-in newsletter system
- Multilingual support (en, fr, de, it, nl)
Need a demo or a specific feature? Contact me.
This application is currently used by more than 30 organizations in Switzerland, Germany, and the Netherlands, and manages more than 140,000 basket deliveries per year.
- Built with Ruby on Rails
- Multi-tenant architecture:
- tenant resolved from the configured request host
- one isolated SQLite database per tenant
- Asynchronous jobs handled by Solid Queue and Active Job (SQLite-backed)
- Transactional emails and newsletters sent via Postmark
- Tenant-local bank connections for automatic payment imports and EBICS 3.0/H005/BTF uploads; see
docs/bank_connections.mdfor manual console setup
Development requirements are managed with Mise 2026.7 or newer. Local development uses puma-dev over HTTPS.
-
Clone the repository.
-
Install and activate Mise, then install and configure puma-dev for your system.
-
Trust the project configuration and bootstrap the application:
mise trust mise bootstrap
This installs libvips and Poppler, the Ruby, Node, and Aube versions declared in
mise.toml, then runsbin/setup --skip-server. On Intel macOS, install libvips and Poppler through Homebrew first because Mise's Brew bootstrap supports Apple Silicon only. -
Update the generated
config/tenant.ymlwith your admin and member hostnames. -
From the repository directory, link the configured base domain to puma-dev. For the sample
my-domain.orgconfiguration:puma-dev link -n my-domain
-
Open the configured
admin_hostormembers_host, replacing its public top-level domain with.test. For example:admin.ragedevert.ch→ admin.ragedevert.testmembres.ragedevert.ch→ membres.ragedevert.test
Use the configured host rather than deriving it from the tenant name: host labels and domains vary between organizations. Admin and member portals have separate authentication contexts. The
acmetenant is test-only and is not available for local browser access. -
Sign in through the selected tenant's local admin host with an admin email for that tenant.
Useful commands:
- Run all tests:
bin/rails test:all - Check linting:
bin/rails lint:check - Auto-fix linting issues:
bin/rails lint:autocorrect - Run final validation:
bin/ci
Contributions are welcome.
Before starting substantial work (new feature, larger refactor), please contact me first so we can align on scope and implementation.
For smaller fixes and improvements, feel free to open a pull request.
- Thibaud Guillaume-Gentil (info@csa-admin.org)
For demos, support, or custom feature requests, contact me.
CSA/ACP/Solawi Admin is released under the O’Saasy License.