A Full Stack web application that connects animal shelters with people looking to adopt a pet through a secure and scalable REST API.
Status: π§ In Development
- Quick Start
- Project Overview
- Features
- Tech Stack
- Project Structure
- System Architecture
- Database Design
- API Overview
- Authentication
- Roles
- Screenshots
- Demo
- Testing
- Future Improvements
git clone https://github.com/jacoEafit/FindMyPet.git
cd FindMyPetCreate a virtual environment
python -m venv venvActivate it
venv\Scripts\activatesource venv/bin/activateInstall dependencies
pip install -r requirements.txtCreate a file named
.env
Example:
SECRET_KEY=your-secret-key
DEBUG=True
DB_NAME=findmypet
DB_USER=postgres
DB_PASSWORD=postgres
DB_HOST=localhost
DB_PORT=5432python manage.py migratepython manage.py createsuperuserpython manage.py runserverServer:
http://127.0.0.1:8000
cd Frontend
npm install
npm run devThe application consists of three user roles.
- Register a shelter
- Publish pets
- Upload multiple images
- Manage adoption requests
- Browse pets
- View pet details
- Submit adoption requests
- Track request status
- Approve shelter creation requests
- Manage users
- Manage pets
- Moderate the platform
FindMyPet is a full stack application designed to simplify the pet adoption process.
Instead of using social media or spreadsheets, shelters can publish available pets, while adopters can browse them and submit adoption requests through a secure workflow.
The project was built with a RESTful architecture using Django REST Framework and React.
- JWT Authentication
- Login
- Register
- Refresh Token
- Create shelter request
- Shelter approval workflow
- Shelter profile
- CRUD Pets
- Multiple Images
- Pet Categories
- Availability Status
- Submit adoption request
- Shelter approval
- Request history
- Shelter approval
- User management
- Platform moderation
- Python
- Django
- Django REST Framework
- PostgreSQL
- JWT Authentication
- django-environ
- Pillow
- React
- Bootstrap
- Git
- GitHub
- Bruno
- Postman (optional)
FindMyPet
β
βββ Backend/
β βββ Backend/
β βββ pets/
β βββ media/
β βββ requirements.txt
β βββ manage.py
β
βββ Frontend/
β
βββ docs/
β
βββ README.md
π Pending diagram
Here a system architecture diagram will be included showing:
- React Frontend
- Django REST API
- PostgreSQL Database
- JWT Authentication Flow
π Pending ER Diagram
Main entities:
- User
- Shelter
- Pet
- PetImage
- AdoptionRequest
- ShelterCreationRequest
The backend uses JWT Authentication.
Workflow
Login
β
Access Token
β
Protected Endpoints
β
Refresh Token
β
New Access Token
| Role | Permissions |
|---|---|
| Admin | Manage the whole platform |
| Shelter | Manage pets and adoption requests |
| Adopter | Browse pets and request adoptions |
POST /api/login/
POST /api/register/
POST /api/token/refresh/
GET /api/pets/
POST /api/pets/
PATCH /api/pets/{id}
DELETE /api/pets/{id}
POST /api/adoption-requests/
GET /api/adoption-requests/
POST /api/shelter-requests/
GET /api/shelter-requests/
API testing is performed using Bruno.
The collection is available inside:
docs/bruno/
To execute:
- Open Bruno.
- Import the collection.
- Configure the environment.
- Execute the requests.
π§ Pending
Images of:
- Home
- Login
- Pet List
- Pet Details
- Shelter Dashboard
- Admin Dashboard
π§ Pending
A GIF or short video demonstrating:
- Login
- Publishing a pet
- Sending an adoption request
- Administrator approving a shelter
- Docker support
- CI/CD with GitHub Actions
- Email notifications
- Advanced search filters
- Favorites
- Chat between shelters and adopters
- Cloud image storage
- Deployment on AWS
Jacobo Montes CastaΓ±o
- GitHub
This project is intended for educational and portfolio purposes.