project-proposal-2025

BrisVenture: Virtual Geocaching App

Abstract

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. 

Author

Name: Alysha Ismail

Student number: 45894394

Functionality

A typical user flow is below

Scope

The MVP includes the following necessary features required for a functional experience. Without these features, the application would not work.

Quality Attributes

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.

1. Scalability

BrisVenture has two main scalability requirements:

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

2. Modularity

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

**3. Extensibility **

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

Evaluation

MVP Functionality Evaluation

Each MVP feature should be tested via user flow simulations, mocked services and automated functional testing to ensure they meet the requirements.

1. Scalability

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.

2. Modularity

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.

**3. Extensibility **

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.