How jaynik-s/sentimentscribe works
SentimentScribe is a privacy-first journaling application. Users authenticate, unlock the diary locally, write encrypted entries, and save them online or offline; optional analysis and recommendations send chosen text to the backend. The graph follows the documented client/API workflow and sampled controller/service ownership. Feature wiring not present in the sampled source is included only where the README documents it; some backend use-case and frontend page details remain unsampled.
Main entry points: pages App pages · entries.ts Entry API · analysis.ts Analysis API · recommendations.ts Recommendations API
Components 31
Browser application
- App pages
frontend/src/pages - Routes and guards
frontend/src/routes.tsx - Auth state
frontend/src/state/auth.tsx - API client
frontend/src/api/http.ts - Entry API
frontend/src/api/entries.ts - Analysis API
frontend/src/api/analysis.ts - Recommendations API
frontend/src/api/recommendations.ts
Encryption and offline
- Entry encryption
frontend/src/crypto - Local entry cache
frontend/src/offline/entriesRepo.ts - Offline sync engine
frontend/src/offline/syncEngine.ts - Sync queue
frontend/src/offline/syncQueueRepo.ts
Backend API
- Auth endpoints
backend/src/main/java/com/sentimentscribe/web/AuthController.java - Authentication service
backend/src/main/java/com/sentimentscribe/service/AuthService.java - JWT service
backend/src/main/java/com/sentimentscribe/service/JwtService.java - User records
backend/src/main/java/com/sentimentscribe/persistence/postgres/repo/UserJpaRepository.java - Entry endpoints
backend/src/main/java/com/sentimentscribe/web/EntriesController.java - Entry service
backend/src/main/java/com/sentimentscribe/service/EntryService.java - Entry persistence adapter
backend/src/main/java/com/sentimentscribe/persistence/postgres/PostgresDiaryEntryRepositoryAdapter.java - Analysis endpoint
backend/src/main/java/com/sentimentscribe/web/AnalysisController.java - Recommendation endpoint
backend/src/main/java/com/sentimentscribe/web/RecommendationsController.java - Recommendation service
backend/src/main/java/com/sentimentscribe/service/RecommendationService.java
Journal and insights
- Entry use cases
backend/src/main/java/com/sentimentscribe/usecase - Keyword analysis
backend/src/main/java/com/sentimentscribe/usecase/analyze_keywords - Recommendation use case
backend/src/main/java/com/sentimentscribe/usecase/get_recommendations
External services
- NLP analysis access
backend/src/main/java/com/sentimentscribe/data/NLPAnalysisDataAccessObject.java - Spotify access
backend/src/main/java/com/sentimentscribe/data/SpotifyAPIAccessObject.java - TMDb access
backend/src/main/java/com/sentimentscribe/data/TMDbAPIAccessObject.java
Other components
- Journal user
- PostgreSQL
- Spotify API
- TMDb API
Connections 33
- Journal user → App pages: uses
- App pages → Routes and guards: navigates
- Routes and guards → Auth state: checks access
- App pages → Entry encryption: encrypts locally
- App pages → Local entry cache: caches ciphertext
- App pages → Entry API: requests entries
- Entry API → API client: sends requests
- App pages → Analysis API: requests analysis
- Analysis API → API client: sends requests
- App pages → Recommendations API: requests suggestions
- Recommendations API → API client: sends requests
- Local entry cache → Sync queue: queues changes
- Offline sync engine → Sync queue: reads and updates
- Offline sync engine → Entry API: replays changes
- Journal user → Auth endpoints: registers or logs in
- Auth endpoints → Authentication service: delegates
- Authentication service → User records: reads and writes
- Authentication service → JWT service: issues token
- Entry API → Entry endpoints: calls entry API
- Entry endpoints → Entry service: delegates
- Entry service → Entry use cases: executes
- Entry use cases → Entry persistence adapter: accesses entries
- Entry persistence adapter → PostgreSQL: reads and writes ciphertext
- Analysis API → Analysis endpoint: calls analysis API
- Analysis endpoint → Keyword analysis: delegates
- Keyword analysis → NLP analysis access: extracts keywords
- Recommendations API → Recommendation endpoint: calls recommendations API
- Recommendation endpoint → Recommendation service: delegates
- Recommendation service → Recommendation use case: executes
- Recommendation use case → Spotify access: requests songs
- Recommendation use case → TMDb access: requests movies
- Spotify access → Spotify API: queries
- TMDb access → TMDb API: queries