This is a progressive web app (PWA) for place booking, designed to allow users to discover and book various destinations. The application provides a seamless experience with user-friendly interfaces and robust backend functionalities. It is built using Ionic 7 for the frontend, Spring Boot 3 with Spring Security for the backend, and PostgreSQL as the database. The application employs email and password-based authentication, generating JWT tokens for secure communication between the frontend and backend, while passwords are encrypted using BCrypt for enhanced security.
Ionic 7: A powerful and popular cross-platform mobile application development framework based on Angular, enabling the creation of native-like user interfaces. Google Maps API: Used for location services, allowing users to choose destinations interactively on the map.
Spring Boot 3: A versatile and lightweight Java-based framework that simplifies the development of robust, scalable, and secure web applications. Spring Security 6: Ensures robust authentication and authorization mechanisms for the application's security requirements.
PostgreSQL: A powerful open-source relational database management system, chosen for its reliability and performance.
Users can sign up and log in using their email and password credentials. JWT tokens are generated upon successful authentication, and users can securely access the application's features with their tokens.
The application implements automatic login using saved JWT tokens to provide a seamless user experience. Users are automatically logged out after their token expires, ensuring security and privacy.
Authenticated users can create places with various details, including names, image URLs, and locations chosen using Google Maps API. Each place has a date range indicating its availability, enabling users to book the destination for a specific period.
Users can make reservations for available places by selecting the desired destination, specifying the number of guests, and choosing booking dates. Bookings are validated to prevent overlaps and conflicts, ensuring a smooth reservation process.
Authenticated users can easily cancel their existing bookings.
Users can browse and explore all available places within the application, viewing essential details such as names, images, and locations.
The application also provides a list of bookable places, allowing users to identify destinations available for reservations.
User can use auto-locate functionality on both iOS and Android devices (also web browser if it is supported). Geolocation Capacitor plugin is used for implementation of this feature.
While creating travel place users can open their camera (or pick photo from file-manage) to be displayed alongside with created destination.
UML Class Diagram
- Clone git repository
git clone https://github.com/Djolee00/place-booker-MOBILE.git
cd your-repository
- Import sql. script in your Postgres DBMS
- Populate empty fields in application-example.properties and rename it to application.properties (BE)
- Populate empty fields in environment.ts files. You have to provied Google API key so you can you Google Map API (FE)
- Populate fields in docker-compose-example.yml and rename it to docker-compose.yml
- Run command (you need to install docker if not present on your machine)
docker compose up --build
- Every other run you can use
docker-compose up