Pawly is a dynamic pet adoption and care management platform designed to streamline the process of adopting, surrendering, and caring for animals. The application connects users with shelters, veterinarians, and other pet-related services, aiming to improve the quality of life for pets and their owners.
Pawly is a startup project that originated from a need for a user-friendly system to support animal welfare. The project was initially designed using Figma to ensure a seamless and intuitive user experience. It integrates a full-stack approach with a Spring Boot backend and a dynamic, responsive frontend.
Check out our live website:
- Pet Adoption & Surrender: Users can browse pets available for adoption or surrender their own pets, with filtering options based on species, breed, and location.
- User Authentication: Secure login and registration with JWT-based authentication to manage user sessions.
- Veterinarian Services: A database of veterinarians with their services, contact information, and user reviews.
- Favorite Lists: Users can save their favorite pets and shelters for easy access later.
- Dynamic Frontend: The frontend dynamically integrates data from the backend using AJAX and API calls.
- Mobile-Friendly: The project is designed to be responsive and optimized for both desktop and mobile devices.
- Java & Spring Boot: The backend is built using Spring Boot, enabling RESTful API services and secure user authentication.
- JWT Authentication: JSON Web Tokens are used to secure communication between the client and the server.
- Jackson for JSON: Handles JSON parsing and serialization.
- File-based Storage: The project initially uses stream-based file storage for user and pet data.
- HTML5, CSS3, JavaScript: Core technologies for building the structure and style of the application.
- AJAX & Fetch API: For handling dynamic data fetching and updating the UI in real-time.
- Responsive Design: CSS media queries ensure the site adapts to different screen sizes.
- Figma Prototyping: The project was designed in Figma to ensure a smooth, user-centered interface before development began.
- Clone the repository:
git clone https://github.com/yourusername/pawly.git
- Navigate to the project directory and install the necessary backend dependencies:
cd pawly/backend
./mvnw install - Run the Spring Boot backend:
./mvnw spring-boot:run
- Serve the frontend by opening index.html in your browser or using a local server (e.g., Live Server in VS Code).
- Endpoint: POST /api/auth/login
- Request Body:
{ "username": "yourUsername", "password": "yourPassword" }
- Response:
{ "token": "yourAccessToken", "user": { "id": 1, "username": "yourUsername", "role": "USER" } }
- Endpoint: POST /api/auth/register
- Request Body:
{ "username": "newUsername", "password": "newPassword", "email": "[email protected]" }
- Response:
{ "message": "User registered successfully" }
- Endpoint: GET /api/pets
- Response:
[ { "id": 1, "name": "Buddy", "species": "Dog", "breed": "Golden Retriever", "age": 4, "adoptionStatus": "Available" }, { "id": 2, "name": "Whiskers", "species": "Cat", "breed": "Siamese", "age": 2, "adoptionStatus": "Adopted" } ]
- Endpoint: POST /api/pets
- Request Body:
{ "name": "Fluffy", "species": "Rabbit", "breed": "Holland Lop", "age": 1, "adoptionStatus": "Available" }
- Response:
{ "message": "Pet added successfully" }
- Endpoint: GET /api/veterinarians
- Response:
[ { "id": 1, "name": "Dr. Jane Doe", "specialty": "General", "location": "123 Main St", "phone": "555-1234" }, { "id": 2, "name": "Dr. John Smith", "specialty": "Surgery", "location": "456 Elm St", "phone": "555-5678" } ]
- Endpoint: POST /api/veterinarians
- Request Body:
{ "name": "Dr. Alex Johnson", "specialty": "Dentistry", "location": "789 Oak St", "phone": "555-9876" }
- Response:
{ "message": "Veterinarian added successfully" }
We are constantly working to improve Pawly. Some upcoming features include:
- Enhanced user profiles with more pet management options.
- Integration of a chat feature for users to connect with shelters directly.
- Mobile app version for easier access on the go.
This project is licensed under the MIT License - see the LICENSE file for details.