How weebonweed/sentinelgrid works
SentinelGrid is a Spring Boot social interaction engine for posts, comments, likes, bot/human authorship, and notification dispatch. The principal request flow is HTTP ingestion through controllers into application services, which apply domain rules and coordinate durable PostgreSQL writes with transient Redis state before mapping responses. Redis also provides bot-cap reservations, cooldowns, virality scores, and notification queues; a scheduled sweeper processes queued notifications. Relationships are limited to calls shown in indexed source references or capabilities and infrastructure explicitly described in the README; some internal notification wiring is therefore documented rather than source-verified.
Main entry points: CommentServiceImpl.java Comment service · LikeServiceImpl.java Like service · repository JPA repositories · PostServiceImpl.java Post service
Components 23
HTTP API
- Post endpoints
src/main/java/com/sentinelgrid/controller/PostController.java - Comment endpoints
src/main/java/com/sentinelgrid/controller/CommentController.java - Like endpoints
src/main/java/com/sentinelgrid/controller/LikeController.java - Requests and responses
src/main/java/com/sentinelgrid/dto
Application Services
- Post service
src/main/java/com/sentinelgrid/service/impl/PostServiceImpl.java - Comment service
src/main/java/com/sentinelgrid/service/impl/CommentServiceImpl.java - Like service
src/main/java/com/sentinelgrid/service/impl/LikeServiceImpl.java - Notification service
src/main/java/com/sentinelgrid/service/impl/NotificationServiceImpl.java - Author validation
src/main/java/com/sentinelgrid/util/AuthorResolver.java - Response mapping
src/main/java/com/sentinelgrid/mapper/EntityMapper.java - Posts, comments, likes, authors
src/main/java/com/sentinelgrid/entity
Persistence and Coordination
- JPA repositories
src/main/java/com/sentinelgrid/repository - PostgreSQL
- Bot cap reservation
src/main/java/com/sentinelgrid/redis/service/BotCapRedisService.java - Author cooldown
src/main/java/com/sentinelgrid/redis/service/CooldownRedisService.java - Virality scoring
src/main/java/com/sentinelgrid/redis/service/ViralityRedisService.java - Notification queues
src/main/java/com/sentinelgrid/redis/service/NotificationRedisService.java - Redis key builder
src/main/java/com/sentinelgrid/redis/keys/RedisKeyBuilder.java - Redis
Runtime Infrastructure
- Notification sweeper
src/main/java/com/sentinelgrid/scheduler/NotificationSweeperScheduler.java - Configuration and security
src/main/java/com/sentinelgrid/config - Error translation
src/main/java/com/sentinelgrid/handler/GlobalExceptionHandler.java
Other components
- API client
Connections 35
- API client → Post endpoints: sends requests
src/main/java/com/sentinelgrid/controller/PostController.java - API client → Comment endpoints: sends requests
src/main/java/com/sentinelgrid/controller/CommentController.java - API client → Like endpoints: sends requests
src/main/java/com/sentinelgrid/controller/LikeController.java - Post endpoints → Post service: delegates via contract
src/main/java/com/sentinelgrid/controller/PostController.java - Comment endpoints → Comment service: delegates via contract
src/main/java/com/sentinelgrid/controller/CommentController.java - Like endpoints → Like service: delegates via contract
src/main/java/com/sentinelgrid/controller/LikeController.java - Post endpoints → Requests and responses: accepts and returns
src/main/java/com/sentinelgrid/controller/PostController.java - Comment endpoints → Requests and responses: accepts and returns
src/main/java/com/sentinelgrid/controller/CommentController.java - Like endpoints → Requests and responses: accepts and returns
src/main/java/com/sentinelgrid/controller/LikeController.java - Post service → JPA repositories: reads and writes
src/main/java/com/sentinelgrid/service/impl/PostServiceImpl.java - Comment service → JPA repositories: reads and writes
src/main/java/com/sentinelgrid/service/impl/CommentServiceImpl.java - Like service → JPA repositories: reads and writes
src/main/java/com/sentinelgrid/service/impl/LikeServiceImpl.java - Post service → Author validation: validates author
src/main/java/com/sentinelgrid/service/impl/PostServiceImpl.java - Comment service → Author validation: validates author
src/main/java/com/sentinelgrid/service/impl/CommentServiceImpl.java - Post service → Response mapping: maps response
src/main/java/com/sentinelgrid/service/impl/PostServiceImpl.java - Comment service → Response mapping: maps response
src/main/java/com/sentinelgrid/service/impl/CommentServiceImpl.java - Like service → Response mapping: maps response
src/main/java/com/sentinelgrid/service/impl/LikeServiceImpl.java - Author validation → JPA repositories: checks author existence
src/main/java/com/sentinelgrid/util/AuthorResolver.java - Comment service → Bot cap reservation: reserves bot capacity
src/main/java/com/sentinelgrid/service/impl/CommentServiceImpl.java - Comment service → Author cooldown: checks cooldown
src/main/java/com/sentinelgrid/service/impl/CommentServiceImpl.java - Comment service → Virality scoring: adds reply score
src/main/java/com/sentinelgrid/service/impl/CommentServiceImpl.java - Like service → Virality scoring: adds like score
src/main/java/com/sentinelgrid/service/impl/LikeServiceImpl.java - Like service → Notification service: requests notification
src/main/java/com/sentinelgrid/service/impl/LikeServiceImpl.java - Notification service → Notification queues: dispatches notifications
src/main/java/com/sentinelgrid/service/impl/NotificationServiceImpl.java - Notification sweeper → Notification service: processes pending
- JPA repositories → PostgreSQL: persists durable state
- Bot cap reservation → Redis: reserves and releases
- Author cooldown → Redis: acquires TTL lock
- Virality scoring → Redis: increments score
- Notification queues → Redis: queues and drains
- Bot cap reservation → Redis key builder: builds keys
src/main/java/com/sentinelgrid/redis/service/BotCapRedisService.java - Author cooldown → Redis key builder: builds keys
src/main/java/com/sentinelgrid/redis/service/CooldownRedisService.java - Virality scoring → Redis key builder: builds keys
src/main/java/com/sentinelgrid/redis/service/ViralityRedisService.java - Notification queues → Redis key builder: builds keys
src/main/java/com/sentinelgrid/redis/service/NotificationRedisService.java - API client → Error translation: receives error response
src/main/java/com/sentinelgrid/handler/GlobalExceptionHandler.java