-
Notifications
You must be signed in to change notification settings - Fork 2
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Hotspot Companion App #3
Comments
Main ObjectiveA Mobile App to synchronize data between a running Hotspot and an Internet-reachable Kiwix Service. A Kiwix Hotspot is a raspberry-pi device that's only connected to a power source. It runs our software stack to create a WiFi Hotspot that provides access to embedded content via Kiwix-serve and other tools. We want to be able to collect arbitrary data from Hotspots to a Cloud service (usage metrics at the moment) and also be able to send back data from the Cloud service to the Hotspots. Hotspots are deployed to replace Internet connectivity where it's missing or expensive. Most of them are offline, always. Mobile phones are easy to find in most places and it's reasonable to assume that an Hotspot Admin would have access to one. We thus want to develop a mobile App that serves as an asynchronous proxy between multiple Hotspots and a Cloud service. The phone will connect to the Hotspot WiFi network and exchange data with the Hotspot. The phone will connect to the Internet via WiFi or mobile data and exchange data with the Online service. These two phases will repeat over and over and we do not know which one will happen first (user might first connect to Online service or first connect to one or many Hotspot). Time and physical location between the various connections is varying (could be minutes to days or months, could be all in the same place or in various locations). ImportantThis is a high-level Project Description. This will be turned into actionable tickets once we have validated a proposal and been attributed a GSoC student. Feel free to question all choices if you think there is a better/cheaper/more-efficient way to do. If you do though, justify yourself so it's criytal clear that you respect the general requirements (main objective) and that your alternative is beneficial. Keep in mind that while this will be developped during a GSoC, we will have to maintain it for a long time so maintainability is key. Unclear proposals will be discarded. We need to be sure you've understood the requirement. Target UsersApp will be used solely by Hotspot Managers: a Hotspot manager is a person responsible for one or multiple Kiwix Hotspot deployment. The manager hold the Admin credentials to said Hotspot(s). Admin credentials are a username and password that are required to access admin functions of the Hotspot(s). Each Hotspot could have different credentials, even if they are all managed by the same Admin. Admin however uses usually the same credentials on all their Hotspot. Admin has access to a mobile device (Android or iOS). Admin has temporary access to either an Internet connection on this mobile device (Wifi or mobile data) or to the Hotspot Wifi. User WorkflowInitially
Wants to extract data from a Hotspot
➡️ at this point, communication with Hotspot is over Wants to upload data to Cloud
➡️ at this point, communication with Cloud is over. Features & Principles
TechnoMobile App Framework
We've identified Flutter as good candidate:
Note that Flutter generate an XCode project and builds with it so a macOS machine is required to build the iOS app. Data transferWe believe that transferring data via multiple, small HTTP requests would be a good choice:
Scope of WorkThe GSoC project is limited to the mobile App. The expected final deliverables is a repository containing:
Your proposal must include a mockup of the App's User Interface. You will be provided with the API for both Hotspot and Cloud Service (probably similar) soon (end of March). |
hello @rgaudin @kelson42 @benoit74 @Popolechien My name is Ayush Gupta, and I am currently pursuing a Bachelor of Technology degree from SRM University. |
Hi @AyushGupta11442 as you can see the project isn't entirely scoped yet. I'd suggest you poke around the repo (start with good first issues here and on /kiwix or /openzim as we won't consider project proposals from people who haven't submitted a few PRs beforehand. |
Do we have to bridge the internet connection of the mobile device to the raspberry pi to facilitate internet to other connected devices?
Please provide some context on this point. What are profiles here and for what they are used? |
No. The app will just connect to the Pi via HTTP on the Hotspot WiFi
The App will allow one person to Sync data to/from multiple Pi with the Online service. It's not clear at this stage if the App user will have a single set of credentials and be able to attach to multiple Pi for instance.
|
All, thank you for your comments ; I've updated the project description. It should now be somewhat clear. |
What's the need to store Hostpot credentials in the user profile? |
No User profile is mentioned. We want to create a Profile (naming might change) for each Hotspot the user has access to. Because hotspot API require credentials (username, password), storing them on the phone means it will be typed only once and then remembered |
From Hostpot credentials I inferred the ssid and password of the wifi ap. |
We don't want to manage the WiFi connection from the App. They will connect to the network first then use the app. We want the app to be as dumb and limited as possible ; to reduce maintenance and because an app in the wild is harder to update. |
Whats the scope of the data packages we are looking at? Location wise?
I think this requires an asyncrounous .zim file specific search on the internal storage of the phone plus caching of results. |
@aryanA101a please read the description carefully. You should not care at all about how stuff are stored on the Pi. Your app will talk to an HTTP API to get a list of items and you'll retrieve content for those items through this API.
I don't understand this sentence. The app won't be looking at stuff on the phone outside its working directory. |
I've also updated the first comment descriptions with:
|
I assumed an extended scope when looking at the packages on the phone, that's why I was trying to clarify. |
Hello @rgaudin @kelson42 @benoit74 @Popolechien Just to clarify, considering the way the hotspot is build, which type of API—SOAP or REST—will the app talk to? |
HTTP REST |
Is unit testing in the scope of this project? |
Up to you |
@rgaudin Sir, I wanted some clarification regarding whether a GSoC candidate has been selected for this in 2024, as I checked their list of contributors website and couldn't find this project over there. |
@technosrijan I confirm there is no GSoC student working on this issue currently. |
⬇️
The text was updated successfully, but these errors were encountered: