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.
Admin Tool | Website | Mobile App | |
---|---|---|---|
![]() |
![]() |
![]() |
|
Purpose | Make it simple to manage payments, contributors and recipients | Raising donations and inform the public | Make it simple for recipients to manage payments and surveys |
Instructions | Readme | Readme | Readme / Contributing |
Localhost | localhost:3000 / 4000 | localhost:3001 | – |
Staging | staging-admin.socialincome.org | staging.socialincome.org | Testflight / App Distribution |
Production | admin.socialincome.org | socialincome.org | iOS / Android |
Issues | Open issues | Open issues | Open issues |
-
Choose an issue and leave a comment that you'd like to work on it (upon we assign it to you)
↗
All issues↗
Help wanted↗
Good first issues -
Setup the basic development environment (see below)
-
Clone the repo and work on it
-
Make a PR and wait for review - it will be merged by team if approved without comment
-
Your code is now merged into
main
branch and deployed on the staging environment (Admin Tool / Website) -
Your code is then released on the production environment with the next release
Frontend developers: You can also develop UI components with Tailwind CSS and shadcn/ui independent of the website (Readme / Contributing). The components are all collected in our Storybook.
We are mainly leveraging the following tools:
- Firestore for data management
- Firebase Authentication for user management
- Firebase Hosting to serve static content, such as the admin app
- Vercel for website hosting
- Firebase Functions to run backend code in a serverless framework
- Firebase Storage to store documents and other files
- Firebase Emulators for the local dev environment
Make sure you are using Node.js 18. If you are using Homebrew, you can
install it with brew install node@18
and follow
this
guide to switch between different versions of Node.js if need be.
npm install
Initiate development environments for specific tools as needed.
- Always start the Firebase emulator first with
npm run firebase:serve
— console dashboard is available at localhost:4000. - To start the Admin Tool, run
npm run admin:serve
and open localhost:3000. - To start the Website, run
npm run website:serve
and open localhost:3001. - To start the Storybook, run
npm run ui:serve
and open localhost:6006. (currently broken)
The package.json file gives you a good overview of the available commands. For more information on the development environment see table above. No production credentials are needed for local development.
Developer Login for Admin Tool
Localhost Admin Tool Login (Link)
Choose "Sign in with Google" and select the listed "Admin (admin@socialincome.org)" account.
Staging Admin Tool Login (Link)
Contact the dev team (dev@socialincome.org) which can assign you access rights to login.
Production Admin Tool Login (Link)
Only selected people from the SI team have access.
Developer Login for Website (Donor Dashboard)
Localhost Website Login (Link)
- Go to the Login page and select
- Sign in with username test@test.org and password test@test.org
Staging Website Login (Link)
To create a donor account in the staging environment, proceed through the donation process. Utilize the Stripe test card (4242 4242 4242 4242) for making a test donation.
Production Website Login (Link)
Only actual donors have accounts and can log in. Consider making a (symbolic) donation to create your own account.
An initial set of data is imported into the Firebase emulators during
startup of the Admin Tool. You
can add, delete or amend data directly in your local Admin Tool
(localhost:3000) or in your local Firestore
Admin Interface
(localhost:4000). After you have
made changes, you can export the data to the seed folder with
npm run firebase:export
.
We are using Prettier to format the code:
npm run format-code
Staging deployments: PRs merged into main
are automatically
deployed to staging
(Admin Tool /
Website) upon core developer
approval. Check Github Actions for details.
Experienced contributors can deploy directly
without approval.
Production deployments: Deployments are made by core developers via
GitHub releases.
Use "release-YYYY-MM-DD" for the release name
(example:release-2021-02-27
). For multiple releases on the same day,
append ".2", ".3", etc. (example:release-2021-02-27.2
).
We have a function which triggers hourly backups of our production firestore database. The exports are saved to the social-income-prod bucket with a retention period of 30 days. To restore the database you can import the most recent folder directly from the social-income-prod bucket.
You can report an issue or request a feature on our issue page. If you want to report a vulnareablity please refer to our security policy.
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, 1Password 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.