The website go-help-palestine.com collects and displays links to charities and individual donation campaigns to support the victims of a conflict that has been ongoing for over a year.
Despite its simplicity, the project is built with:
- Backend: Golang
- Frontend: React + TypeScript
- Styling: styled-component
- Deployment: Docker Compose
The set of dependencies is kept at bare minumum.
An informative conversation highlighting the importance of awareness and action. The author of this website was utterly convinced he could not make any difference, and thought there was no way to help except from what was being done by activists and donators of large amounts. He then had the chance to speak with a couple of friends and, luckily, changed his mind.
Display a list of verified charities and donation campaigns. Such list is being taken care of by @sammyobeid and is publicly available on this Google Sheet.
ℹ️ Should you find anything wrong with that list, or should you have any contribution you want to bring to it, feel free to use the contact form on the website, or send an email to yourpalcharities AT gmail DOT com!
User-friendly interface for easy navigation and contribution. The design is extremely simple (any kind of contribution will be appreciated) and the dependecies list is kept at bare minumum.
-
Clone the repository
git clone https://github.com/luca-arch/go-help-palestine.git cd go-help-palestine
-
Start the application
docker compose up --detach docker compose logs -f
That's it! The website can be accessed via localhost:8080.
If you are actively developing, you can stop the Docker Compose deployment and run the services individually.
- Backend: cd into the go-application folder and run
go run cmd/server/main.go
. - Frontend: cd into the react-application folder and run
npm install && npm run dev
. Make sure you have Node 20.16.0 or higher installed.
If you want to enable Telegram notifications (otherwise whatever is sent via the Contact Form is only logged to the console), you are going to need to update the TG_BOT_TOKEN
and TG_CHANNEL
variables in the docker-compose file - or you can simply create a new docker-compose.override.yml
file!
To create a bot and a channel/group:
- Create a new Telegram private group, following these instructions.
- Send a message to BotFather to create a new Telegram bot (it's super easy).
- Send another message to IDBot to retrieve your new bot's Token and the private group's ID, you will need these in the fifth step!
If you want to contribute to the cause (not only the repo), use the contacts form!
Pull requests are welcome too, see the existing commits list and make sure you understand what all those emojis mean!
The backend application, written in Go. It's split up into smaller modules and uses dependency injection so it can be later extended without too much refactoring.
There is a nice Makefile with a few commands to run tests, code coverage, and generate docs. Run make
to display the full list of available commands.
The SPA that renders the whole website. The site's content and HTML were simple enough not to require an SPA (to be honest, it did not even require any server-side rendering either), but React and TypeScript are so much fun.
Other than npm run dev
, there should not be any particular command required to work with the SPA, although the package.json file does contain some.
- Use Docker to orchestrate the individual apps
- Validate the links scraped from the Google Sheet, some of them are already returning a 404 and should not be exposed.
- Add a click counter to prioritise less successful campaigns. There are almost 200 individual campaigns already!
- Add tests!
- Check UI on OSX browsers.
- Check UI on older Android Phones.
- Check UI on iOS tablets.