jsericksk/Simple-Chat
54.9
Adequate · 21 September 2026
4.1k
lines of production code
Kotlin
primary language
4
measurements over time
What this system is
This system is a multi-module Android chat application that manages user authentication, messaging, and user profile data. It implements a clean architecture with distinct domain, data, and presentation layers, utilizing Hilt for dependency injection and Firebase for backend services. The application handles login, signup, and real-time chat features while maintaining local preferences and validation states.
Features
Added domain model classes for authentication, chat, and user data
Introduced new data classes to support the chat application's domain layer. This includes Login and SignUp models for user authentication, ChatMessageModel and LatestMessageModel for handling chat data, and UserModel for user profile information. These classes define the structure for data transfer and storage within the application's domain model.
domain/src/main/java/com/kproject/simplechat/domain/model · high confidence
Added domain use cases for authentication, chat, and user management
Introduced a new set of domain use cases to support Firebase-based authentication, messaging, and user management. This includes interfaces and implementations for login, logout, and sign-up, as well as validation use cases for email, password, username, and profile picture. Additionally, new use cases were added for sending and retrieving chat messages, as well as fetching the current user, registered users, and latest messages.
domain/src/main/java/com/kproject/simplechat/domain/usecase/firebase · high confidence
Initial implementation of data layer with Firebase and DataStore repositories
The data module now provides the foundational repository implementations for the application's core features. This includes the AuthenticationRepository for handling login, sign-up, and logout via Firebase Authentication and Firestore, as well as the ChatRepository for sending and retrieving messages. Additionally, the User repository allows fetching registered users and the latest messages, while the DataStore repository manages local preferences. These components are wired together via Hilt dependency injection, enabling the rest of the app to interact with the backend and local storage.
data · high confidence
Introduce Firebase repository interfaces for authentication, chat, and user management
New repository interfaces (AuthenticationRepository, ChatRepository, UserRepository) are added to the Firebase domain layer, defining the contracts for login, signup, logout, message retrieval, message sending, and user profile operations. These interfaces establish the domain-side API for Firebase-backed features, enabling the application to interact with Firebase services for authentication, chat messaging, and user data management.
domain/src/main/java/com/kproject/simplechat/domain/repository/firebase · high confidence
Introduces authentication screens and navigation structure
The app now includes fully implemented Login and SignUp screens with real-time field validation as the user types, displaying specific error messages for invalid inputs. A new MainViewModel manages the app's initial configuration, such as checking if a user is logged in to determine the starting screen. The navigation graph has been updated to route between Login, SignUp, Home, and Chat screens, with the MainViewModel coordinating the initial state and theme preferences.
app/src/main/java/com/kproject/simplechat/presentation · high confidence
Behavioural changes
Added DataStoreRepository interface for preference storage
A new DataStoreRepository interface has been introduced in the domain layer to handle reading and saving user preferences. This interface defines methods for asynchronous and synchronous preference retrieval, as well as saving preferences, providing a structured way to manage application settings.
domain/src/main/java/com/kproject/simplechat/domain/repository/preferences · high confidence
Centralized app preference keys in a new constants file
A new file, PrefsConstants.kt, has been added to the common module to store shared preference keys. This centralizes the keys for 'is\_dark\_mode' and 'is\_logged\_in', making them easier to maintain and reuse across the application.
commom/src/main/java/com/kproject/simplechat/commom/constants · high confidence
Centralized validation state management for user input
A new sealed class \ValidationState\ has been introduced to manage validation outcomes for email, password, username, and profile picture fields. This change replaces scattered boolean flags or error strings with a structured state model, allowing the UI to react to specific validation errors such as empty fields, invalid formats, or mismatched passwords.
commom/src/main/java/com/kproject/simplechat/commom/validation · high confidence
Implemented domain-layer use cases and dependency injection bindings for authentication, chat, user, and preferences
The application now provides functional use cases for authentication (login, signup, logout, and validation of email, password, username, and profile picture), chat (sending, retrieving, and saving latest messages), user management (getting current user, latest messages, and registered users), and preferences (getting and saving data). These are wired via Hilt DI modules (AuthenticationDomainModule, ChatDomainModule, UserDomainModule, PreferencesDomainModule), replacing previous implementations with a functional interface approach to reduce boilerplate.
app/src/main/java/com/kproject/simplechat/di · medium confidence
Introduce functional interface use cases for preference management
The application now exposes functional interfaces for reading and saving user preferences, including GetPreferenceAsyncUseCase, GetPreferenceSyncUseCase, and SavePreferenceUseCase. This change replaces previous implementations with functional interfaces, enabling more flexible and concise usage within the domain layer.
domain/src/main/java/com/kproject/simplechat/domain/usecase/preferences · medium confidence
Introduces a new exception hierarchy and data state model
The application now uses a new exception hierarchy with a base class and specific authentication exceptions (UserNotFoundException, EmailInUseException, WrongPasswordException, etc.), alongside a new DataState sealed class to represent Loading, Success, and Error states for data operations.
commom/src/main/java/com/kproject/simplechat/commom/exception · high confidence
Removed legacy Compose theme configuration
The app's previous Material 2-based theme setup has been removed. Specifically, the \Color.kt\ file containing hardcoded color definitions (Purple200, Purple500, Purple700, Teal200) and the \Theme.kt\ file defining dark and light color palettes and the \SimpleChatTheme\ composable have been deleted. This indicates a shift away from the old theme structure, likely in preparation for a new theming approach.
app/src/main/java/com/kproject/simplechat/ui · high confidence
Removed legacy MainActivity and added Hilt application class
The legacy MainActivity, which previously handled the Compose UI setup, has been removed from the app. A new MyApplication class has been introduced to initialize Hilt for dependency injection across the application.
app/src/main/java/com/kproject/simplechat · high confidence
Removed stale build cache and metadata files
Deleted several stale build cache and metadata files from the buildSrc directory, including the Kotlin class list, compilation counters, plugin test metadata, source roots, and the JAR manifest. These files are typically generated artifacts that should not be committed to version control, and their removal helps keep the repository clean of build artifacts.
buildSrc/build · medium confidence
Updated Gradle wrapper to version 7.4
The Gradle wrapper has been upgraded from version 7.3.3 to 7.4. This update ensures that the project uses a newer, supported version of the Gradle build tool, which may include bug fixes, performance improvements, and new features available in that release.
gradle · high confidence
Test coverage
Added unit tests for authentication validation use cases; Updated unit tests in app/src/test.
Dependencies
Restructured project into multi-module architecture
The project has been refactored from a single-module structure into a multi-module architecture, introducing new 'domain', 'data', and 'commom' modules. The app module now depends on these new modules, while Firebase, Coroutines for Play Services, and Coil have been removed from the app's dependencies, with Landscapist and Gson added instead.
(dependencies) · medium confidence
Updated build dependencies and added new library references
The build configuration was updated to include new dependencies for the project's architecture and UI. This includes adding modules for domain, data, and common layers, alongside plugins for Android, Kotlin, Hilt, and Google Services. New libraries were added for Firebase Analytics, Coroutines core, Pager indicators, Landscapist (replacing Coil), Gson, and the AndroidX Core Splash Screen. Version constants were also updated to reflect the latest supported versions for these dependencies.
buildSrc/src · 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 55 → 55 (-0.4)
- Rubric changed (rubric-2026.08.19 → rubric-2026.09.15) — scores are not directly comparable.
Lenses
- Code Health 100 → 100 (+0.0)
- Architecture 100 → 92 (-7.5)
- Maturity 62 → 62 (+0.0)
- Readiness 24 → 26 (+1.4)
- Security 100 → 100 (+0.0)
- Domain Modelling 100 → 100 (+0.0)
Resolved (5)
- Coverage not included — suite not readable by the collector
- Dependency hygiene not measured — dependency manifest found but not parsed for hygiene
- No exposed public API
- Test reliability not included
- single-maintainer — knowledge-concentration (bus factor) risk
New (4)
- Dependency hygiene PARTLY measured — Maven/Gradle declarations read, no dependency graph resolved
- Documentation: no installation or build instructions (README.md)
- Documentation: no usage examples (README.md)
- No ADRs found
Written by watchdog.canine.dev from the codebase's own history, inside the signed delivery this page is composed from.
Survey your own repository
jsericksk/Simple-Chat 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 f59e552e2056fa4fc5b54eca535b24c3055d84e8 — 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.