Project Description
What are we building?
A simple but fully functional Notes App, production-ready, with an actual Back-End API, which could be customized later.
Note that the Back-End API will be based on json-server which provides support for all the different HTTP methods we need.
Different implementation strategies will be added incrementally.
Support for multiple UX styles that can be switched at runtime - just a proof of concept to show you how easy it is when using this simplified architecture
Initial implementation will use XML layouts, and later, we'll migrate or add new modules using Jetpack Compose
Offline support (caching) will use Room Persistence Library
Organization
All the different components will be defined within modules, and each module represents a package.
To provide structure, each module groups components that implement a specific feature:
Fragments, bindings, ViewModels, Repositories
Shared components will belong to their respective functional module:
API Services
Repositories for shared data across modules
UI utilities
All icons will be based on Material Components
Note: For now, ignore files having parsx prefix/suffix - those are part of another project and are used to track timestamps.
debugQA
debug
Android Variants
Variant debug will include different modules related to experimental or test features that should not be included in release.
Variant debugQA will behave as release, but will allow to execute the build within an emulator without having to provide a signing configuration - to keep things simple.
In this way, development workflows can be as efficient as possible, allowing to work on different modules without affecting others. This also simplifies how different builds connect to different API environments.
Several constants are defined using buildConfigField(...) within gradle and each variant will override those values depending which environment we want to target.
In summary:
debug ➟ features only available for developers - will define some files within app/src/debug, for specific dev-features
debugQA ➟ features only available to testers and resembles release, without having a signing configuration
release ➟ production release