How anowercs/mynotes works
1. This is an Android app organized around two user-facing domains: note management and fitness tracking. The app is a multi-activity Java project, not a single-activity Compose app, and most screens are represented as separate Android Activity classes.
2. The navigation entry points are SplashActivity, LoginActivity, RegisterActivity, ForgotPasswordActivity, ChangePasswordActivity, and MainActivity. These define the authentication and post-login flow, with SplashActivity likely deciding whether the user goes to login or straight into the app based on stored session state.
3. Authentication is backed by AWS Cognito through the AWSAmplify/MyAmplifyApp.java bootstrap layer and the AWS auth dependencies in Gradle. This is the boundary where app startup connects to cloud identity services before the rest of the UI can access user-specific data.
4. The main notes subsystem centers on MainActivity, CreateNoteActivity, NotesAdapter, Note entity, and NotesListener. MainActivity is the collection/list screen, CreateNoteActivity handles note creation and editing, NotesAdapter renders note cards into list/grid UI, and NotesListener provides callbacks for item interactions such as open/edit/delete.
5. Note persistence is abstracted behind database/DynamoDBHelper.java, which is the primary data access layer for cloud-backed note storage. The README and dependencies indicate AWS DynamoDB as the main storage service, so the app’s note data flows from UI → helper layer → AWS cloud storage, then back into the adapter-driven UI.
6. Media and rich content are first-class note features. Notes can include images and web links, with Glide handling image loading and AWS S3 serving as the likely remote image store. The layout resources and custom drawables suggest the app also supports color-coded note cards and multiple note types.
7. Fitness tracking is separated into its own screen and service layer: FitnessActivity and services/FitnessUploadService. The README indicates step-count tracking, graphs, and history views, while the dependencies show Google Play Services Fitness and MPAndroidChart, so the fitness subsystem likely collects activity data and visualizes it in chart form.
8. Shared user/session and utility behavior is centralized in utility/UserUtils.java and utility/ShareUtils.java. UserUtils probably encapsulates current-user identity and profile-related helpers, while ShareUtils handles exporting or sharing note content through Android sharing intents.
9. The UI is heavily resource-driven and uses standard Android boundaries: XML layouts, drawables, menus, navigation graphs, and themes. nav_graph.xml and nav_graph2.xml indicate explicit navigation structure, while the drawer/bottom menu XML files and custom backgrounds imply a Material-style UI with multiple navigation surfaces.
10. The app includes an asset bundle for animation and rich UI polish: note.json, run_animation.json, and watch.json are likely Lottie animations used in onboarding, empty states, or fitness screens. This suggests a presentation layer that mixes native Android widgets with animated assets rather than relying only on static views.
11. Build and packaging are standard Gradle Android app tooling. The repository contains release APK output, baseline profile artifacts for runtime optimization, and Android test/unit test scaffolding, which indicates a production-oriented mobile app with performance tuning rather than a prototype-only codebase.
12. In diagram terms, the key architecture boundaries are: authentication/session management, notes CRUD and rendering, fitness data collection/visualization, and cloud persistence/media storage. Most flows converge on AWS-backed services, while the Android activities, adapters, and resources form the client-side presentation and interaction layer.
Main entry points: MainActivity.java MainActivity · LoginActivity.java LoginActivity · CreateNoteActivity.java CreateNoteActivity · res UI resources
Components 17
Auth & session
Startup, login, registration, password recovery, and user session state.
- SplashActivity · Launches the app and routes users based on session state.
app/src/main/java/com/anowercs/notespadpro/activities/SplashActivity.java - LoginActivity · Authenticates existing users.
app/src/main/java/com/anowercs/notespadpro/activities/LoginActivity.java - RegisterActivity · Creates new user accounts.
app/src/main/java/com/anowercs/notespadpro/activities/RegisterActivity.java - Forgot Password · Starts password reset flow.
app/src/main/java/com/anowercs/notespadpro/activities/ForgotPasswordActivity.java - Change Password · Updates an authenticated user's password.
app/src/main/java/com/anowercs/notespadpro/activities/ChangePasswordActivity.java
Notes domain
Note list, editing, rendering, and cloud-backed persistence.
- MainActivity · Primary note list and home screen after login.
app/src/main/java/com/anowercs/notespadpro/activities/MainActivity.java - CreateNoteActivity · Creates and edits notes, including rich content.
app/src/main/java/com/anowercs/notespadpro/activities/CreateNoteActivity.java - NotesAdapter · Binds notes into list/grid item views.
app/src/main/java/com/anowercs/notespadpro/adapters/NotesAdapter.java - Note · Core note model for text, media, links, and metadata.
app/src/main/java/com/anowercs/notespadpro/entities/Note.java - NotesListener · Handles item actions such as open, edit, and delete.
app/src/main/java/com/anowercs/notespadpro/listeners/NotesListener.java - DynamoDBHelper · Cloud persistence layer for note storage and retrieval.
app/src/main/java/com/anowercs/notespadpro/database/DynamoDBHelper.java
Fitness domain
Step tracking, upload, and charted history views.
- FitnessActivity · Displays fitness tracking screens and charts.
app/src/main/java/com/anowercs/notespadpro/activities/FitnessActivity.java - FitnessUploadService · Uploads or syncs fitness data in the background.
app/src/main/java/com/anowercs/notespadpro/services/FitnessUploadService.java
Platform & resources
Cloud bootstrap, shared utilities, assets, and Android resource layer.
- MyAmplifyApp · Initializes AWS Amplify and cloud identity integration.
app/src/main/java/com/anowercs/notespadpro/AWSAmplify/MyAmplifyApp.java - UserUtils · Shared current-user and profile helpers.
app/src/main/java/com/anowercs/notespadpro/utility/UserUtils.java - ShareUtils · Exports note content through Android sharing flows.
app/src/main/java/com/anowercs/notespadpro/utility/ShareUtils.java - UI resources · Layouts, menus, drawables, themes, navigation graphs, and assets.
app/src/main/res
Connections 27
- SplashActivity → LoginActivity: routes to · Sends unauthenticated users to sign-in.
- SplashActivity → MainActivity: routes to · Skips login when a valid session exists.
- LoginActivity → RegisterActivity: signup · Moves to account creation.
- LoginActivity → Forgot Password: reset · Starts password recovery.
- LoginActivity → MainActivity: success · Opens the app after authentication.
- RegisterActivity → LoginActivity: back to login · Returns after successful registration.
- Forgot Password → Change Password: reset flow · Continues toward credential update.
- Change Password → LoginActivity: return · Returns to sign-in after password change.
- MyAmplifyApp → LoginActivity: auth backend · Initializes AWS auth used by the login flow.
- MyAmplifyApp → DynamoDBHelper: cloud setup · Provides AWS runtime context for persistence.
- MainActivity → NotesAdapter: renders with · Uses the adapter to show note collections.
- MainActivity → CreateNoteActivity: create/edit · Opens the note editor.
- MainActivity → NotesListener: item actions · Receives callbacks for note interactions.
- NotesAdapter → Note: binds · Reads note fields for display.
- NotesListener → CreateNoteActivity: open/edit · Triggers editing from note actions.
- CreateNoteActivity → Note: writes · Creates or updates note records.
- CreateNoteActivity → DynamoDBHelper: persists · Saves note data to cloud storage.
- MainActivity → DynamoDBHelper: loads · Fetches stored notes for the home list.
- DynamoDBHelper → Note: stores · Serializes the note entity for cloud persistence.
- CreateNoteActivity → ShareUtils: share · Exports note content through share actions.
- MainActivity → UserUtils: session/profile · Uses shared user context and identity helpers.
- FitnessActivity → FitnessUploadService: sync · Delegates background fitness upload.
- FitnessActivity → UI resources: charts/ui · Uses layouts, assets, and chart-related UI resources.
- MainActivity → UI resources: ui shell · Depends on app layouts, menus, and drawables.
- CreateNoteActivity → UI resources: forms · Uses note editor layouts and UI assets.
- LoginActivity → UI resources: forms · Uses auth screen layouts and icons.
- FitnessUploadService → UI resources: assets · Supports fitness UI and animation resources.