Did you know there are countless hidden stories, secrets, and adventures scattered throughout Brisbane?
BrisVenture is a mobile app that lets you discover these mysteries through interactive, real world treasure hunts. Users navigate to nearby “caches” (areas of interest) using a GPS map. Once there, the app unlocks location aware puzzles, trivia and stories tied directly to local landmarks, all created by the community. Each cache teaches you something new about Brisbane’s history and stories which are generally forgotten.
Successful completion “logs” the cache, and integrates with social features such as leaderboards and achievements, ensuring the experience is continously engaging. Simply navigate to a cache, answer geographic clues and questions provided by your phone, and log your discoveries. Seasonal updates and community contributed content ensure the app always offers new adventures, making exploring the city both fun and educational.
Name: Alysha Ismail
Student number: 45894394
A typical user flow is below
The MVP includes the following necessary features required for a functional experience. Without these features, the application would not work.
The following quality attributes were prioritised based on the systems needs. A key functionality of the application is user generated content, and scalability, modularity and extensibility ensures this functions smoothly. Security and availability are also required but are not as high of a priority since the app heavily depends on seamless content generation and high user interaction.
BrisVenture has two main scalability requirements:
- Able to handle a large number of users, especially during events.
- Able to handle a large number of new content generation since users will contribute more content over time.
To handle these requirements effectively, the backend should be designed with a modular microservices architecture, since it allows each component to scale independently. This means that during peak usage periods, the user authentication and map services can be scaled which saves resources. Additionally, a dedicated content creation microservice will handle user generated caches by using a NoSQL database to efficiently handle surges in new content. This independent scaling will ensure that the application remains responsive, regardless of the number of users or content generational levels.
Measurable Criteria
- System should support 10,000 concurrent users with response times for each service < 2seconds, measured using load testing such as Jmeter.
- Cache creation microservice should handle 100 new submissions per minute without exceeding 5 seconds processing time.
To function effectively, BrisVenture needs multiple independent services such as user authentication, geolocation tracking, content management and more such as allowing easy integration with future updates. A modular architecture allows services to be developed, tested and scaled independently, ensuring the system is flexible for future updates. This will be done by containerising each service and having each service interact through well defined APIs. This ensures that as updates are added (to one service), other services stay online.
Measurable Criteria
- Each service should be tested in isolation using unit tests (Junit and Mockito) and Postman for integration tests.
- Deployment of updates should cause less than a minute of downtime which will be measured by using automated monitoring tools that track service availability.
BrisVenture is expected to be updated frequently by users as well as developers when integrating new content or features. The system should support easy integration of new game mechanics, content updates, and features without requiring a major overhaul in any of its services. This will be achieved using a combination of plugin architecture, API versioning, and event driven architecture.
Measurable Criteria
- Any new updates should require less than 10% modification of current code.
- Any new caches created by users should be available within 24 hours.
- API versions should be backwards compatible.
Each MVP feature should be tested via user flow simulations, mocked services and automated functional testing to ensure they meet the requirements.
- GPS arrival detection will be tested using mocked location data to simulate movement.
- Puzzles when arriving will be tested for correct unlocking and response validation, by simulating arrivals at locations and using automated tests which input correct/incorrect responses.
- User registration and profile functionality will be tested through account creation, login and profile updates, and mobile UI testing tools (such as Espresso)
- Content generation and any user submitted caches will be tested using mocked submissions to the back end, to verify that they appear on the map and are accessible. Success is defined by >95% of testcases passing across all MVP features in the simulated environment.
To ensure BrisVenture can handle many concurrent users, Jmeter and Locust will be used to simulate 1000-10,000 concurrent users. The response time for each service will be measured, with the goal of keeping at least 95% of them under 2s. Content submission rates will also be monitored to validate that the 100 new caches per minute can be processed in 5s. Success for this criteria means at least 95% of these tests meet these response times.
Each service (geolocation, authentication etc) should be tested independently using JUnit and Mockito for unit tests, aiming for 90% code coverage. Any updates should be deployed in a controlled test environment, and the goal of these tests is to ensure updates can be rolled out with less than a minute of downtime and that at least 95% of testcases passed. Postman will be used for integration tests to verify API endpoint functionality and interactions between services. Any updates will be deployed in a controlled test environment. Service availability will be monitored using automated health checks during deployment.
A new game mechanic or function will be considered successful if it can be deployed within 8 hours and passing 95% of testcases. Automated regression tests will verify API versions are backwards compatible, ensuring no API errors occur for older versions. Integration tests will confirm any new event listeners function without modifying existing ones. Content deployment logs will be monitored to ensure content changes are live within 5 minutes.