MaghrebTrip is a web application designed to assist tourists during their trips to Morocco by organizing their activities. Users input information about their arrival and departure dates, as well as the cities they wish to visit. The application then generates a daily itinerary, suggesting key monuments and notable places based on the user's interests. MaghrebTrip also provides recommendations for hotels and restaurants. These establishments have dedicated sections where they can add information about the services they offer. Additionally, they have the option to sponsor the application for increased visibility, offering competitive rates that suit their preferences.
In this section, both functional and non-functional requirements will be outlined to comprehensively delineate the system's operational and performance parameters.
-
User Registration and Authentication:
- Users should be able to register for an account and log in securely.
- Authentication mechanisms should ensure the security of user accounts.
-
Trip Planning:
- Users should be able to input their arrival date, departure date, and cities they plan to visit.
- The app should generate a personalized itinerary/schedule for each user's trip, including recommended attractions, hotels, and restaurants.
-
Attraction Recommendations:
- The app should provide recommendations for attractions (monuments, landmarks, etc.) in each city based on user preferences and interests.
-
Hotel and Restaurant Recommendations:
- Users should be able to view recommended hotels and restaurants in each city, with details such as location, pricing, amenities, and cuisine.
-
Sponsorship Management:
- Hotels and restaurants should be able to create accounts and manage their sponsorship details, including payment information and sponsorship duration.
-
Feedback and Ratings:
- Users should be able to provide feedback and ratings for hotels and restaurants they visit, contributing to the overall rating and reputation of each establishment.
-
Performance:
- The app should be responsive and provide quick recommendations and itinerary generation, even during peak usage times.
-
Scalability:
- The app should be able to handle a growing number of users, attractions, hotels, and restaurants without compromising performance.
-
Security:
- User data should be encrypted and stored securely to protect user privacy.
- Access to sensitive information should be restricted based on user roles and permissions.
-
Usability:
- The user interface should be intuitive and user-friendly, allowing users to navigate the app easily and find relevant information quickly.
-
Reliability:
- The app should be stable and reliable, with minimal downtime and errors.
- Data integrity should be maintained to ensure the accuracy of trip plans and recommendations.
-
Accessibility:
- The app should be accessible to users with disabilities, following accessibility standards and guidelines.
-
Compatibility:
- The app should be compatible with a variety of devices and web browsers to ensure a seamless user experience across different platforms.
-
Localization:
- The app should support multiple languages and currencies to accommodate users from different regions.
- Tourist Actor
Figure 5: Tourist Use Case Diagram
- System Architecture
Figure 1: System Architecture
- Class Diagram
Figure 5: Class Diagram
- Development:
- Server: Spring Boot, Eureka, Feign
- Web: React.js
- Mobile: Android Studio
- Database: PostgreSQL, MySQL, Firebase
- Mapping API:
- Foursquare API: To obtain information about places to visit.
- Google Maps Platform: For city map editing and navigation.
- Scrapping:
- Python: For web scrapping to obtain information about hotels and restaurants.
- Version Control:
- Git/GitHub: For tracking changes and collaboration.
- CI/CD:
- Docker: Containerization of the application to ensure portability and consistency across environments.
- GitHub Actions: Native integration with GitHub repositories, facilitating CI/CD pipeline configuration.
- Deployment:
- AWS EC2: Elastic Compute Cloud for hosting the application.
- Methodology:
- Agile: Iterative and incremental development approach, enabling flexibility and adaptability to changing requirements.
- Dockerize a microservice:
- In Dockerfile:
FROM openjdk:17-jdk-alpine
LABEL com.maghrebtrip.[microservice]="beta"
COPY target/[microservice].jar [microservice].jar
ENTRYPOINT ["java","-jar","/[microservice].jar"]
- Install feign-clients
cd feign-clients
mvn clean install
- Package the microservice
cd [microservice]
mvn clean package
- Build the docker image
docker build --tag=maghrebtrip/[microservice]:latest .
- Run the docker container
docker run -p [port]:[port] maghrebtrip/[microservice]:latest
MaghrebTrip is a comprehensive travel planning application designed to enhance the tourist experience in Morocco. By providing personalized itineraries, attraction recommendations, and sponsorship opportunities, the app aims to streamline travel arrangements and promote local businesses. The system design and development guidelines outlined in this document offer a roadmap for the project's implementation, ensuring a robust and user-friendly application that meets the needs of tourists and businesses alike.