Matrah App is a comprehensive platform designed to help users discover venues for social outings. It serves three main user groups:
- Users: Discover new places to visit.
- Venue Owners: Manage and promote their venues.
- Administrators: Oversee platform functionality and manage users/venues.
The app features a user-friendly interface, personalized recommendations (to be added), and robust tools for venue management and user safety.
- Venue discovery with advanced filtering.
- Personalized recommendations (future enhancement).
- User reviews and ratings.
- Booking tickets directly through the app.
- Venue creation and management.
- Dashboards for booking statistics and feedback.
- Venue promotion and analytics tools.
- Full control over users and venues.
- User and venue approval/blocking.
- Detailed reporting and analytics.
- Angular: For a dynamic, interactive, and responsive user interface.
- Java Spring Boot: Provides a scalable and robust backend infrastructure.
- MySQL: Manages relational data storage with reliability.
- Redis: Provides caching for frequently accessed data, boosting performance.
- Mockito and JUnit 5: Follow Test-Driven Development (TDD) practices to ensure robust unit and integration testing.
- Spring Security: Handles user authentication and role-based access control (User, Owner, Admin), and use JWT also.
- Agile: The project follows an Agile development approach, with regular sprints and iterative delivery to ensure continuous improvement and adaptation.
- Recommender System: Using Apache Mahout for collaborative filtering to provide personalized venue suggestions.
- Docker: Future deployment will include Docker for containerization and Kubernetes for orchestration.
Indexes are applied on frequently queried fields such as venue_name, city, and category, drastically improving lookup times and database performance, particularly for venue searches and filtering.
Pagination is used for venue listings, reviews, and bookings to prevent overloading the system with large data sets. By loading only a subset of data at a time, memory usage is minimized, and navigation is quicker.
Redis is utilized for caching frequently accessed data like venue details and recommendations, significantly reducing the database load and ensuring quicker response times.
The app is currently built as a monolithic application, meaning all components (User, Owner, Admin portals) are part of a single application. While this simplifies deployment and testing, plans for a transition to microservices in the future will allow for better scalability and maintainability.
The development is split into multiple phases:
- Phase 1: Requirement gathering and analysis (2 weeks)
- Phase 2: Design and architecture (4 weeks)
- Phase 3: Development (12 weeks)
- User Portal (4 weeks)
- Owner Portal (4 weeks)
- Administrator Portal (4 weeks)
- Phase 4: Testing (4 weeks)
- Phase 5: Deployment and launch (2 weeks)
Matrah App distinguishes itself from competitors such as Yelp and TripAdvisor through its personalized recommendation engine (coming soon), powerful venue owner tools, and strong administrative controls, making it an all-in-one platform for users, venue owners, and administrators.
- Development Delays: Managed through Agile methodologies with regular sprint reviews and adjustments.
- Security Vulnerabilities: Handled by implementing comprehensive security measures, including regular audits and monitoring.
- Recommender System: Implement Apache Mahout for personalized venue suggestions.
- Docker & Kubernetes: Deploy the application using Docker for containerization and Kubernetes for orchestration.
- Microservices Architecture: Transitioning from a monolithic architecture to microservices to improve scalability and manageability.