Backend API for a pet adoption and animal welfare management platform. Developed as Full Stack Development Master's final project.
Manopata API provides a complete RESTful backend for managing pet adoptions, animal profiles, user authentication, and administrative operations for animal shelters and adoption centers.
- Framework: Spring Boot 3.x
- Language: Java 17+
- Build Tool: Gradle
- Database: PostgreSQL
- Architecture: RESTful API
- Authentication: JWT (JSON Web Tokens)
- 🔐 User authentication and authorization
- 🐕 Pet profile management (CRUD operations)
- 📝 Adoption request workflow
- 👥 User management (adopters, shelters, admins)
- 🏥 Animal health records tracking
- 📊 Administrative dashboard endpoints
- 🔍 Advanced search and filtering
- 📧 Email notifications
- Java 17 or higher
- PostgreSQL 14+
- Gradle 8.x
- Clone the repository:
git clone https://github.com/IsabellaTobon/Manopata-API.git
cd Manopata-API- Configure database connection in
application.properties:
spring.datasource.url=jdbc:postgresql://localhost:5432/manopata
spring.datasource.username=your_username
spring.datasource.password=your_password- Build the project:
./gradlew build- Run the application:
./gradlew bootRunThe API will be available at http://localhost:8080
http://localhost:8080/api/v1
POST /auth/register- Register new userPOST /auth/login- User loginPOST /auth/refresh- Refresh JWT token
GET /pets- List all petsGET /pets/{id}- Get pet detailsPOST /pets- Create new pet profilePUT /pets/{id}- Update pet informationDELETE /pets/{id}- Delete pet profile
GET /adoptions- List adoption requestsPOST /adoptions- Create adoption requestPUT /adoptions/{id}/status- Update adoption status
GET /users/profile- Get current user profilePUT /users/profile- Update user profileGET /users/{id}- Get user by ID (admin only)
The application uses PostgreSQL with the following main entities:
- Users - User accounts and authentication
- Pets - Animal profiles and information
- Adoptions - Adoption request records
- Shelters - Animal shelter information
- HealthRecords - Medical history for pets
Run tests with:
./gradlew testsrc/
├── main/
│ ├── java/
│ │ └── com/manopata/
│ │ ├── config/ # Configuration classes
│ │ ├── controller/ # REST controllers
│ │ ├── dto/ # Data Transfer Objects
│ │ ├── entity/ # JPA entities
│ │ ├── repository/ # Data repositories
│ │ ├── service/ # Business logic
│ │ └── security/ # Security configuration
│ └── resources/
│ ├── application.properties
│ └── data.sql
└── test/
└── java/
└── com/manopata/ # Unit and integration tests
- JWT-based authentication
- Password encryption with BCrypt
- Role-based access control (USER, SHELTER, ADMIN)
- CORS configuration for frontend integration
- Input validation and sanitization
This is an academic project developed as a Master's thesis. Contributions, issues, and feature requests are welcome for educational purposes.
- Isabella Tobón - @IsabellaTobon
- Inazio Claver - @inazense - Project Advisor
This project was developed as part of a Full Stack Development Master's program.
For questions or feedback about this project, please open an issue or contact the repository owner.
Master's Thesis Project | Full Stack Development | 2024