IsMyServerOnline
15 Apr 2020
Monitor your servers status within an Android application.
Download on Google Play | Download on Amazon AppStore |
Features
- Display a server status with last status.
- Display server detail page with full status history and a latency chart for the last 24h.
- Displays a detailed message in case of error/timeout during connection.
- Add servers / website via their IP address or web domain name.
- Supports HTTP and HTTPS protocols.
- Support TCP protocol with port specification.
- Support PING/PING6 command with packet size and ttl configuration.
- Configurable auto-refresh at specified interval, timeout, retry count and interval between retry, returned http code check, refresh on wifi only, refresh with a min signal quality.
- Notification on server status change or when updated
- Light and Dark theme.
Development
Develop in kotlin with intensive usage of coroutine. Follow the MVVM architecture with android architecture component (LiveData - ViewModel - Room) and use dependency injection with Koin.
The biggest challenge was to handle Android background tasks to refresh servers status. It use Android worker but it wasn’t enougth so it also use the basic android alarm manager. I thinking about writting an article on how to achieve this correclty.
I also had some difficulties to get the mobile signal quality. I write an article about that here.
Devops
Fully integrate on Azure Devops.
Azure devops IsMyServerOnline dashboard |
Boards
Use Kanban (Todo, doing, done) to follow bugs and new features.
Azure devops IsMyServerOnline Kaban board |
Repository
One git repository on Azure Devops. Usage of git flow.
Pipelines
Build
One build pipeline write in yaml (to keep history on the git repository) that trigger on the develop and release/* branches. This pipeline:
- Build the project
- Create the release apk signed and unsigned
- Create the release app bundle (aab) signed and unsigned
- Execute unit test and instrumented test (on simulator)
- Execute the code coverage (with unit and instrumented tests using Jacoco)
Azure devops IsMyServerOnline build result |
Release
Two release pipeline. One for the Google PlayStore, one for the Amazon AppStore.
The Amazon AppStore release use the Amazon Devops Extensions I made. It prepare the release and then publish it. It has only one manual task between the too steps, update the application description and changelog.
The Google PlayStore release is fully automatized from the testing release to the production release. It use the metadata files hierarchy to update the PlayStore description.
Azure devops IsMyServerOnline release PlayStore |