AirQualityWorkshop Android regular

Workshop

Project Setup

Goal

Run the project on the device or emulator

Info

Select Material 3 Activity - Jetpack Compose

MVVM

Goal

Display list with fake data on screen

Info

Classes:

  • StationListView
  • StationListViewModel

Airly REST API

Goal

Feed list with data coming from Airly REST API

Info

  • Add Retrofit to your project.
  • Add custom AuthHttpClient with the interceptor, adding an API key to every app request.
  • Add RemoteStationsDataSource
  • Add Retrofit service fetching installation from the API

Use Json2Kt to make DTO classes directly from JSON response.

Do not publish your API Key on Github!

Clean Architecture

You should have five packages:

  • DI
  • UI
  • Logic
  • Entities
  • Data

Goal

Create a LocalStationsRepository and add a simple InMemoryStationsRepository holding data in a static array.

Add GetStationsUseCase. It should fetch data from a remote if there are no stations in the local storage.

Info

Add unit tests for GetStationsUseCase validating business rules.

Room Database

Goal

Stations fetched once should persist between app sessions.

Info

Implement Room Database three main components

  • @Entity
  • @Dao
  • @Database

Jetpack compose

Goal

Create a list row item containing:

  • Image - Sponsor Image
  • Title - Station Display Name
  • Subtitle - City
  • Label - Sponsor name

Info

Use AsyncImage from Coil

Career development

Portfolio repository

During the first stage interview, most companies require you to write an app displaying a list of data fetched from the specified REST API.

Be prepared for that and publish source code from a similar app on your GitHub profile. If you apply for a senior role, ensure the code has unit tests! Include code coverage and architectural diagrams.

Content

Post articles on Medium, tweet on Twitter, and consider hosting your blog. Those are the best ways to show different aspects of you as a developer, leader, and helping others. It doesn't have to be an academic essay. Publish articles that are easy to read by less experienced people. You remember having less experience and using StackOverflow or such blog posts.

Useful links

Levels.fyi - salary info

Dropbox Engineering Career Framework

Looka - AI generation assets

The Standout Developer - Randal Kanna's books

LeetCode - algo exercises

Glassdoor - international, remote job offers

tryexponent - interview prep course

Gramarly - Helping with English writings

Polska IT jobs

Books

Software Engineering essentials

Advanced Android App Architecture