Adopt Don't Shop is a pet adoption platform designed to connect potential pet adopters with rescue shelters across the United States. With an engaging and intuitive user interface, users can search, filter, and favorite pets to find their perfect companion while promoting ethical pet adoption practices.
- Search for adoptable pets by type, breed, age, gender, and location.
- Dynamic filtering to refine search results.
- Pagination support for seamless browsing.
- Save pets to a Favorites list for later consideration.
- View & manage favorite pets in a dedicated section.
- Favorites are persisted using local storage.
- Modern, comic-book inspired UI reflecting a vibrant and engaging design.
- Fully responsive across desktop, tablet, and mobile devices.
- Fast-loading and accessible web experience.
- Fetches up-to-date pet listings from the Petfinder API.
- Ensures accurate and real-time adoption information.
- Frontend: React, TypeScript, Vite
- Styling: CSS Modules, Custom UI Design
- Data Storage: LocalStorage (Favorites persistence)
- API Integration: Petfinder API
Clone the repository and install dependencies:
git clone https://github.com/demaceo/adoptdontshop.git
cd adoptdontshop
npm install
Start the development server:
npm run dev
Open http://localhost:5173
in your browser.
npm run build
npm run deploy
📦 adoptdontshop
┣ 📂 src
┃ ┣ 📂 components
┃ ┃ ┣ 📜 Card.tsx # Pet card component
┃ ┃ ┣ 📜 Filter.tsx # Sorting & filtering UI
┃ ┃ ┣ 📜 Favorites.tsx # Favorite pets page
┃ ┃ ┣ 📜 Results.tsx # Search results page
┃ ┃ ┣ 📜 NavBar.tsx # Navigation bar
┃ ┃ ┗ 📜 Form.tsx # Search form component
┃ ┣ 📂 styles
┃ ┃ ┣ 📜 Card.css
┃ ┃ ┣ 📜 Filter.css
┃ ┃ ┗ 📜 GlobalStyles.css
┃ ┣ 📜 App.tsx # Main App Component
┃ ┗ 📜 main.tsx # Entry Point
┣ 📜 package.json # Dependencies & Scripts
┣ 📜 vite.config.ts # Vite Configuration
┗ 📜 README.md # Project Documentation
This project integrates with the Petfinder API to fetch real-time pet adoption listings.
Before making requests, you need an API key from Petfinder:
- Sign up at Petfinder Developer.
- Retrieve your API key & secret.
- Store your credentials in an
.env
file:VITE_PETFINDER_API_KEY=your_api_key VITE_PETFINDER_API_SECRET=your_api_secret
Example API request to get adoptable pets:
fetch("https://api.petfinder.com/v2/animals", {
headers: {
Authorization: `Bearer ${accessToken}`,
},
})
.then(response => response.json())
.then(data => console.log(data.animals));
We welcome contributions! Follow these steps to contribute:
- Fork the repository.
- Create a feature branch (
git checkout -b feature-new
). - Commit your changes (
git commit -m 'Added new feature'
). - Push to your branch (
git push origin feature-new
). - Open a Pull Request!
If you encounter bugs or issues, please open an issue on GitHub.
This project is licensed under the MIT License.
- Teyana Taylor's mansion design for UI inspiration.
- Petfinder API for real-time pet data.
- Open-source community for tools & libraries.
🐾 Start your adoption journey today with Adopt Don't Shop! 🚀