Welcome to openAnimalRescue! 🐶🐱 An open-source project dedicated to empowering animal rescue organisations by providing powerful tools for organising animal information and standardising adoption processes.
🌟 Vision: To empower animal rescue organisations to better manage their information and streamline their adoption processes.
🎯 Mission: To deliver these tools as quickly as possible, enabling organisations to provide feedback and contributions, thereby enhancing the system for everyone's benefit.
openAnimalRescue is built using the AWS CDK framework and TypeScript, making it a robust, approachable, and scalable backend solution. The backend is decoupled from the frontend, allowing you to integrate it with the frontend of your choice. You can start with the backend and then focus on the frontend in any order that best suits your project.
The data layer is built using DynamoDB. After considering the pros and cons of SQL vs. NoSQL, I decided to take a more agnostic approach and start with DynamoDB. This offers the advantage of getting up and running quickly with minimal setup costs. DynamoDB provides generous free usage, making it a cost-effective choice for organisations starting out.
That said, I highly recommend following the AWS Well-Architected Framework when setting up your AWS account, especially the Cost Optimization pillar. Be sure to set up cost alarms—both a static threshold based on your budget and a dynamic threshold based on average usage. Keeping both alarms active ensures you’re aware when you're trending over budget or significantly deviating from expected costs.
As the project evolves, and depending on community feedback, we may explore more configuration-driven approaches that could allow flexibility in database choices, including relational systems like Postgres, for those who prefer a more structured approach.
- 🚀 Serverless Architecture: openAnimalRescue is designed to be highly scalable and cost-efficient using serverless technologies.
- ☁️ AWS Deployment: By default, openAnimalRescue is optimised for deployment on AWS, leveraging the power of DynamoDB for fast and flexible data storage.
- 🔧 Extensibility: Developers can easily extend and adapt the codebase to deploy on other cloud providers or infrastructures.
- 🔄 Clone the Repository:
git clone [email protected]:jordlevy/openanimalrescue-backend.git
- 📦 Install AWS CDK:
npm install -g aws-cdk
- 🚀 Deploy to AWS:
cd openanimalrescue-backend # cdk bootstrap aws://<your target AWS account ID here>/<your preferred region here> (only if needed) # i.e. cdk bootstrap aws://111222333/eu-west-1 npx cdk deploy
npm run build
compile TypeScript to JSnpm run watch
watch for changes and compilenpm run test
perform the Jest unit testsnpx cdk deploy
deploy this stack to your default AWS account/regionnpx cdk diff
compare deployed stack with current statenpx cdk synth
emits the synthesised CloudFormation template
Contributions from the community are welcome! If you have ideas, feedback, or code to contribute, feel free to get involved.
This project is powered by AWS CDK and DynamoDB. 💪 A big thanks to the AWS CDK team for making serverless applications accessible, and DynamoDB for enabling fast and efficient data handling.
This project is licensed under the GNU GPL v3 license, which specifically prohibits closed-source derivatives.
Enjoy!
All basic CRUD operations are now implemented, tested, and working! 🎉
In addition, filtering functionality has been improved for better search capabilities. You can now filter animals by species, and further narrow your search by breed and/or name. For example, you can search for a "dog," then refine the results to find a "Labrador" named "Goldy."
Feel free to test it out and explore the new search features!
Next I want to start on the Events and Locations, then comes Cognito.