This is a site for getting information on how to give help to Ukrainians or seek help as a person affected by the war.
The site crowdsources managing listed causes, translating the site and developing it further.
The project relies on the community to maintain the project and develop it further. You can take part here in Github, by sharing the site or if you want to be more involved you can contact the maintainers✌🏻
The easiest way to take action is to vote on the most valuable causes straight in the site. Other options are suggesting new causes through Google Forms or Pull Request or providing new translations.
The context and plans of the site are explained in the Figjam file which is used for collaborating on the project. The Figjam file is open for comments!
All new causes are reviewed by a maintainer to provide a credible experience for all users.
Suggest a new cause by submitting a Google Forms. The Forms submissions are reviewed regularly by maintainers. You can see and comment all submissions at Google Sheets.
Add a new object to either give_causes.json or seek_causes.json depending on who the cause is meant for.
nameId
is used in translation files for defining that causes name. descriptionId
is used to define a one or two sentence explanation of the cause. link
is a direct link to the cause.
Add translations for the cause nameId
and descriptionId
by adding text content for each present translation file in lang folder.
Add a new locale to next.config.js. The locale format ISO 639-1 should be used.
Add a json
file with the name of the locale to lang. Copy the json
content from en.json and translate the text content for the new language.
Add a translation for the new language to existing languages by using the locale format as the json key.
The application is built with TypeScript, React and Next.js.
The user interface of the application is styled using tailwindcss.
The data is stored in json files under data and lang. This allows saving the data in a transparent way compared to a CMS or database. It also allows collaboration on those data sources without much prerequisites.
The reaction counts are stored in Firebase Firestore Database. The reactions are prefetched on server and refetched in the browser once a change to the database occurs.
Clone the repository
git clone https://github.com/PetroSilenius/assist-ukrainians
Change to the project directory
cd assist-ukrainians
Install project dependencies based on lockfile
npm ci
Run the development server
npm run dev
Open http://localhost:3000 with your browser to see the result.
Run linter on all files
npm run lint