Skip to content

Latest commit

 

History

History
665 lines (450 loc) · 22.7 KB

StreamHistory.md

File metadata and controls

665 lines (450 loc) · 22.7 KB

Stream History

This page is a recording of all Twitch streams related to the TOA project. Here are a few helpful sections for categorizing streams, or you can scroll down to see the chronological list.

Streams By Date

The following is a record of all TOA streams in chronological order.

Hot Topics

The following streams focus on specific hot topics in development, not just a feature.

Developer Experience Streams

The following streams touch on topics related to developer experience.

Login Screen

The following streams include work on our login screen.

Task List Screen

The following streams include work on our task list screen.

Add Task Screen

The following streams include work related to the add task screen.

Stream One - Project Creation

In the very first stream, we discussed the purpose of this project, created a repo, and added a number of GitHub issues.

Date: September 1, 2021

YouTube: https://youtu.be/8Umvlpx-Wvg

Blog: https://androidessence.com/toa-twitch-series

PRs: N/A

Stream Two - Developer Experience

In this stream, we discuss a number of ways to help dev experience in Android like CI tooling and static analysis.

Date: September 8, 2021

YouTube: https://youtu.be/ePpbpLyYI1w

Blog: https://androidessence.com/essential-dev-experience-concepts-android

PRs:

Stream Three - Design System

In this stream, we setup a design system for the application. We intended to add the app logo, but due to classic Android Studio issues we pivoted to also including the login UI.

PRs:

Date: September 22, 2021

YouTube:

Stream Four - Login Implementation

In this stream, we design the app architecture and build out the necessary components to power our login screen.

Date: September 29, 2021

PRs:

  • Use Case: #40
  • Repository: #41
  • View State Update: #42
  • View Model: #43

Notes:

YouTube:

Stream Five - Login Implementation Continued

In this stream, we continue working on our login screen implementation.

Date: October 6, 2021

Notes:

PRs:

  • InvalidCredentials Test: #45
  • Login Input Errors: #46

YouTube: https://youtu.be/mCQfK3J5K5w

Stream Six - Dependency Injection Setup

In this stream, we implement the Hilt library and setup dependency injection for the login screen. We also took that implementation and used it to display the LoginScreen when our MainActivity starts up. At the end of all this, we tinker with the login UI and fix some weirdness around inputs.

Date: October 13, 2021

Notes:

PRs:

  • Hilt: #52
  • Login via MainActivity: #53
  • Handle successful login flow: #54
  • Handle Disabled Inputs: #55
  • Password input modifications: #56

YouTube:

Stream Seven - Documentation

In this stream, we document the application architecture to help onboard newcomers to the project.

After documentation we moved into more tinkering and features. We also began the process of building out the home screen.

Date: October 20, 2021

PRs:

  • Arch diagram: #57
  • Edge to edge UI: #58
  • Task list item: #59
  • Task list: #60

YouTube: https://youtu.be/R_so92qDZ8g

Stream Eight - Pixel 6 / Material 3

In this stream, we unboxed the new Pixel 6 Pro and added Material 3 to the application.

Date: October 28, 2021

YouTube: https://youtu.be/JGbI32wPR6k

PRs:

  • Material 3: #61

Stream Nine - Dev Experience

In this stream, we refactored how dependency versions are managed, and added a plugin to help us identify out of date dependencies.

We also added the Kover plugin for generating test coverage.

YouTube:

PRs:

  • Dependency Updates: #62
  • Kover Plugin: #63

Notes:

Stream Ten - Task List UI

In this stream, we finished porting over the task list to Material 3. We also finalized some more view states of the task list screen.

PRs:

  • Material 3: #64
  • TaskListViewModel & Loading State: #65
  • GetAllTasksUseCase: #67

YouTube: https://youtu.be/dY_divcBViI

Stream Eleven - Navigation

In this stream, we added the Compose Destinations library and setup navigation between the login screen and the task list screen. We also looked at adding some unit tests.

PRs:

  • Navigation: #68
  • Animation: #69
  • VM Unit tests: #70

Notes:

YouTube: https://youtu.be/Ag00oxuNCf8

Stream Twelve - Task Management

In this stream, we started working on the task management logic and UI.

PRs:

  • Use Cases: #71
  • Add Task UI: #72
  • Add Task VM & Navigation: #73
  • Date Picker: #74
  • Description Text Handling: #75

Notes:

YouTube:

Stream Thirteen - Add Task Support

In this stream, we added support for adding a task and seeing it return on the home screen.

PRs:

YouTube: https://youtu.be/729JQOr8uX8

Stream Fourteen - Persistent Storage

We look at the Room library for persisting data on Android.

PRs:

YouTube:

Stream Fifteen - Add Task Input validation

In this stream we added input validation to the add task screen so that we can't enter a task without a description or valid date.

PRs:

  • Add Task Validation: #80
  • Add Task Testing: #81

YouTube: https://youtu.be/n_NEt1go_xY

Stream Sixteen - Tasks By Date

In this stream, we modified our task list screen to pull tasks for a specific date, and implemented button click listeners so the user can navigate forward and backward through dates.

PRs:

  • Fab positioning: #83
  • Tasks By Date: #85
  • Tests: #86

YouTube:

Stream Seventeen - Marking Tasks As Complete

In this stream, we added more functionality to our task list screen allowing the user to mark tasks as completed.

PRs:

  • Mark task as complete: #91
  • Showing headers for sections: #92
  • Combining flows: #95

YouTube: https://youtu.be/sGjcE4JQ-cc

Stream Eighteen - Adding Code Coverage

In this stream, we added JaCoCo for recording code coverage and also sending it to Coveralls.

