[Run to your love]
Abstract
When you accidentally find a guy that matches your taste but too afraid to directly bump into him withou any preparation or notification? Are you struggling to find a dream girl among a forest of people? Do you want to have a little more new flavor in the process of “chasing” and “hunting” for the love of your life? Then welcome to “Run to your love”.
“Run to your love” is a dating app that forces you to “play tag” to find your crush. Your are not gonna add your ideal partner to your list or notice them by swipping like Tinder, but we are gonna forces you guys to enter a seeking game to run and find each other.
We can help you automatically find your ideal type of person within a radius of x km. After target a handsome guy or lovely girl, if you don’t want to miss him/her out and start a conversation right away, you can send a notification to ask “Can we meet?” and wait for the response. But we are not gonna give you the direction; the only information here is the distance between you and your partner without direction, so that we can force you to move on your own and chase that person. The only hint we can give you is the closer you are to the person, the clearer their profile picture will be and the distance will decrease, and The profile will be fully displayed after 2 people find each other. That’s how an exciting game of chasing and catching love happens!
Author
Name: [Huy Anh Thu Nguyen]
Student number: 48695846
Functionality
- Every user:
- Log in/log out
- Build user profile: User have to build profile with name, age(optional), gender, short description about yourself, picture profile, other information (habit, etc.)
- Agree to share your current location and allow the app to get that data
- Profile picture display: The resolution of the photo will be based on the distance of the two people. The closer the distance, the clearer the image will be, indicating that you and that person are close and you are going in the right direction.
- Calculate distance: Calculate the distance between 2 people based on GPS location.
- Chat: 2 people can message each other after the partner agree the notification
- View profile: The profile will be fully displayed after 2 people find each other. Before that only show the profile picture, short description and distance.
- Seeker:
- Send notification to partner
- View list of ideal partner (include profile picture)
- Using filter to identify ideal partner
- Partner:
- Receive notification (include profile picture)
- Accept/Reject notification
Scope
- Build user profile: User have to build profile with name, age(optional), gender, short description about yourself, picture profile, other information (habit, etc.)
- Find ideal partner: Using the filter (can refer to the Bumble dating app) to identify the type of partner you are looking for and show a list of ideal partners within a radius of x km
- Send notification: Send notification/message to the partner you choose to meet to tell that you are impressed by him/her and ask if you can come to find him/her
- Send message: 2 people can message each other (for more personal information, location, teasing the current location, etc.) after the partner agree the notification
- Location sharing: Every user using this app have to share accurate GPS location for accurate filter calculation and filter.
- Profile display:
- The resolution of the photo will be based on the distance of the two people. The closer the distance, the clearer the image will be, indicating that you and that person are close and you are going in the right direction.
- The profile will be fully displayed after 2 people find each other. Before that only show the profile picture, short description and distance
- Users can choose to show their profile publicly to others or not
Quality Attributes
- Availability: Must be easy access on mobile devices through app or web
- Deployability: Must be compatible with microservice architecture and can be deployed using container-based tech like K8s to provision each components
- Interoperability:
- Must be easy to share information with other internal and external 3rd system like Google map
- The GPS data collected should be compatible with a standardized format like NMEA 0183 or NMEA 2000. This allows the data to be easily integrated with other systems and platforms that support these formats.
- Scalability: The system needs to handle a large number of concurrent users and location data simultaneously because of 2 reasons:
- The user base can grow significantly.
- The scalability of product must be flexible based on the volume of people in a distance and changes according to distance adjustment from the user (from very small to super large ranges)
- Reliability:
- The tracking product should seamlessly exchange data with other compatible systems. This includes features like automatic data transmission, data synchronization, and error handling.
- The system needs to be up and running consistently to ensure users can access location information anytime, anywhere.
- Location updates should be fast and accurate to ensure a smooth user experience.
- Security:
- Ensure only authorized users can access location information.
- Location data should be encrypted to protect it from unauthorized access.
- Users should have control over their location data and how it’s used. This includes features like profile visibility settings and the ability to report inappropriate behavior.
In this project, Scalability - Security - Reliability are the most important quality attributes because it involves the continuity and real-time nature of data, and the data flows must be smooth, continuous and highly accurate. Furthermore, the security of people’s information is also a notable issue to avoid users’ personal whereabouts being revealed and the risk of users being tracked.
Evaluation
- Availability:
- Develop test cases to simulate mobile app and web access on various devices and network conditions. Measure loading times and ensure accessibility across different platforms.
- Deployability:
- Proof of Concept (POC): Set up a small-scale deployment using microservices and containerization technology (like K8s) to demonstrate feasibility and identify potential integration challenges.
- Interoperability:
- Verify that the GPS data format (NMEA 0183 or NMEA 2000) is implemented correctly and can be parsed by other systems. Test data exchange with external systems like Google Maps.
- API Testing: If you have an API, develop test cases to simulate data exchange with third-party systems. Ensure proper authentication and authorization mechanisms are in place.
- Scalability:
- Perform load testing to simulate a large number of concurrent users and high volumes of location data.
- Continuously monitor system resources like CPU, memory, and network usage under varying loads. Scale resources horizontally (adding more servers) or vertically (upgrading existing server capacity) as needed.
- Reliability:
- Test automatic data transmission functionality to ensure data is sent reliably to other systems with minimal errors. Implement error handling mechanisms for data loss scenarios.
- Monitor system uptime and identify outages or downtime events.
- Monitor response times for location updates. Identify and address any performance bottlenecks to ensure a smooth user experience.
- Security:
- Conduct penetration testing to identify and address potential security vulnerabilities in the system. This can help prevent unauthorized access to location data.
- Verify that location data is encrypted at rest and in transit using industry-standard encryption algorithms.
- Ensure only authorized users can access location information based on their permissions.
- Make sure the GPS data returned is correct, detect and avoid GPS spoofing to travel around the world.