Thanks to visit codestin.com
Credit goes to github.com

Skip to content

muhammed9865/Sagor

Repository files navigation

Sagor - Automated Fish Farming Monitoring and Controlling

The idea was to make an automated IoT system along with an AI to monitor and control the Fish farms's Pools. We aimed to monitor the environment of each pool in the farm by looking after the pH, temperature and the Oxygen levels. For the Controlling part, we provided a Feeding pump that dispatches the appropriate amount of food into the pools.

That's the abstract of the idea, there are a lot to talk about, but I want to focus on the Mobile application and how did we manage to use the Android technology to provide a friendly-app to be used as a dashboard the Farm's guard (Client).

Android Tech in Action

We thought of providing insights of the client's pools by visualizing the changes of the environment's characteristics (pH, Temperature, Oxygen also but we couldn't afford it)

Here comes the challenge, the idea is easy to be done but I thought of challenging myself and facing my Android's only fear (Canvas). I implemented the app using only Compose Canvas API to visualize the pools' data, no third-party libraries for the UI. It was one of the most exciting challenges I had. I found out that it's very hard to maintain a clean code when dealing with Canvas, this was a point I looked after when dealing with the project.

I also thought of dividing the app into features and each feature has its own navigation graph, and none of the features depends directly on each other but some preferences stored like isUserLoggedIn which makes a centralized repository that affects multiple features. I created a dynamic Root navigation graph that adds the features' graphs based on some NavigationParams data class instance.

third-party libraries

I have tried to minimize the usage of Third-party libs to produce a light-weight app, the final app's size was 3MB.

  • Dagger Hilt for DI
  • Ktor as a Networking client along with some plugins [Logging, Serialization and a DefaultRequest]
  • Kotlinx-datetime to manage timestamps coming from the backend in a formalized way.
  • Splash Screen API: We needed some customization in the splash screen.

Sagor Artwork

2024-07-08.14-13-54.mp4

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages