How koushikkothagal/inbox-app works
Inbox App is a Spring webmail application: a signed-in user opens a folder, views messages, and can compose email for delivery into recipient inboxes. EmailService creates sent/inbox listing records, stores the message, and updates unread counters; page controllers load and mark messages read. Cassandra-backed tables hold message bodies, per-user folder listings, folders, and unread statistics. GitHub OAuth and Astra are documented or indicated by configuration modules, but their full wiring and the compose page implementation are not excerpted, so uncertain links are omitted.
Main entry points: EmailPageController.java Email page · InboxPageController.java Inbox page · EmailService.java Email service · EmailsListRepository.java Mailbox listings
Components 25
Web experience
- Inbox page
src/main/java/io/javabrains/inbox/controllers/InboxPageController.java - Email page
src/main/java/io/javabrains/inbox/controllers/EmailPageController.java - Compose page
src/main/java/io/javabrains/inbox/controllers/ComposePageController.java - Inbox view
src/main/resources/templates/inbox-page.html - Email view
src/main/resources/templates/email-page.html - Compose view
src/main/resources/templates/compose-page.html - Folder component
src/main/resources/templates/components/folder-list.html
Mail workflow
- Email service
src/main/java/io/javabrains/inbox/email/EmailService.java - Folder service
src/main/java/io/javabrains/inbox/folders/FoldersService.java
Cassandra state
- Message repository
src/main/java/io/javabrains/inbox/email/EmailRepository.java - Message record
src/main/java/io/javabrains/inbox/email/Email.java - Mailbox listings
src/main/java/io/javabrains/inbox/emailslist/EmailsListRepository.java - Listing record
src/main/java/io/javabrains/inbox/emailslist/EmailsList.java - Listing key
src/main/java/io/javabrains/inbox/emailslist/EmailsListPrimaryKey.java - Folder repository
src/main/java/io/javabrains/inbox/folders/FolderRepository.java - Folder record
src/main/java/io/javabrains/inbox/folders/Folder.java - Unread statistics
src/main/java/io/javabrains/inbox/folders/UnreadEmailStatsRepository.java - Unread record
src/main/java/io/javabrains/inbox/folders/UnreadEmailStats.java - Statistics key
src/main/java/io/javabrains/inbox/folders/UnreadEmailStatsPrimaryKey.java
Identity and setup
- Web security
src/main/java/io/javabrains/inbox/SecurityAdapter.java - Application setup
src/main/java/io/javabrains/inbox/SpringGitHubLoginApplication.java - Astra properties
src/main/java/io/javabrains/inbox/DataStaxAstraProperties.java
Other components
- Signed-in user
- GitHub OAuth
- Astra Cassandra
Connections 30
- Signed-in user → Inbox page: opens folder
src/main/java/io/javabrains/inbox/controllers/InboxPageController.java - Signed-in user → Email page: opens message
src/main/java/io/javabrains/inbox/controllers/EmailPageController.java - Signed-in user → Compose page: composes mail
src/main/java/io/javabrains/inbox/controllers/ComposePageController.java - Inbox page → Inbox view: renders
src/main/java/io/javabrains/inbox/controllers/InboxPageController.java - Email page → Email view: renders
src/main/java/io/javabrains/inbox/controllers/EmailPageController.java - Inbox page → Folder service: loads counts
src/main/java/io/javabrains/inbox/controllers/InboxPageController.java - Inbox page → Folder repository: loads folders
src/main/java/io/javabrains/inbox/controllers/InboxPageController.java - Inbox page → Mailbox listings: loads listings
src/main/java/io/javabrains/inbox/controllers/InboxPageController.java - Email page → Folder service: loads counts
src/main/java/io/javabrains/inbox/controllers/EmailPageController.java - Email page → Folder repository: loads folders
src/main/java/io/javabrains/inbox/controllers/EmailPageController.java - Email page → Message repository: loads message
src/main/java/io/javabrains/inbox/controllers/EmailPageController.java - Email page → Mailbox listings: marks read
src/main/java/io/javabrains/inbox/controllers/EmailPageController.java - Email page → Unread statistics: decrements count
src/main/java/io/javabrains/inbox/controllers/EmailPageController.java - Compose page → Email service: submits mail
src/main/java/io/javabrains/inbox/controllers/ComposePageController.java - Compose page → Folder repository: loads folders
src/main/java/io/javabrains/inbox/controllers/ComposePageController.java - Email service → Mailbox listings: saves listings
src/main/java/io/javabrains/inbox/email/EmailService.java - Email service → Message repository: saves message
src/main/java/io/javabrains/inbox/email/EmailService.java - Email service → Unread statistics: increments count
src/main/java/io/javabrains/inbox/email/EmailService.java - Folder service → Unread statistics: reads counts
src/main/java/io/javabrains/inbox/folders/FoldersService.java - Message repository → Message record: persists
src/main/java/io/javabrains/inbox/email/EmailRepository.java - Mailbox listings → Listing record: persists
src/main/java/io/javabrains/inbox/emailslist/EmailsListRepository.java - Listing record → Listing key: keyed by
src/main/java/io/javabrains/inbox/emailslist/EmailsList.java - Folder repository → Folder record: persists
src/main/java/io/javabrains/inbox/folders/FolderRepository.java - Unread statistics → Unread record: persists
src/main/java/io/javabrains/inbox/folders/UnreadEmailStatsRepository.java - Unread record → Statistics key: keyed by
- Web security → GitHub OAuth: authenticates with
- Application setup → Astra properties: configures
src/main/java/io/javabrains/inbox/SpringGitHubLoginApplication.java - Application setup → Email service: wires
src/main/java/io/javabrains/inbox/SpringGitHubLoginApplication.java - Astra properties → Astra Cassandra: connects to
- Astra Cassandra → Signed-in user: hosts mail data
README.md