# kamalber/flyproject-spring-boot architecture

> Architecture diagram of the GitHub repository kamalber/flyproject-spring-boot, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-11-12). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/kamalber/flyproject-spring-boot
- Repository: https://github.com/kamalber/flyproject-spring-boot

## Overview

Fly Knowledge is a multi-user sentiment-analysis web application: members publish local-forum posts, while scheduled keyword collection brings in tweets; the application analyzes opinions as positive, negative, or neutral and exposes statistics. The README names Java Naive Bayes, Gate Cloud, and Python NLTK as analysis tools. The sampled sources show Twitter controller/service and analysis responsibilities, but do not establish the full post, comment, or browser-to-server wiring; those connections are therefore omitted. Several entities and utilities are grouped by their exact source directory.

Main entry points: [`src/main/java/com/weberfly/service/TweetAnalyseService.java`](https://github.com/kamalber/flyproject-spring-boot/blob/master/src/main/java/com/weberfly/service/TweetAnalyseService.java) (Analysis Orchestrator), [`src/main/java/com/weberfly/controller/TwitterController.java`](https://github.com/kamalber/flyproject-spring-boot/blob/master/src/main/java/com/weberfly/controller/TwitterController.java) (Twitter API), [`src/main/java/com/weberfly/service/PostService.java`](https://github.com/kamalber/flyproject-spring-boot/blob/master/src/main/java/com/weberfly/service/PostService.java) (Post Services), [`src/main/java/com/weberfly/service/TwitterService.java`](https://github.com/kamalber/flyproject-spring-boot/blob/master/src/main/java/com/weberfly/service/TwitterService.java) (Tweet Collection)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_web["Web API"]
  node_twitter_api["Twitter API"]
  node_account_api["Account API"]
  node_community_api["Community APIs"]
  node_user_auth["User Authentication"]
end

subgraph group_domain["Community Data"]
  node_community_domain["Community Entities"]
  node_community_services["Post Services<br/>[PostService.java]"]
  node_community_store[("Community Repositories")]
end

subgraph group_twitter["Twitter Analysis"]
  node_twitter_keywords["Keyword Management"]
  node_twitter_entities["Tweet Entities<br/>[Twitte.java]"]
  node_twitter_service["Tweet Collection"]
  node_twitter_store[("Twitter Repository")]
  node_twitter_schedule["Collection Scheduler"]
end

subgraph group_analysis["Sentiment Analysis"]
  node_analysis_service["Analysis Orchestrator"]
  node_analysis_results["Polarity Statistics"]
  node_java_bayes["Naive Bayes<br/>[NaiveBayes.java]"]
  node_nltk["NLTK Service"]
  node_gate["Gate Cloud"]
  node_analysis_utilities["Analysis Utilities"]
end

node_member(("Member"))
node_twitter(("Twitter"))
node_chart_graphic["Chart Graphics<br/>[graphic.js]"]

node_member -->|"manages keywords"| node_twitter_api
node_member -.->|"uses accounts"| node_account_api
node_member -.->|"publishes posts"| node_community_api
node_twitter -.->|"provides tweets"| node_twitter_api
node_twitter_api -->|"manages keywords"| node_twitter_keywords
node_twitter_api -->|"requests analysis"| node_analysis_service
node_twitter_api -->|"requests statistics"| node_twitter_service
node_twitter_service -->|"queries tweets"| node_twitter_store
node_twitter_schedule -.->|"collects tweets"| node_twitter_service
node_twitter_keywords -->|"tracks keywords"| node_twitter_entities
node_community_api -.->|"delegates posts"| node_community_services
node_community_services -->|"queries posts"| node_community_store
node_community_services -->|"requests analysis"| node_analysis_service
node_analysis_service -->|"uses classifier"| node_java_bayes
node_analysis_service -->|"posts sentences"| node_nltk
node_analysis_service -->|"posts opinions"| node_gate
node_analysis_service -->|"builds statistics"| node_analysis_utilities
node_analysis_service -->|"uses tweet data"| node_twitter_service
node_analysis_service -->|"uses post data"| node_community_services
node_analysis_service -.->|"returns polarity"| node_analysis_results
node_user_auth -.->|"loads user"| node_community_store

click node_twitter_api "https://github.com/kamalber/flyproject-spring-boot/blob/master/src/main/java/com/weberfly/controller/TwitterController.java"
click node_account_api "https://github.com/kamalber/flyproject-spring-boot/blob/master/src/main/java/com/weberfly/controller/AcountController.java"
click node_community_api "https://github.com/kamalber/flyproject-spring-boot/blob/master/src/main/java/com/weberfly/controller/PostController.java"
click node_user_auth "https://github.com/kamalber/flyproject-spring-boot/blob/master/src/main/java/com/weberfly/config/AppUserDetailsService.java"
click node_community_domain "https://github.com/kamalber/flyproject-spring-boot/tree/master/src/main/java/com/weberfly/entities"
click node_community_services "https://github.com/kamalber/flyproject-spring-boot/blob/master/src/main/java/com/weberfly/service/PostService.java"
click node_community_store "https://github.com/kamalber/flyproject-spring-boot/blob/master/src/main/java/com/weberfly/dao/PostRepository.java"
click node_twitter_keywords "https://github.com/kamalber/flyproject-spring-boot/blob/master/src/main/java/com/weberfly/service/TwitterKeyWordService.java"
click node_twitter_entities "https://github.com/kamalber/flyproject-spring-boot/blob/master/src/main/java/com/weberfly/entities/Twitte.java"
click node_twitter_service "https://github.com/kamalber/flyproject-spring-boot/blob/master/src/main/java/com/weberfly/service/TwitterService.java"
click node_twitter_store "https://github.com/kamalber/flyproject-spring-boot/blob/master/src/main/java/com/weberfly/dao/TwitterRepository.java"
click node_twitter_schedule "https://github.com/kamalber/flyproject-spring-boot/blob/master/src/main/java/com/weberfly/service/threads/TwitterTimerThread.java"
click node_analysis_service "https://github.com/kamalber/flyproject-spring-boot/blob/master/src/main/java/com/weberfly/service/TweetAnalyseService.java"
click node_analysis_results "https://github.com/kamalber/flyproject-spring-boot/blob/master/src/main/java/com/weberfly/util/SentimentStats.java"
click node_java_bayes "https://github.com/kamalber/flyproject-spring-boot/blob/master/src/main/java/com/weberfly/util/opensource/classifiers/NaiveBayes.java"
click node_nltk "https://github.com/kamalber/flyproject-spring-boot/blob/master/python/AnalyseNLTKBySentences.py"
click node_analysis_utilities "https://github.com/kamalber/flyproject-spring-boot/tree/master/src/main/java/com/weberfly/util"
click node_chart_graphic "https://github.com/kamalber/flyproject-spring-boot/blob/master/src/main/resources/static/vendors/echarts/src/util/graphic.js"

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_twitter_api,node_account_api,node_community_api,node_user_auth toneBlue
class node_community_domain,node_community_services,node_community_store toneAmber
class node_twitter_keywords,node_twitter_entities,node_twitter_service,node_twitter_store,node_twitter_schedule toneMint
class node_analysis_service,node_analysis_results,node_java_bayes,node_nltk,node_gate,node_analysis_utilities toneRose
class node_member,node_twitter toneIndigo
class node_chart_graphic toneTeal
```

## Components

### Web API

- [Twitter API](https://github.com/kamalber/flyproject-spring-boot/blob/master/src/main/java/com/weberfly/controller/TwitterController.java): `src/main/java/com/weberfly/controller/TwitterController.java`
- [Account API](https://github.com/kamalber/flyproject-spring-boot/blob/master/src/main/java/com/weberfly/controller/AcountController.java): `src/main/java/com/weberfly/controller/AcountController.java`
- [Community APIs](https://github.com/kamalber/flyproject-spring-boot/blob/master/src/main/java/com/weberfly/controller/PostController.java): `src/main/java/com/weberfly/controller/PostController.java`
- [User Authentication](https://github.com/kamalber/flyproject-spring-boot/blob/master/src/main/java/com/weberfly/config/AppUserDetailsService.java): `src/main/java/com/weberfly/config/AppUserDetailsService.java`

### Community Data

- [Community Entities](https://github.com/kamalber/flyproject-spring-boot/tree/master/src/main/java/com/weberfly/entities): `src/main/java/com/weberfly/entities`
- [Post Services](https://github.com/kamalber/flyproject-spring-boot/blob/master/src/main/java/com/weberfly/service/PostService.java): `src/main/java/com/weberfly/service/PostService.java`
- [Community Repositories](https://github.com/kamalber/flyproject-spring-boot/blob/master/src/main/java/com/weberfly/dao/PostRepository.java): `src/main/java/com/weberfly/dao/PostRepository.java`

### Twitter Analysis

- [Keyword Management](https://github.com/kamalber/flyproject-spring-boot/blob/master/src/main/java/com/weberfly/service/TwitterKeyWordService.java): `src/main/java/com/weberfly/service/TwitterKeyWordService.java`
- [Tweet Entities](https://github.com/kamalber/flyproject-spring-boot/blob/master/src/main/java/com/weberfly/entities/Twitte.java): `src/main/java/com/weberfly/entities/Twitte.java`
- [Tweet Collection](https://github.com/kamalber/flyproject-spring-boot/blob/master/src/main/java/com/weberfly/service/TwitterService.java): `src/main/java/com/weberfly/service/TwitterService.java`
- [Twitter Repository](https://github.com/kamalber/flyproject-spring-boot/blob/master/src/main/java/com/weberfly/dao/TwitterRepository.java): `src/main/java/com/weberfly/dao/TwitterRepository.java`
- [Collection Scheduler](https://github.com/kamalber/flyproject-spring-boot/blob/master/src/main/java/com/weberfly/service/threads/TwitterTimerThread.java): `src/main/java/com/weberfly/service/threads/TwitterTimerThread.java`

### Sentiment Analysis

- [Analysis Orchestrator](https://github.com/kamalber/flyproject-spring-boot/blob/master/src/main/java/com/weberfly/service/TweetAnalyseService.java): `src/main/java/com/weberfly/service/TweetAnalyseService.java`
- [Polarity Statistics](https://github.com/kamalber/flyproject-spring-boot/blob/master/src/main/java/com/weberfly/util/SentimentStats.java): `src/main/java/com/weberfly/util/SentimentStats.java`
- [Naive Bayes](https://github.com/kamalber/flyproject-spring-boot/blob/master/src/main/java/com/weberfly/util/opensource/classifiers/NaiveBayes.java): `src/main/java/com/weberfly/util/opensource/classifiers/NaiveBayes.java`
- [NLTK Service](https://github.com/kamalber/flyproject-spring-boot/blob/master/python/AnalyseNLTKBySentences.py): `python/AnalyseNLTKBySentences.py`
- **Gate Cloud**
- [Analysis Utilities](https://github.com/kamalber/flyproject-spring-boot/tree/master/src/main/java/com/weberfly/util): `src/main/java/com/weberfly/util`

### Other components

- **Member**
- **Twitter**
- [Chart Graphics](https://github.com/kamalber/flyproject-spring-boot/blob/master/src/main/resources/static/vendors/echarts/src/util/graphic.js): `src/main/resources/static/vendors/echarts/src/util/graphic.js`

## Connections

- Member → Twitter API: manages keywords (evidence: `src/main/java/com/weberfly/controller/TwitterController.java`)
- Member → Account API: uses accounts
- Member → Community APIs: publishes posts
- Twitter → Twitter API: provides tweets
- Twitter API → Keyword Management: manages keywords (evidence: `src/main/java/com/weberfly/controller/TwitterController.java`)
- Twitter API → Analysis Orchestrator: requests analysis (evidence: `src/main/java/com/weberfly/controller/TwitterController.java`)
- Twitter API → Tweet Collection: requests statistics (evidence: `src/main/java/com/weberfly/controller/TwitterController.java`)
- Tweet Collection → Twitter Repository: queries tweets (evidence: `src/main/java/com/weberfly/service/TwitterService.java`)
- Collection Scheduler → Tweet Collection: collects tweets
- Keyword Management → Tweet Entities: tracks keywords (evidence: `src/main/java/com/weberfly/entities/TwitterKeyWord.java`)
- Community APIs → Post Services: delegates posts
- Post Services → Community Repositories: queries posts (evidence: `src/main/java/com/weberfly/service/PostService.java`)
- Post Services → Analysis Orchestrator: requests analysis (evidence: `src/main/java/com/weberfly/service/PostService.java`)
- Analysis Orchestrator → Naive Bayes: uses classifier (evidence: `src/main/java/com/weberfly/service/TweetAnalyseService.java`)
- Analysis Orchestrator → NLTK Service: posts sentences (evidence: `src/main/java/com/weberfly/service/TweetAnalyseService.java`)
- Analysis Orchestrator → Gate Cloud: posts opinions (evidence: `src/main/java/com/weberfly/service/TweetAnalyseService.java`)
- Analysis Orchestrator → Analysis Utilities: builds statistics (evidence: `src/main/java/com/weberfly/service/TweetAnalyseService.java`)
- Analysis Orchestrator → Tweet Collection: uses tweet data (evidence: `src/main/java/com/weberfly/service/TweetAnalyseService.java`)
- Analysis Orchestrator → Post Services: uses post data (evidence: `src/main/java/com/weberfly/service/TweetAnalyseService.java`)
- Analysis Orchestrator → Polarity Statistics: returns polarity
- User Authentication → Community Repositories: loads user
