Welcome to "ZwierzakSzukaDomu" - a dedicated platform for pet adoption. This service focuses on providing a comprehensive list of pet adoption announcements. Here, you'll find a variety of animals, each with its own unique story, eagerly waiting to find new, loving homes. We believe that every animal deserves a chance for a happy life, and we're confident that you'll find a lifelong friend here.
- Features
- Technology Stack
- Database Design and Structure
- Design Patterns
- Installation
- Demo
- Usage
- Contributing
- License
- Browse Announcements: Explore a wide range of pet adoption listings.
- Detailed Pet Profiles: Each pet comes with a detailed profile including its background, personality traits, and needs.
- Advanced Search: Filter searches based on animal type, features, and location to find your perfect match.
- User Accounts: Create your account to post adoption announcements or to interact with existing listings.
- Responsive Design: Platform is fully responsive, making it easy to navigate on various devices.
Project is built using a variety of technologies and tools to ensure efficiency, performance, and scalability. Below is a list of the key components:
-
Front-End:
- HTML, CSS, JavaScript: For structuring, styling, and client-side logic.
-
Back-End:
- PHP: Primary server-side programming language.
- PostgreSQL: Robust and scalable database management system.
-
Server:
- Nginx: High-performance web server.
-
Containerization:
- Docker: For creating, deploying, and running applications in containers.
- Docker Compose: For defining and running multi-container Docker applications.
-
Version Control:
- Git: For source code management.
- GitHub: For hosting the repository and facilitating version control and collaboration.
The project includes a comprehensive design and structure for the database, ensuring efficient data storage and retrieval. Here are the key components:
-
Entity-Relationship Diagram (ERD):
- The
erd.png
file in the main directory provides a visual representation of the database schema. This diagram is useful for understanding the relationships between different entities in the database. - View ERD
- The
-
Database Schema:
- The
script.sql
file contains the SQL commands to create the database structure. It defines tables, relationships, and other database elements. - View Database Script
- The
- MVC (Model-View-Controller)
- Separates the application into Model, View, and Controller components.
- Example: models/Announcement.php, views/announcement.php, controllers/AnnouncementController.php
- Repository
- Abstracts the data layer, providing a modular structure.
- Example: AnnouncementsRepository.php
- Strategy
- Allows different validation algorithms to be interchanged.
- Example: ValidationStrategy.php
- Observer
- Used for handling events.
- Example: debounce-search-controller.js
- State
- Allows an object to alter its behavior when its internal state changes.
- Example: filter-select.js
- Template Method
- Defines the skeleton of an algorithm in a method, deferring some steps to subclasses.
- Example: form-controller.js
- Lazy initialization
- Delays the creation of an object until the first time it is needed.
- Example: AppController.php
Project is dockerized for easy setup and deployment. Follow these steps to get the project up and running:
- Clone the Repository
- Navigate to the Project Directory
- Docker Setup:
Ensure Docker and Docker Compose are installed on your system. In the project directory, you'll find Docker configuration files in the
docker/db
,docker/nginx
, anddocker/php
directories, along with aDockerfile
in each. - Build Docker Images:
docker-compose build
- Start Docker Containers:
docker-compose up
- Access the Application: After the containers are up and running, you can access the application through your web browser.
A live demo of "ZwierzakSzukaDomu" is available here. The demo is publicly accessible and will be available until the end of 2024.
The home page showcases the latest announcements and provides links to key functionalities of the site such as browsing all announcements, logging in, registering.
Desktop | Mobile |
---|---|
This page allows users to browse all available pets for adoption, with filtering options to help find the perfect pet.
Desktop | Mobile |
---|---|
This detailed view allows users to see full information about the pet, including photos, descriptions, location, and contact details of the person who posted the announcement.
Desktop | Mobile |
---|---|
These pages allow users to create and manage their accounts, which is necessary for posting announcements and using features that require authorization.
Desktop | Mobile |
---|---|
The profile view lets users manage their personal information, password and avatar.
Desktop | Mobile |
---|---|
Here, users can view their own announcements.
Desktop | Mobile |
---|---|
Available only to administrators, this view allows the review, approval, or rejection of new announcements before they are published.
Desktop | Mobile |
---|---|
Also available only to administrators, this section allows for the review and management of user reports, such as violations of the rules.
Desktop | Mobile |
---|---|
I am always looking to improve "ZwierzakSzukaDomu" and appreciate any feedback or contributions. If you would like to contribute, please feel free to fork the repository and submit a pull request.
This project is licensed under the MIT License