# codelightstudios/android-smart-login architecture

> Architecture diagram of the GitHub repository codelightstudios/android-smart-login, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-09-28). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/codelightstudios/android-smart-login
- Repository: https://github.com/codelightstudios/android-smart-login

## Overview

Android Smart Login is a library and sample app for custom, Facebook, and Google sign-in, returning a common SmartUser and retaining a current-user session. The sample activity configures the library, starts login or signup, forwards activity results, and handles callbacks. Provider implementations and session handling are sampled; factory/configuration details and CustomLogin internals are not, so uncertain internal wiring is omitted.

Main entry points: [`app/src/main/java/studios/codelight/smartlogin/MainActivity.java`](https://github.com/codelightstudios/android-smart-login/blob/master/app/src/main/java/studios/codelight/smartlogin/MainActivity.java) (Sample activity), [`smartloginlibrary/src/main/java/studios/codelight/smartloginlibrary/FacebookLogin.java`](https://github.com/codelightstudios/android-smart-login/blob/master/smartloginlibrary/src/main/java/studios/codelight/smartloginlibrary/FacebookLogin.java) (Facebook login), [`smartloginlibrary/src/main/java/studios/codelight/smartloginlibrary/GoogleLogin.java`](https://github.com/codelightstudios/android-smart-login/blob/master/smartloginlibrary/src/main/java/studios/codelight/smartloginlibrary/GoogleLogin.java) (Google login), [`smartloginlibrary/src/main/java/studios/codelight/smartloginlibrary/UserSessionManager.java`](https://github.com/codelightstudios/android-smart-login/blob/master/smartloginlibrary/src/main/java/studios/codelight/smartloginlibrary/UserSessionManager.java) (Session manager)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_sample["Sample app"]
  node_activity["Sample activity<br/>[MainActivity.java]"]
end

subgraph group_api["Login API"]
  node_factory["Login factory"]
  node_login["Login API<br/>[SmartLogin.java]"]
  node_config["Login config"]
  node_callbacks["Login callbacks"]
end

subgraph group_providers["Login providers"]
  node_facebook["Facebook login<br/>[FacebookLogin.java]"]
  node_google["Google login<br/>[GoogleLogin.java]"]
  node_custom["Custom login<br/>[CustomLogin.java]"]
end

subgraph group_users["Users and sessions"]
  node_userutil["User mapping<br/>[UserUtil.java]"]
  node_smartuser["SmartUser models<br/>[SmartUser.java]"]
  node_session["Session manager"]
end

node_person(("App user"))
node_fb_service["Facebook SDK"]
node_google_service["Google sign-in"]
node_preferences[("Android preferences")]

node_person -->|"chooses login"| node_activity
node_activity -->|"builds provider"| node_factory
node_activity -->|"starts login"| node_login
node_activity -->|"forwards result"| node_login
node_activity -->|"configures"| node_config
node_activity -->|"implements"| node_callbacks
node_facebook -->|"requests sign-in"| node_fb_service
node_google -->|"requests sign-in"| node_google_service
node_facebook -->|"maps profile"| node_userutil
node_google -->|"maps profile"| node_userutil
node_userutil -->|"creates"| node_smartuser
node_facebook -->|"saves user"| node_session
node_google -->|"saves user"| node_session
node_session -->|"reads and writes"| node_preferences
node_activity -->|"loads current user"| node_session
node_facebook -->|"reports result"| node_callbacks
node_google -->|"reports result"| node_callbacks
node_activity -->|"provides custom auth"| node_custom

click node_activity "https://github.com/codelightstudios/android-smart-login/blob/master/app/src/main/java/studios/codelight/smartlogin/MainActivity.java"
click node_factory "https://github.com/codelightstudios/android-smart-login/blob/master/smartloginlibrary/src/main/java/studios/codelight/smartloginlibrary/SmartLoginFactory.java"
click node_login "https://github.com/codelightstudios/android-smart-login/blob/master/smartloginlibrary/src/main/java/studios/codelight/smartloginlibrary/SmartLogin.java"
click node_config "https://github.com/codelightstudios/android-smart-login/blob/master/smartloginlibrary/src/main/java/studios/codelight/smartloginlibrary/SmartLoginConfig.java"
click node_callbacks "https://github.com/codelightstudios/android-smart-login/blob/master/smartloginlibrary/src/main/java/studios/codelight/smartloginlibrary/SmartLoginCallbacks.java"
click node_facebook "https://github.com/codelightstudios/android-smart-login/blob/master/smartloginlibrary/src/main/java/studios/codelight/smartloginlibrary/FacebookLogin.java"
click node_google "https://github.com/codelightstudios/android-smart-login/blob/master/smartloginlibrary/src/main/java/studios/codelight/smartloginlibrary/GoogleLogin.java"
click node_custom "https://github.com/codelightstudios/android-smart-login/blob/master/smartloginlibrary/src/main/java/studios/codelight/smartloginlibrary/CustomLogin.java"
click node_userutil "https://github.com/codelightstudios/android-smart-login/blob/master/smartloginlibrary/src/main/java/studios/codelight/smartloginlibrary/util/UserUtil.java"
click node_smartuser "https://github.com/codelightstudios/android-smart-login/blob/master/smartloginlibrary/src/main/java/studios/codelight/smartloginlibrary/users/SmartUser.java"
click node_session "https://github.com/codelightstudios/android-smart-login/blob/master/smartloginlibrary/src/main/java/studios/codelight/smartloginlibrary/UserSessionManager.java"

classDef toneNeutral fill:#f8fafc,stroke:#334155,stroke-width:1.5px,color:#0f172a
classDef toneBlue fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#172554
classDef toneAmber fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#78350f
classDef toneMint fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532d
classDef toneRose fill:#ffe4e6,stroke:#e11d48,stroke-width:1.5px,color:#881337
classDef toneIndigo fill:#e0e7ff,stroke:#4f46e5,stroke-width:1.5px,color:#312e81
classDef toneTeal fill:#ccfbf1,stroke:#0f766e,stroke-width:1.5px,color:#134e4a
class node_activity,node_person toneBlue
class node_factory,node_login,node_config,node_callbacks,node_preferences toneAmber
class node_facebook,node_google,node_custom toneMint
class node_userutil,node_smartuser,node_session toneRose
class node_fb_service,node_google_service toneIndigo
```

## Components

### Sample app

- [Sample activity](https://github.com/codelightstudios/android-smart-login/blob/master/app/src/main/java/studios/codelight/smartlogin/MainActivity.java): `app/src/main/java/studios/codelight/smartlogin/MainActivity.java`

### Login API

- [Login factory](https://github.com/codelightstudios/android-smart-login/blob/master/smartloginlibrary/src/main/java/studios/codelight/smartloginlibrary/SmartLoginFactory.java): `smartloginlibrary/src/main/java/studios/codelight/smartloginlibrary/SmartLoginFactory.java`
- [Login API](https://github.com/codelightstudios/android-smart-login/blob/master/smartloginlibrary/src/main/java/studios/codelight/smartloginlibrary/SmartLogin.java): `smartloginlibrary/src/main/java/studios/codelight/smartloginlibrary/SmartLogin.java`
- [Login config](https://github.com/codelightstudios/android-smart-login/blob/master/smartloginlibrary/src/main/java/studios/codelight/smartloginlibrary/SmartLoginConfig.java): `smartloginlibrary/src/main/java/studios/codelight/smartloginlibrary/SmartLoginConfig.java`
- [Login callbacks](https://github.com/codelightstudios/android-smart-login/blob/master/smartloginlibrary/src/main/java/studios/codelight/smartloginlibrary/SmartLoginCallbacks.java): `smartloginlibrary/src/main/java/studios/codelight/smartloginlibrary/SmartLoginCallbacks.java`

### Login providers

- [Facebook login](https://github.com/codelightstudios/android-smart-login/blob/master/smartloginlibrary/src/main/java/studios/codelight/smartloginlibrary/FacebookLogin.java): `smartloginlibrary/src/main/java/studios/codelight/smartloginlibrary/FacebookLogin.java`
- [Google login](https://github.com/codelightstudios/android-smart-login/blob/master/smartloginlibrary/src/main/java/studios/codelight/smartloginlibrary/GoogleLogin.java): `smartloginlibrary/src/main/java/studios/codelight/smartloginlibrary/GoogleLogin.java`
- [Custom login](https://github.com/codelightstudios/android-smart-login/blob/master/smartloginlibrary/src/main/java/studios/codelight/smartloginlibrary/CustomLogin.java): `smartloginlibrary/src/main/java/studios/codelight/smartloginlibrary/CustomLogin.java`

### Users and sessions

- [User mapping](https://github.com/codelightstudios/android-smart-login/blob/master/smartloginlibrary/src/main/java/studios/codelight/smartloginlibrary/util/UserUtil.java): `smartloginlibrary/src/main/java/studios/codelight/smartloginlibrary/util/UserUtil.java`
- [SmartUser models](https://github.com/codelightstudios/android-smart-login/blob/master/smartloginlibrary/src/main/java/studios/codelight/smartloginlibrary/users/SmartUser.java): `smartloginlibrary/src/main/java/studios/codelight/smartloginlibrary/users/SmartUser.java`
- [Session manager](https://github.com/codelightstudios/android-smart-login/blob/master/smartloginlibrary/src/main/java/studios/codelight/smartloginlibrary/UserSessionManager.java): `smartloginlibrary/src/main/java/studios/codelight/smartloginlibrary/UserSessionManager.java`

### Other components

- **App user**
- **Facebook SDK**
- **Google sign-in**
- **Android preferences**

## Connections

- App user → Sample activity: chooses login
- Sample activity → Login factory: builds provider
- Sample activity → Login API: starts login
- Sample activity → Login API: forwards result
- Sample activity → Login config: configures
- Sample activity → Login callbacks: implements
- Facebook login → Facebook SDK: requests sign-in
- Google login → Google sign-in: requests sign-in
- Facebook login → User mapping: maps profile
- Google login → User mapping: maps profile
- User mapping → SmartUser models: creates
- Facebook login → Session manager: saves user
- Google login → Session manager: saves user
- Session manager → Android preferences: reads and writes
- Sample activity → Session manager: loads current user
- Facebook login → Login callbacks: reports result
- Google login → Login callbacks: reports result
- Sample activity → Custom login: provides custom auth
