🐾 The Journey of Building AnimalRescue Portal: A Story of Grit, Learning, and Second Chances
What Inspired Me?
It started with a simple, heartbreaking image: a stray dog limping outside my apartment during a rainstorm. I tried calling local shelters, but the process was fragmented, slow, and impersonal. That’s when I thought, what if there was a platform where people could report rescue requests instantly and notify volunteers in real time?
I wanted to build something that gave voiceless animals a fighting chance. But there was one problem: I had no idea how to build it.
The Early Days: Code, Chaos, and Coffee
When I started, my coding toolkit was a shaky grasp of Python and SQL. My first “app” was a CLI program that printed “Hello, stray dog!” 😅. Then I met my team:
Abdul Mueed (Me, the Backend Maestro):
I dove headfirst into Django, crafting models, views, and APIs to bring our rescue portal to life. Alongside mastering the backend, I built automation bots with Selenium Python and fine-tuned our database interactions—ensuring every rescue request was processed efficiently.Ali Mardan (Frontend Wizard):
He transformed my rudimentary HTML forms into polished, modern interfaces. While I wrestled with Python code, he tamed CSS grids and banished those pesky !important hacks with style.Abdul Aziz (Database Dynamo):
Our resident data architect, Abdul Aziz reimagined our database structure to optimize performance and scalability. His knack for efficient queries and data integrity turned our raw ideas into a robust, high-performing backend.Zain Jamali (UI/UX Stickler):
“Why is the button purple?” he’d chide, pushing us toward a user-centric design that balanced form and function. His insistence on an intuitive interface made sure our app wasn’t just functional but also a delight to use.
We’d code in cramped dorm rooms, fueled by instant noodles and late-night brainstorming sessions. I’d write Django models by day, automate tests with Selenium by night, and continuously tweak our database for peak performance.
What Did I Learn?
Django:
- Built my first full-stack app, discovering the intricate dance between models, views, and templates.
- Spent hours wrestling with authentication until users could reliably log in and submit forms.
- Built my first full-stack app, discovering the intricate dance between models, views, and templates.
Firebase & Web Push Notifications:
- Cried over ServiceWorker errors for three long nights.
- Learned the ins and outs of VAPID keys, FCM tokens, and the delicate balance between foreground and background messages.
- Cried over ServiceWorker errors for three long nights.
Frontend Basics (HTML/CSS):
- My early buttons looked like relics from 1999 until our frontend maestro redesigned them.
- Discovered that flexbox can be both a blessing and a curse in equal measure.
- My early buttons looked like relics from 1999 until our frontend maestro redesigned them.
Debugging & Automation:
- Learned that 90% of coding is deciphering cryptic error messages (yes, “Uncaught ReferenceError: firebase is not defined” was a frequent visitor).
- Developed automation bots using Selenium Python to streamline repetitive tasks and ensure our processes ran like clockwork.
- Learned that 90% of coding is deciphering cryptic error messages (yes, “Uncaught ReferenceError: firebase is not defined” was a frequent visitor).
How We Built It
The project evolved in phases:
The “Naive Optimism” Phase:
- Wrote a Django model for rescue requests. Felt like a genius when submissions started saving to the database.
- Wrote a Django model for rescue requests. Felt like a genius when submissions started saving to the database.
The “Why Is Nothing Working?!” Phase:
- Tried integrating Firebase and broke the app 17 times.
- Service workers refused to register, and console logs became our daily torment.
- Tried integrating Firebase and broke the app 17 times.
The “Breakthrough” Phase:
- Finally received a notification on my phone at 3 AM that worked as intended—my triumph (and my roommate’s wake-up call) all in one.
- With the team’s help on styling and debugging, our app began to look and feel like a real solution.
- Finally received a notification on my phone at 3 AM that worked as intended—my triumph (and my roommate’s wake-up call) all in one.
The “It’s Alive!” Phase:
- Real users started submitting rescue requests, and volunteers responded in minutes.
- The app wasn’t just code—it was a lifeline for animals in need.
- Real users started submitting rescue requests, and volunteers responded in minutes.
Challenges That Almost Broke Us
Firebase Initialization Hell:
- That cursed error: “Default Firebase app already exists.” A teammate’s quick check saved the day.
- That cursed error: “Default Firebase app already exists.” A teammate’s quick check saved the day.
Service Worker Scope:
- The service worker only worked if placed in the root directory. It took two days of trial and error to figure out.
- The service worker only worked if placed in the root directory. It took two days of trial and error to figure out.
Token Expiry & Permissions:
- FCM tokens expired silently, prompting us to add a cron job to clean up the old ones.
- FCM tokens expired silently, prompting us to add a cron job to clean up the old ones.
Team Coordination:
- Merging code without conflicts felt like defusing a bomb. Git quickly became both our savior and our frenemy.
The Future: Scaling Hope
This isn’t the end—it’s just the beginning. Here’s where we’re headed:
Partner with NGOs & Volunteers:
- Collaborate with local shelters to integrate their networks. Imagine a live map showing rescue requests and available volunteers in real time.
- Collaborate with local shelters to integrate their networks. Imagine a live map showing rescue requests and available volunteers in real time.
Mobile App:
- Because not everyone works from a desk. A React Native app will let users report emergencies on the go with real-time GPS tracking for responders.
- Because not everyone works from a desk. A React Native app will let users report emergencies on the go with real-time GPS tracking for responders.
AI Integration:
- Use image recognition to assess injuries from uploaded photos (for example, detecting a fractured leg).
- Develop chatbots to guide users through emergency procedures while help is on the way.
- Use image recognition to assess injuries from uploaded photos (for example, detecting a fractured leg).
Community Building:
- Launch a forum for volunteers to share success stories, resources, and support—because saving animals takes a community effort.
Why This Project Matters
Every time a notification goes out, it’s a lifeline for an animal. This project taught me that coding isn’t just about syntax—it’s about solving real-world problems, even when you’re buried in a minefield of errors.
I started as a newbie who didn’t know what a <div> was. Today, I’ve built a tool that saves lives—and honestly? That’s the best debug message I could ever ask for.
To anyone struggling with their first project:
You’ll want to quit. You’ll question your life choices. But when it finally works, you realize that you’re unstoppable. 🚀
– A former newbie who now (sort of) knows how to Google



Log in or sign up for Devpost to join the conversation.