This web application was created originally in 2019 to help nonprofit animal adoption foundations in Mexico automate certain parts of their adoption process, to help them reduce load on their volunteer team.
The solution was conceived to be an animal catalog with instant search (powered by MeiliSearch) where people could find animals currently looking for a home, which could be filtered instantly to find certain breeds, sizes, unique characteristics, etc. that would help the animal find a suitable home.
Authentication is done using JWT and a Go server that handles routes and connection to the database. An admin dashboard allows administrators to create and modify the animal care articles in the site.
In addition, the site includes an AI assistant (powered by Rasa(https://rasa.com/)) which answers common questions about animal care. The idea behind this is to divert the most common questions to an assistant and help the volunteer team save their precious time for other, more pressing tasks.
The site includes all the information in form of articles and the assistant helps by giving concise answers. The assistant was trained to give a tailored response depending on the breed of the cat or dog the user asks about. It will respond with information about common problems, nutrition tips and breed-specific instructions.
The web application is designed with purely open-source tools, using:
- Meilisearch for instant search
- MongoDB Community Edition for storing animal records
- MinIO as an object store for all images in the site and user-uploaded images
- Rasa For training the assistant
- Thumbor for on-demand image resizing and cropping
The only part which is not open souce is the EmailJS integration.
Using a mostly open source stack makes the operation costs as cheap as possible, and provides the ability to self-host, making it easy to deploy on volunteer-run servers.
A rough diagram of the application:
This application was made a few years ago when the team was beginning to work on web applications, so it contains certain practices that might not hold up to the best standard today. However, the code is now open sourced to keep a record of the progress the team has made since then, and to showcase the design and ideas which were incredible at the time. We also hope this project can inspire other initiatives to help nonprofit foundations using open source software.