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.
-
Clone the repository.
-
Install and activate Mise.
-
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. -
Start the server:
bin/dev
-
Open the configured
admin_hostormembers_host, replacing its public top-level domain with.localhostand using port3000. For example:admin.ragedevert.ch→ http://admin.ragedevert.localhost:3000membres.ragedevert.ch→ http://membres.ragedevert.localhost:3000
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:
- Bootstrap / refresh the local environment:
mise bootstraporbin/setup --skip-server - Start the app:
bin/dev(http://admin.<sld>.localhost:3000) - Update toolchains and dependency lockfiles (
bin/update; also syncs Ruby/Herb pins) - Run all tests:
bin/rails test:all - Run final validation (setup, style, security, tests, seeds):
bin/ci - Run part of the CI workflow declared in
config/ci.rb:bin/ci -g style/bin/ci -g security/bin/ci -g testsbin/ci -s "Style: RuboCop"(exact step title; case-insensitive)bin/ci -hfor all options
- Individual linters/formatters remain available (
bin/rubocop,bin/locales,bin/herb, …)
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.