Beacon.
Mentors
Primary mentor: Akshat Tripathi (Slack handle: @Akshat Tripathi). Akshat is a GSoC'22 participant and GSoC'23 mentor with CCExtractor Development. He made contributions to the Flood-Mobile Project.
Secondary mentor: Carlos (carlos.fernandez on slack). Carlos is org admin of CCExtractor Development and has been mentoring contributors of various projects. He is the primary creator of the CCExtractor project which laid the foundation of existence of the CCExtractor Development organization.
Time estimation
175 hours
Project Brief
Have you ever been to a city tour, or hike, or anything else in which a whole group is supposed to stay together by following a leader (who hopefully, knows where is going) but you don't know anyone else in the group and you can't really get distracted or you might lose the group?
Well, this is the first use case the beacon is supposed to solve!
Your Job
This project was started in 2021 and a lot of work was also done in 2022.
During those 2 years we had a separate project for the backend and the frontend.
Because the backend is completed, this year the focus is on the frontend (i.e. flutter only). However, if the app requires backend changes, the contributor is expected to deal with them. So let's say this project is 85% Flutter, 15% the backend.
Read about the backend here
Repos
backend (tech stack: NodeJS, MongoDB, GraphQL and AWS)
frontend (tech stack: flutter) repos.
Your job is to write your proposal on any of the following based on your interest:
Frontend
- Feature: Presently, one group can have one beacon only. This needs to be extended such that each group can have several beacons. (Changes to be made in backend first, then frontend)
- Feature: Presently, beacons have a start and end time. This can be pre-scheduled and deactivated while they are active, or the beacon owner can just activate/deactivate on demand. (Changes to be made in backend first, then frontend)
- Feature: A beacon needs to be transferred seamlessly from one device to another, typically because there's a change in whoever is leading the group.
- As the foremost usecase of the application is to ease the travelling (or hiking) and the target users are travellers and hikers, so weak (or no) network connection is much expected. State needs to be maintained when network connectivity is lost and state of the Hike Screen shouldn't get affected when connectivity is lost.
- Architecture: Maintain the MVVM architecture throughout the application
- Automatic Tests: Write some unit tests for major classes and also widget testing for some components.
- Official Release: Work on the android and ios release for the application, which will involve thorough testing along with signing the app and making a Github release for the same.
- Improve Documentation Feel free to suggest any improvements or enhancements required apart from the above-mentioned ones.
Backend
The serverless
framework is used for the Lambda deploys. The standalone version of the running API may be found at https://beacon.aadibajpai.com which is for development and testing, while the production Lambda is at https://agw4au70ek.execute-api.us-east-1.amazonaws.com/dev/ and the ec2 instance is found at shouldwealiastheiptosomething
.
- We still need a proper install script for the backend that would help a developer to go from 0 to ready to use state without having to go into several places and do stuff manually.
- Include tests
- Implement required features (mentioned above)
Very important
Deploy your own backend instance locally. You must be able to be self sufficient and understand both front-end and back-end.
Test the Flutter app, fix whatever is broken (send PRs) if you find anything, and come up with work to do.
Qualification tasks
Take a look at this page.