Team-ComIT/SimTong-Android
60.5
Adequate · 21 September 2026
18.2k
lines of production code
Kotlin
primary language
4
measurements over time
What this system is
SimTong is an Android application that manages personal schedules, employee information, and authentication flows. It is structured using clean architecture with distinct layers for domain logic, data handling, and UI components. The system provides features for logging in, updating user profiles, managing calendars, and handling push notifications.
Features
Add onboarding screens for authentication, password recovery, and user registration
The feature-onboarding module now includes the complete UI and state management for the authentication flow. This includes a StartScreen, SignInScreen, and SignUpScreen (covering name, email verification, password, and nickname steps). It also adds screens for finding an employee number and resetting a password, along with an ErrorScreen to display error messages. The navigation graph in AuthNavigation.kt wires these screens together, and MVI contracts define the state and side effects for each flow.
feature/feature-onboarding · high confidence
Added core EventFlow utility for lifecycle-aware event handling
The core module now includes a new \EventFlow\ implementation that wraps a \MutableSharedFlow\ to manage one-time events, ensuring each event is consumed only once. This utility integrates with Android's lifecycle to automatically start and stop collecting events based on the lifecycle state, providing a robust way to handle UI events like navigation or toasts without memory leaks or duplicate emissions.
core · high confidence
Added data models for user, authentication, and content lists
Introduced new Kotlin data classes to represent core application entities: User (name, email, nickname, spot, profile image), Token (access/refresh tokens and expiration), HolidayList, MenuList, ScheduleList, SpotList, and LeftHoliday. These models provide the structured data types required for the backend API responses and local state management.
model/src · high confidence
Added local data storage for authentication and device tokens
The local module now includes a complete implementation for storing and retrieving authentication tokens (access, refresh, and expiration) and device tokens using AndroidX DataStore. This introduces \LocalAuthDataSourceImpl\ which delegates to \AuthPreference\ and \AuthPreferenceImpl\ to persist data to a DataStore named 'SIM\_TONG\_DATASTORE'. The change also adds extension functions for DataStore preference retrieval and time conversion, along with standard Android manifest and ProGuard configuration files.
local · high confidence
Centralized build configuration and dependency management
The buildSrc module now includes a centralized configuration for the project's build plugins, dependencies, and version numbers. This introduces a structured approach to managing Gradle plugins (such as Android, Kotlin, Hilt, and Firebase), third-party libraries (including Firebase, Compose, Room, and OkHttp), and test dependencies. By consolidating these definitions, the project ensures consistent versions across the codebase and simplifies future updates to libraries and build tools.
buildSrc · high confidence
Initial app structure, theme, and crash handling
The app now features a new visual identity with a custom logo, splash screen, and color theme. It also introduces a global exception handler that displays a toast for network errors, redirects to login for authentication errors, and shows an error screen for unknown exceptions. Additionally, the app registers a Firebase Cloud Messaging service for push notifications and retrieves the device token upon launch.
app/src · high confidence
Initial fastlane configuration for Android build and distribution
Added fastlane configuration files to automate the Android build, testing, and release processes. The setup includes lanes for running tests, submitting beta builds to Crashlytics, deploying to the Google Play Store, and distributing via Firebase App Distribution. The configuration specifies the package name 'com.comit.simtong' and integrates the 'fastlane-plugin-firebase\_app\_distribution' gem.
fastlane · high confidence
Initial project setup with Gradle, license, and configuration
The repository has been initialized with essential project scaffolding. This includes the Apache 2.0 license file and a .gitignore configuration to exclude build artifacts, IDE settings, and sensitive files like API keys. Additionally, a detekt configuration file has been added to enforce code quality rules, and Gradle wrapper scripts (for both Unix and Windows) are provided to ensure consistent build environments across different operating systems.
(repo-wide) · high confidence
Initial remote module setup with API interfaces and data sources
The remote module has been initialized with the foundational structure for network communication. This includes the creation of Retrofit API interfaces for authentication, user management, menus, schedules, holidays, and file uploads. Corresponding data source implementations have been added to bridge these APIs with the application's domain layer, along with request and response data classes to handle serialization and deserialization of network payloads.
remote · high confidence
Introduce Hilt-based dependency injection modules
The application now uses Hilt for dependency injection, introducing new modules that provide remote and local data sources, repositories, and network clients. This replaces the previous manual instantiation or alternative DI approach, centralizing object creation for authentication, common, email, file, holiday, menu, and schedule features through Hilt's SingletonComponent.
di · high confidence
Introduce SimTongScreen and SimTongRoute definitions for navigation
The navigator module now defines the app's navigation structure through the new SimTongScreen and SimTongRoute classes. SimTongScreen enumerates all available screens grouped into Auth, Home, and MyPage categories, each with specific route strings. SimTongRoute provides the corresponding route names for these three main sections. This establishes the foundational navigation model for the application.
navigator · high confidence
Introduce common-compose module with reusable UI components
A new common-compose module has been created to centralize shared UI components. This includes a reusable button/field component (SimTongBtnField), an image upload layout (SimImageUploadLayout), a calendar dialog (SimTongCalendarDialog), a custom list picker (ListItemPicker), a number picker, a timer dialog (SimTongTimerDialog), a simple layout wrapper (SimTongSimpleLayout), a countdown timer (SimCountDownTimer), and utility functions for date formatting. These components provide standardized UI elements for forms, media uploads, date/time selection, and layout structures across the application.
common-compose · high confidence
Introduce modular home feature with calendar and schedule management
The home feature is now a separate module, introducing a new home screen that displays a calendar, meal information, and schedule lists. Users can view and manage their schedules, including adding, editing, and deleting events, as well as setting work status (holidays, annual leave) via a bottom sheet dialog. The module includes navigation for the home screen, schedule creation and display, and a salary information WebView. Utility functions for date handling and MVI state management are also added.
feature/feature-home · high confidence
MyPage feature module with profile and account management screens
The MyPage feature module has been introduced, providing a dedicated module for the user's profile and account management. This includes a main MyPage screen displaying name, email, nickname, workplace, and privacy policy, along with dedicated screens for editing email, nickname, password, and workplace. The module implements the MVI pattern with specific contracts and view models for each editing flow, handling side effects like email verification codes and form validation errors. Navigation is configured via a new MyPageNavigation graph that routes to these distinct screens, and the module includes standard Android setup files (AndroidManifest, proguard rules) and an instrumented test.
feature/feature-mypage · high confidence
New common utility functions for formatting, conversion, and Android-specific helpers
The common-util module now includes a suite of new utility functions to support application logic. This includes regex patterns and validation for email, password, and nickname formats, as well as helper functions for displaying toast messages. Additionally, new utilities have been added for handling file operations (such as resizing images and managing file sizes), converting URIs to files, parsing bitmaps, and managing time and display units (dp).
common-util · high confidence
New data layer for authentication, user management, and content services
The data module now provides a complete set of data source interfaces and repository implementations for handling authentication (login, sign-up, token management), user profile updates, email verification, file uploads, holidays, menus, and personal schedules. This introduces the core networking and local storage logic required for these features, supported by new network interceptors for authorization and error handling, as well as utility classes for form data and API calls.
data · high confidence
New design system components for buttons, checkboxes, and UI elements
The core-design-system module now includes a suite of new UI components, including BasicButton, SimTongSmallRoundButton, SimTongBigRoundButton, SimTongThinRoundButton, SimTongSideButton, SimCheckBox, SimRadioButton, Header, Comment, IdeaComponent, CarrotMarket, and MealList. These components provide standardized styling, colors (SimTongColor), and interaction handling (simClickable) for the application's interface.
core-design-system · high confidence
New domain layer with use cases, repositories, and exception handling
The app's domain layer has been introduced, providing a clean architecture for business logic. This includes new use cases for user authentication (sign-in, sign-up, password/email changes), personal schedule management (add, edit, delete), holiday/leave requests, and menu fetching. It also introduces repository interfaces for email, file uploads, and common operations, alongside a structured exception hierarchy (e.g., HttpException, NetworkException, UnknownException) to handle errors and report crashes to Firebase Crashlytics.
domain · high confidence
Behavioural changes
Added Gradle wrapper configuration
The project now includes a Gradle wrapper configuration file (gradle/wrapper/gradle-wrapper.properties) that specifies Gradle version 7.4 as the distribution to be used for building the project.
gradle · high confidence
Added ProGuard configuration for code obfuscation
The app module now includes a ProGuard rules file (proguard-rules.pro) that preserves source file names and line numbers for debugging stack traces, alongside a .gitignore entry to exclude build artifacts. This enables code shrinking and obfuscation to reduce the app's size and protect source code.
app · high confidence
Dependencies
Added Gradle build configuration and dependency management for the Android application
The project now includes a complete Gradle-based build system, introducing a multi-module architecture with modules for the app, core features (home, mypage, onboarding), data, domain, and common utilities. This change establishes the foundational build structure, including the root \build.gradle.kts\ for plugin management, \settings.gradle.kts\ for module inclusion, and individual \build.gradle.kts\ files for each module that define their specific dependencies (such as Compose, Hilt, Retrofit, and Firebase) and build configurations.
(dependencies) · high confidence
Written by watchdog.canine.dev from the codebase's own history, inside the signed delivery this page is composed from.
How this codebase got here
Score
- CAI 58 → 60 (+2.7)
- Rubric changed (rubric-2026.08.19 → rubric-2026.09.15) — scores are not directly comparable.
Lenses
- Code Health 95 → 97 (+1.8)
- Architecture 82 → 94 (+12.0)
- Maturity 45 → 47 (+2.6)
- Readiness 57 → 55 (-1.9)
- Security 79 → 85 (+6.6)
Resolved (31)
- Change coupling clique: AuthFindScreen.kt, FindPasswordEmailCodeScreen.kt, FindPasswordFixPasswordScreen.kt (feature/feature-onboarding/src/main/java/com/comit/feature_auth/screen/find/AuthFindScreen.kt)
- Change coupling: 1_SignUpNameScreen.kt ↔ 2_SignUpVerifyScreen.kt (feature/feature-onboarding/src/main/java/com/comit/feature_auth/screen/signUp/1_SignUpNameScreen.kt)
- Change coupling: 2_SignUpVerifyScreen.kt ↔ 3_SignUpPasswordScreen.kt (feature/feature-onboarding/src/main/java/com/comit/feature_auth/screen/signUp/2_SignUpVerifyScreen.kt)
- Change coupling: 2_SignUpVerifyScreen.kt ↔ 4_SignUpNicknameScreen.kt (feature/feature-onboarding/src/main/java/com/comit/feature_auth/screen/signUp/2_SignUpVerifyScreen.kt)
- Change coupling: 3_SignUpPasswordScreen.kt ↔ 4_SignUpNicknameScreen.kt (feature/feature-onboarding/src/main/java/com/comit/feature_auth/screen/signUp/3_SignUpPasswordScreen.kt)
- Coverage not included — suite not readable by the collector
- Dependency hygiene not measured — dependency manifest found but not parsed for hygiene
- Duplicated block (10 lines × 2) (common-compose/src/main/java/com/comit/common/dialog/SimTongCalendarDialog.kt)
- Duplicated block (11 lines × 2) (common-compose/src/main/java/com/comit/common/SimImageUploadLayout.kt)
- Duplicated block (14 lines × 2) (feature/feature-home/src/main/java/com/comit/feature_home/screen/schedule/ShowScheduleScreen.kt)
- Duplicated block (15 lines × 2) (feature/feature-home/src/main/java/com/comit/feature_home/screen/WriteClosedDayScreen.kt)
- Duplicated block (16 lines × 2) (core-design-system/src/main/java/com/comit/core_design_system/typography/typography.kt)
- Duplicated block (16 lines × 3) (feature/feature-onboarding/src/main/java/com/comit/feature_auth/screen/signUp/1_SignUpNameScreen.kt)
- Duplicated block (17 lines × 2) (common-compose/src/main/java/com/comit/common/BtnField.kt)
- Duplicated block (19 lines × 2) (common-compose/src/main/java/com/comit/common/BtnField.kt)
- Duplicated block (19 lines × 2) (core-design-system/src/main/java/com/comit/core_design_system/component/Vote.kt)
- Duplicated block (6 lines × 2) (common-compose/src/main/java/com/comit/common/dialog/SimTongCalendarDialog.kt)
- Duplicated block (8 lines × 2) (common-compose/src/main/java/com/comit/common/dialog/SimTongCalendarDialog.kt)
- Duplicated block (9 lines × 2) (common-util/src/main/java/com/comit/common/unit/bitmap.kt)
- High CVE: [GHSA redacted] (Gemfile.lock)
- …and 11 more
New (52)
- Boundary-crossing change coupling: GetHolidayViewModel.kt ↔ HolidayAPI.kt (feature/feature-home/src/main/java/com/comit/feature_home/vm/GetHolidayViewModel.kt)
- Boundary-crossing change coupling: SimTongCalendarGetList.kt ↔ RemoteHolidayDataSourceImpl.kt (feature/feature-home/src/main/java/com/comit/feature_home/calendar/SimTongCalendarGetList.kt)
- Boundary-crossing change coupling: WriteClosedDayScreen.kt ↔ RemoteHolidayDataSourceImpl.kt (feature/feature-home/src/main/java/com/comit/feature_home/screen/WriteClosedDayScreen.kt)
- Documentation: no installation or build instructions (README.md)
- Documentation: no usage examples (README.md)
- Duplicated block (10 lines × 2) (common-compose/src/main/java/com/comit/common/dialog/SimTongCalendarDialog.kt)
- Duplicated block (10 lines × 2) (common-util/src/main/java/com/comit/common/unit/bitmap.kt)
- Duplicated block (14 lines × 2) (common-compose/src/main/java/com/comit/common/SimImageUploadLayout.kt)
- Duplicated block (19 lines × 2) (feature/feature-home/src/main/java/com/comit/feature_home/screen/WriteClosedDayScreen.kt)
- Duplicated block (20 lines × 2) (common-compose/src/main/java/com/comit/common/BtnField.kt)
- Duplicated block (20 lines × 2) (feature/feature-home/src/main/java/com/comit/feature_home/screen/schedule/ShowScheduleScreen.kt)
- Duplicated block (20–21 lines × 3) (feature/feature-onboarding/src/main/java/com/comit/feature_auth/screen/signUp/1_SignUpNameScreen.kt)
- Duplicated block (21 lines × 2) (core-design-system/src/main/java/com/comit/core_design_system/component/Vote.kt)
- Duplicated block (23 lines × 2) (common-compose/src/main/java/com/comit/common/BtnField.kt)
- Duplicated block (24 lines × 2) (core-design-system/src/main/java/com/comit/core_design_system/typography/typography.kt)
- Duplicated block (8–9 lines × 2) (common-compose/src/main/java/com/comit/common/dialog/SimTongCalendarDialog.kt)
- FixmeComment (common-compose/src/main/java/com/comit/common/dialog/timerdialog/ListItemPicker.kt)
- High CVE: [GHSA redacted] (Gemfile.lock)
- High CVE: [GHSA redacted] (Gemfile.lock)
- High CVE: [GHSA redacted] (Gemfile.lock)
- …and 32 more
Written by watchdog.canine.dev from the codebase's own history, inside the signed delivery this page is composed from.
Survey your own repository
Team-ComIT/SimTong-Android was measured the same way every project in this corpus was: the same rubric, at a pinned commit, with the result published in full. Point a surveyor at a repository you know and see whether you agree with it.
About this page
- The score is its most recent published measurement, taken on 21 September 2026 at a pinned commit. It is not a live figure and does not change until the project is measured again.
- Measured at commit 48293d51264908cc2f1ece572bf42c8c2f93880d — the exact code this score is about.
- Scored under rubric-2026.09.15 — the same rubric and the same method as every other entry in this index.
- Measured by watchdog.canine.dev using codehealth-analyzer preprod-fa71c66cabd8.