PRs:

  • Code Coverage: #96
  • Additional Tests: #97

YouTube: https://youtu.be/s26bSXp2Tx4

Stream Nineteen - Task List Empty States

In this stream, we added empty states to our task list screen that show when the user has no incomplete tasks, no completed tasks, or no scheduled tasks at all.

PRs:

  • Empty states & tests: #101

YouTube: https://youtu.be/A0GgXIh8Kk8

Stream Twenty - Multi Module App Structure

In this stream, we began splitting the app into multiple modules that are KMM supported as well.

Resources:

Modularization posts:

KMM Process:

PRs:

  • core-models module: #105
  • core-data module: #106
  • task-api module: #107

YouTube:

Stream Twenty One - Misc Development

In this stream, we accomplished a few misc development tasks for the app.

PRs:

  • Hide buttons for completed tasks: #108
  • Sanitizing task input: #110
  • Hide previews from coverage with custom lint check: #112

YouTube: https://youtu.be/e00U251gmyU

Stream Twenty Two - Adaptive Layouts

In this stream, we looked adaptive layouts in Jetpack Compose and updated some screens accordingly.

Resources:

PRs:

  • Adaptive task list screen: #114
  • Conditional navigation based on screen size: #115

YouTube: https://youtu.be/Spp9RRm3hIQ

Stream Twenty Three - Misc Feature Development

PRs:

  • Title change animation: #117
  • Hide keyboard on task creation: #118
  • Show date picker on title click: #121

YouTube: https://youtu.be/jTGz4Rp-9fQ

Stream Twenty Four - Small Feature Development

PRs:

  • Copy updates: #129
  • Auto focus description on add task screen: #130
  • Sending date to add task UI: #131

YouTube:

Stream Twenty Five - Rescheduling Tasks

PRs:

  • Reschedule task: #132
  • Reschedule task validation: #135

YouTube:

Stream Twenty Six - Undo Rescheduling Tasks

PRs:

  • Undo Rescheduling: #137
  • Undo Task Completion: #138

YouTube: https://youtu.be/HWpBt7UNysY

Stream Twenty Seven - Architecture Refactor

PRs:

  • Architecture docs:

YouTube:

  • Coming Soon

Stream Twenty Eight - Splash Screen API

In this stream we hooked into the Splash Screen API to have the Android 12 splash screen stay visible until we had the logged in state information.

PRs:

  • Splash Screen:
  • Observing logged in state (sort of):

YouTube:

  • Coming Soon.

Resources:

Stream Twenty Nine - Preferred Tasks Per Day

PRs:

  • Preferred tasks data layer: #144

YouTube:

  • Coming Soon.

Stream Thirty - Maestro

Looked at Maestro UI testing framework.

// Adam to add more.

Stream Thirty One - Compose Material 3 Date Picker

Added a date picker dialog from the latest compose material 3 alpha.

Resources:

PRs:

YouTube:

Stream Thirty Two - Compose Material 3 Toolbar, UI Tweaks, Data Layer Updates

Updated the toolbar of the app to use a Material 3 CenterAlignedTopAppBar. We also updated the task list UI for the main screen.

PRs:

  • Toolbar: #164
  • Task list tweaks: #167
  • Result class replacement: #168

YouTube:

Stream Thirty Three - Fixing Race Conditions

Fixed a race condition that happened when trying to mark multiple tasks as completed.

PRs:

YouTube:

  • Coming Soon

Stream Thirty Four - MainActivity UI Tests

Added UI tests to validate which screen is shown when the user is logged in or not.

PRs:

YouTube:

  • Coming Soon

Stream Thirty Five - User Settings

In this stream, we built out the stub for the settings screen, allowing the user to specify a number of tasks per day to complete.

PRs:

  • Navigation bar: #175

YouTube:

  • Coming Soon

Stream Thirty Six - User Settings Continued

In this stream, we implemented the settings screen UI and data layer for modifying those preferences.

PRs:

YouTube:

  • Coming Soon

Stream Thirty Seven - Adaptive Navigation Types

In this stream, we implemented the material 3 window size class dependency & changed our navigation type based on screen width.

PRs:

  • Adaptive navigation types: #181
  • Old windowsize code cleanup: #182

YouTube:

  • Coming Soon

Stream Thirty Eight? - Kotlinter Migration

In this stream, we migrated away from a no longer maintained ktlint plugin to the new kotlinter gradle plugin.

PRs:

  • TBD

YouTube:

  • Coming Soon

Stream Thirty Nine? - Migrating To Gradle Version Catalogs

In this stream, we modified the dependency management to use gradle version catalogs.

PRs:

  • Gradle version catalogs: #185

YouTube:

  • Coming Soon

Stream Thirty Eight - Refactoring Material3 DatePickerDialog

In this stream we replaced our custom date picker dialog implementation with the one provided by the material 3 library which is now stable.

PRs:

Stream Thirty Nine - Exploring Kotlin Context Receivers

Testing out experimental Context Receiver feature in Kotlin and replacing some UseCase implementations with this new feature.

PRs:

  • Replacing AddTaskUseCase: #190

YouTube:

  • Coming Soon

Stream Forty - Adding IME Action To Inputs, Disabling Date Picker Input

In this stream we added IME actions to various inputs throughout the app to support navigating these inputs as you type.

PRs:

  • IME Actions: #283
  • DatePickerInput: #284

YouTube:

  • Coming Soon

Stream Forty One - Procrastinating A Task

This is different from our existing reschedule flow because we provide the user a specific set of options for moving a task to a new date.

PRs:

  • Reschedule task: #288

YouTube:

  • Coming Soon