How should I go for building an app for an animal shelter
Posted by Anxious-Rent-2414@reddit | learnprogramming | View on Reddit | 27 comments
Hey yall. I want to start coding and learn because I used to love coding in python in school a few years ago. I stopped because of covid and I was sick and dealing with a lot
Now I volunteer at a animal shelter and its a bit of a mess. We don't all know what animals we have in shelter or foster, paper written medication, paper written volunteer logs that get lost etc. I thought I could secretly try and make something that could help (secretly in case I fail).
How should I go about this? Any program references? Classes? Im trying to dip my toes back into coding or building an app while also helping a shelter that I think could benefit from this sort of application.
BIGR4ND@reddit
First, think about who will use the app and where. If it's just you on one computer, the easiest way is Python with Flask. Flask lets you make a simple website to view and edit data, and SQLite can store everything in a single file. You will need a backup plan for the database, but it's simple and doesn't require a server.
If multiple people need access at the same time, you will need a server and a proper database. Node.js lets you run JavaScript on the server to handle multiple users. A NoSQL database like MongoDB is easier than SQL for beginners because you don't have to plan tables and relationships in advance. You can just add new fields as you go (Useful if they later need to add random stuff they forgot to mention). An online database just means the database lives on a server everyone can access, but it requires hosting, security, and backups. There are generous free tiers but it adds complexity.
For now, start small with Flask and SQLite on your own computer. Focus on the key features, tracking animals, medications, and volunteer logs. Once it works, you can think about scaling it with Node.js and MongoDB if more people need access or using something like Pymongo to keep using your Flask app instead of redoing it in Node.js.
Anxious-Rent-2414@reddit (OP)
Thank you for this thought out responseee. Yeah multiple people will use it so I have to put that into consideration especially because for the safety of the animals, it should be recorded who did what.
So what I understand is that use Java. Im a bit confused about Node.js if I do that after I use Java. Someone recomensd Django. Any thoughts on that?
I think this would be a good startup process. Im writing what you said down in my notes :)
BIGR4ND@reddit
There are many ways to build a web app, and I recommend making this a web-based app rather than a native desktop app. Web apps are easier to develop, debug, and use, especially if multiple people need access.
Since you have some Python experience, Flask is a good starting point. It's minimal but powerful, and great for a demo or small project. Django is another Python option, it comes with more built-in tools like authentication, database connections, and admin interfaces. It's not much harder than Flask, but slightly heavier. If your goal is to relearn coding and make a working demo, Flask is simpler to start with, but Django also works if you want more structure from the start.
You could use Java, C#, or other languages, but they tend to be more complicated for beginners. They require learning concepts like MVC or object-oriented programming upfront, and setting up the environment can take a lot of time. For your goal Python frameworks are faster to get results.
Since multiple people will use the app and you want to track who does what, you need to think about hosting and scale.
If it's small organization, and a single location, keep it simple. You could host the app and database on a local machine, like a Raspberry Pi, using the local network. Focus on building the app and authentication first. Add a simple backup plan, like syncing the database to a cloud drive. This is cheap, easy to manage, and enough for a small team.
If there are multiple locations or potential future growth, you'll need a server and an online database so everyone can access the app remotely. Both Django and Node.js are good choices here. Django lets you stick with Python, while Node.js (with JavaScript) has many tools for scaling and deployment. Node.js can be easier to scale later, but requires learning JavaScript and frameworks like Express.js or Next.js.
If I were you, I’d start with Flask to build a simple version and make sure it works. Then make a list of requirements: what data needs to be stored, how often new information is added, whether records need to feed into other systems, and the budget for hosting or a local machine.
For the database, MongoDB is flexible and easy to add new fields, but can lead to inconsistent data. SQL databases like MySQL or PostgreSQL are stricter, you have to define the structure up front, but they prevent inconsistencies. Both options work; it just depends on how you want to manage the data. I would start with MongoDB for the demo, and then migrate to SQL after I get all requirements down which can take a while.
Embarrassed-Lion735@reddit
For multiple users and tracking who did what, go with a Django + PostgreSQL web app first.
- Models: Animal, Intake, FosterPlacement, Medication, Dose, Volunteer, ShiftLog.
- Use Django Admin for instant CRUD, then add simple forms.
- Install django-simple-history or django-auditlog to record who changed what and when.
- Roles: Admin, Staff, Volunteer; lock writes to staff-only, volunteers view-only.
- Deploy on Render/Fly/Railway with managed Postgres; enable automated daily backups.
- Import the paper data via CSV exports; write a small management command to clean duplicates.
- If you later need internal dashboards, Retool or Appsmith can sit on the same database.
- Node path: Express + Prisma + Postgres works but you’ll juggle more parts; Java/Spring Boot is solid but heavy for a first project.
I’ve used Hasura for quick GraphQL APIs and Supabase for auth/storage, but DreamFactory saved time when I needed an instant REST API over a legacy MySQL/SQLite without writing endpoints.
Keep scope tight: ship animal intake, meds schedule, and volunteer logs first; expand only after it’s used. Start with Django/Postgres, then iterate.
Anxious-Rent-2414@reddit (OP)
Awesome ill do just that. I don't mind learning new languages and stuff. I know it might be complicated but I think this would be a great way to learn
Anxious-Rent-2414@reddit (OP)
And also, with Java, is there ways to make some stuff restricted?
BIGR4ND@reddit
In the database, sure. In the forms, yeah. In the authentication/authorization as well. Pretty much in everything. But this is the same for most frameworks/programming languages. With things like Java and C#, you will learn to do a lot of stuff, but then you will realize that you are learning stuff, not actually building the app, since you will first need to learn a ton of stuff just to start actually coding.
It's up to you.
CreativeStrength3811@reddit
Paper & Pen:
How shall it look like, what happens if the user clicks this button and so on… After you finished ALL Mockups, read about MVC. After that, decide for a Framework Like QT, Java, .NET. Draw UML diagrams. After you did all of this: Start coding.
Stock-Scratch-3456@reddit
mvc is so shit for python and outdated, assuming that's what op is doing since they mentioned python
CreativeStrength3811@reddit
And your recommended design pattern is….?
BIGR4ND@reddit
I only agree with the mockup part. Everything else is too overblown for something as simple as a basic CRUD app that will at most have a few tables. Literally any framework that allows you to connect to a remote SQL or NoSQL database would work just fine.
CreativeStrength3811@reddit
Maybe it is overblown. But OP obviously doesn‘t know about Software Design. Let him write just one data class, one controller for the view and let him build this into a nice application. This works easily, OP will learn a lot and boosts his ego.
Later just replace the data class with little spaghetti to manage a SQL database.
BIGR4ND@reddit
There's some truth to that, but unless they absolutely want this to be a Zero to Hero learning experience, I would just recommend the simplest solutions, so they actually try to code the app instead of worrying about code structure or how they should structure their classes or whatnot.
Anxious-Rent-2414@reddit (OP)
I DEFINETLY need to fully write down what I want everything to do
stormingnormab1987@reddit
Many different ways, if its in house only. Personally id use c# an winforms (or go WPF for a modern ui) with sql lite, but thats because im comfortable and familiar with it.
bravopapa99@reddit
u/BIGR4ND has good answers but I'd use Django, it has CRUD and -free admin pages- out of the box to let you enter new records, edit them and delete them. With Flask, you very often find yourself having to install package after package to do this so you might as well start with a good backend UI, this is based on personal experience of using both for a number of years, Django for 8 years straight now, I don't use Flask anymore unless it is for setting up a local "test API" service.
BeKindLovePizza@reddit
I was curious, so I went and read some Django documentation. It seems so slick! Will definitely be experimenting with it in the future. 🎉
bravopapa99@reddit
It's literally "batteries included" for admin and stuff.
Organic_Locksmith766@reddit
If you’re going to build a data base to keep track of animals, vaccines, medicines, etc….id recommend SQL and learn how to create a data base. It will be easy to update, and for what you’re using it for it should be pretty simple
jaypeejay@reddit
It’s spelled database, and what OP is describing does not in anyway sound easy.
They’re essentially describing an inventory management system with parts of a CMS mixed in.
OP, I applaud you for wanting to try to help, and I think it’s worth a shot, but if you really want to help you could probably research solutions that already exist. Then, once you see how those work you can use that inspiration to build your own.
Anxious-Rent-2414@reddit (OP)
I've heard of that! If I make it using that, can other people use it to input data? And can I by any chance make the app look manageable? Imma do more research SQL for sure
apocalypsebuddy@reddit
This could probably be spun up as a Django app since you’re familiar with python.
Anxious-Rent-2414@reddit (OP)
What's an Django app?
apocalypsebuddy@reddit
Fullstack framework to build web applications using Python. Very mature framework with tons of docs and support, videos, tutorials, whatever you need.
It’s a “batteries included” framework so you get database, user auth, etc built in so you can focus on building the app.
It’s a great place to start and fairly easy to learn imo, and it’s scalable and production ready.
One of my first “hello world” apps with Django was an animal shelter management app
Anxious-Rent-2414@reddit (OP)
Stupid question. Is web development include apps or like websites only?
apocalypsebuddy@reddit
It includes apps. A web app is an application that is accessed by logging in through the browser.
Instagram and Spotify are two big web apps that use Django!
Anxious-Rent-2414@reddit (OP)
Oh wow I didn't know this at all! This is super cool ill look into this
And yeah the paper is proving unreliable. Someone is always loosing something. If we had an app that tracks all the pets and medication as well as volunteer hours, that would save us