Skip to content
jacoEafitPublic

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Latest commit

Β 

History

3 Commits

Folders and files

NameName
Last commit message
Last commit date
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

🐾 FindMyPet

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


πŸ“‘ Table of Contents


πŸš€ Quick Start

1. Clone the repository

git clone https://github.com/jacoEafit/FindMyPet.git
cd FindMyPet

2. Backend setup

Create a virtual environment

python -m venv venv

Activate it

Windows

venv\Scripts\activate

Linux / WSL / macOS

source venv/bin/activate

Install dependencies

pip install -r requirements.txt

3. Configure environment variables

Create 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=5432

4. Run migrations

python manage.py migrate

5. Create superuser (optional)

python manage.py createsuperuser

6. Start the backend

python manage.py runserver

Server:

http://127.0.0.1:8000

7. Start the frontend

cd Frontend

npm install

npm run dev

πŸ“– How the project works

The application consists of three user roles.

🏠 Shelter

  • Register a shelter
  • Publish pets
  • Upload multiple images
  • Manage adoption requests

❀️ Adopter

  • Browse pets
  • View pet details
  • Submit adoption requests
  • Track request status

πŸ›‘ Administrator

  • Approve shelter creation requests
  • Manage users
  • Manage pets
  • Moderate the platform

πŸ“Œ Project Overview

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.


✨ Features

Authentication

  • JWT Authentication
  • Login
  • Register
  • Refresh Token

Shelter Management

  • Create shelter request
  • Shelter approval workflow
  • Shelter profile

Pet Management

  • CRUD Pets
  • Multiple Images
  • Pet Categories
  • Availability Status

Adoption

  • Submit adoption request
  • Shelter approval
  • Request history

Admin

  • Shelter approval
  • User management
  • Platform moderation

πŸ›  Tech Stack

Backend

  • Python
  • Django
  • Django REST Framework
  • PostgreSQL
  • JWT Authentication
  • django-environ
  • Pillow

Frontend

  • React
  • Bootstrap

Tools

  • Git
  • GitHub
  • Bruno
  • Postman (optional)

πŸ“‚ Project Structure

FindMyPet

β”‚

β”œβ”€β”€ Backend/

β”‚ β”œβ”€β”€ Backend/

β”‚ β”œβ”€β”€ pets/

β”‚ β”œβ”€β”€ media/

β”‚ β”œβ”€β”€ requirements.txt

β”‚ └── manage.py

β”‚

β”œβ”€β”€ Frontend/

β”‚

β”œβ”€β”€ docs/

β”‚

└── README.md

πŸ› System Architecture

πŸ“Œ Pending diagram

Here a system architecture diagram will be included showing:

  • React Frontend
  • Django REST API
  • PostgreSQL Database
  • JWT Authentication Flow

πŸ—„ Database Design

πŸ“Œ Pending ER Diagram

Main entities:

  • User
  • Shelter
  • Pet
  • PetImage
  • AdoptionRequest
  • ShelterCreationRequest

πŸ” Authentication

The backend uses JWT Authentication.

Workflow

Login

↓

Access Token

↓

Protected Endpoints

↓

Refresh Token

↓

New Access Token

πŸ‘₯ Roles

Role Permissions
Admin Manage the whole platform
Shelter Manage pets and adoption requests
Adopter Browse pets and request adoptions

πŸ“‘ API Overview

Authentication

POST /api/login/

POST /api/register/

POST /api/token/refresh/

Pets

GET /api/pets/

POST /api/pets/

PATCH /api/pets/{id}

DELETE /api/pets/{id}

Adoption

POST /api/adoption-requests/

GET /api/adoption-requests/

Shelters

POST /api/shelter-requests/

GET /api/shelter-requests/

πŸ§ͺ Testing

API testing is performed using Bruno.

The collection is available inside:

docs/bruno/

To execute:

  1. Open Bruno.
  2. Import the collection.
  3. Configure the environment.
  4. Execute the requests.

πŸ“· Screenshots

🚧 Pending

Images of:

  • Home
  • Login
  • Pet List
  • Pet Details
  • Shelter Dashboard
  • Admin Dashboard

πŸŽ₯ Demo

🚧 Pending

A GIF or short video demonstrating:

  • Login
  • Publishing a pet
  • Sending an adoption request
  • Administrator approving a shelter

πŸ“ˆ Future Improvements

  • Docker support
  • CI/CD with GitHub Actions
  • Email notifications
  • Advanced search filters
  • Favorites
  • Chat between shelters and adopters
  • Cloud image storage
  • Deployment on AWS

πŸ‘¨β€πŸ’» Author

Jacobo Montes CastaΓ±o

  • LinkedIn
  • GitHub
  • Email

πŸ“„ License

This project is intended for educational and portfolio purposes.

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages