An app to catalog the cats that come to my house.
A simple web app that ingests clips from an S3 bucket, uses machine learning to detect if a cat is in the clip, and displays the results in a web UI for a user to assign which cat is in the clip. The UI shows a history of clips and when each cat was spotted.
My wife really likes feeding stray cats.
This application is not production ready. Everything is subject to change. A reasonable amount of this project was generated by Claude Code, so there's some slop.
Do not publicly expose this application! There is no authentication and clips in your S3 bucket can be arbitrarily called
Cat Catalog consists of 3 components:
- Detect Worker uses OpenCV and the YOLOv8m model to look for cats in clips and adds them to the catalog. There is a CUDA-accelerated container in addition to one that uses CPU.
- Catalog is the backend service that interacts with the database.
- Web is the frontend service. The web UI is a static site served by nginx using only vanilla JS.
A PostgreSQL database and S3-compatible object storage are also required to use this application.
This program is designed to run using OCI containers. There is an example docker-compose.yaml to run Cat Catalog.
- Reduce resource consumption (the entire application uses almost 1GB of memory, not nessessary)
- Make it so it can be "safely" publicly exposed
- Clean up some DB calls and access to the bucket
- Implement authentication
- Refine machine learning (its not very accurate, lots of false positives)
- Add functionality for automatically guessing the cat based on saved clips.
