Social.Income.explained.mp4
Social Income is a radically simple solution in the fight against poverty. The global open-source initiative converts donations into an unconditional basic income, which is sent directly to the mobile phones of people living in poverty in the Global South.
Welcome to the Social Income monorepo.
/
├─ recipients_app/ → Mobile app for recipients
├─ recipients_selection/ → Verifiable draw process for selecting recipients
├─ seed/ → Firebase emulator seed data
├─ ui/ → Legacy Storybook component library
└─ website/ → Next.js (public site, portal, dashboard, infra, backend services)
Mobile app where recipients can:
- Log in
- View payment history
- Complete surveys
See /recipients_app/README.md for platform‑specific setup.
Implements the cryptographically verifiable and bias‑proof recipient draw:
- Raw recipient lists → salted → hashed → committed to
/lists - GitHub Action triggers
draw.sh - Draw randomness comes from drand → https://drand.love
- Results written to
/draws - Draws are reproducible using dchoose → https://github.com/drand/dchoose
- Full transparency explanation:
https://socialincome.org/transparency/recipient-selection
Contains seed data for the local development environment:
- Firebase Authentication Emulator
- Firebase Storage Emulator
Automatically imported when running mise dev.
Legacy UI component package using:
- Tailwind CSS
- shadcn/ui
📘 Storybook preview: http://design.socialincome.org
The long‑term plan is to phase this out and maintain all components
inside /website.
A Next.js project containing:
- Currently partly hardcoded
- Migration underway → Storyblok CMS
- Journal already uses Storyblok
Docs: https://www.storyblok.com/docs
Internal operations tool:
- Program management
- Payments & transfers
- Recipients & contributor tools
- Admin functions
Contributor self‑service area:
- View payments
- Manage subscriptions
- Update personal details
Infrastructure-as-code via Terraform:
- GCP Cloud Run
- GCP Cloud SQL (PostgreSQL)
- Networks, service accounts, secrets, etc.
Docs: https://developer.hashicorp.com/terraform/docs
Shared backend modules using:
- Prisma ORM → https://www.prisma.io
- PostgreSQL
- Firebase Storage
- Misc. utilities and API integrations
We use:
- mise-en-place → https://mise.jdx.dev
- Docker (for PostgreSQL)
- Firebase Emulators
- Node.js + npm
- Terraform (infra work only)
brew install mise
mise install
Inside /website, copy the sample file:
cp website/.env.local.sample website/.env.local
Edit values as necessary.
mise dev
This starts:
- Local PostgreSQL via Docker Compose
- Firebase Emulators (Auth + Firestore + Storage)
- Next.js website (public site, portal, dashboard)
Useful commands for copying local DB → staging (or vice versa).
pg_dump -Fc --no-owner "postgresql://social-income:social-income@localhost:5432/social-income" > local.dump
pg_restore --clean --if-exists --no-owner -d "postgresql://staging-website_google_sql_user:xxxx@yyyy:5432/staging-website-google-sql-database" local.dump
- Read the Storyblok docs → https://www.storyblok.com/docs
- Set env vars in
website/.env.local:STORYBLOK_PREVIEW_TOKENSTORYBLOK_PREVIEW_SECRET
- Optional: run SSL proxy for live preview
npm run dev:ssl-proxy
rm -rf website/.next
mise dev
npm run firebase:export
Become a contributor of Social Income (tax-deductible in Switzerland).
Become a sponsor and help ensure the development of open source software for more equality and less poverty. Donations through the GitHub Sponsor program are used for building a strong developer community.
Social Income is a non-profit association (CHE-289.611.695) based in Zurich, Switzerland. Connect with us X, Insta, LinkedIn, Facebook or by email.
We believe that transparency builds trust and trust builds solidarity. This is why we disclose our finances to the public.
Open Source isn’t an exclusive club. It’s made by people just like you. These individuals, amongst many others, have made significant contributions to Social Income's success:
We receive in-kind donations from Google Nonprofit, GitHub, Codemagic, Linktree, Twilio, Algolia, JetBrains, Storyblok, 1Password, Mux, Sentry and Lineto. Our tools also leverage other open-source technologies, including solutions like FireCMS, Storybook and Tailwind CSS.
This project is licensed under MIT, with the exception of the Unica77 font, which is exclusively licensed to Social Income.

