How gabryeldsous/chatpersona works
Chat Persona is a REST API for user-managed AI characters and persistent, character-based conversations. The principal workflow is: a user authenticates, selects a character, starts a conversation, then sends or edits messages; the application obtains AI-generated replies and persists conversation history. User, character, and conversation use cases form the application layer, with repository adapters providing persistence and an AI gateway providing the model integration. The README documents JWT authorization and role-based access. Some use-case internals were not sampled, so links from those use cases to repositories and the AI gateway reflect documented behavior and architecture, not inspected call sites.
Main entry points: application/usecase Conversation use cases · UserController.java User API · JpaCharacterRepositoryAdapter.java Character persistence · application/usecase User use cases
Components 15
Identity and access
- User API
src/main/java/dev/gabryel/chatpersona/user/application/api/UserController.java - User use cases
src/main/java/dev/gabryel/chatpersona/user/application/usecase - JWT security
src/main/java/dev/gabryel/chatpersona/user/infrastructure/security - User persistence
src/main/java/dev/gabryel/chatpersona/user/infrastructure/persistence/JpaUserRepositoryAdapter.java
Character management
- Character API
src/main/java/dev/gabryel/chatpersona/character/api/CharacterController.java - Character use cases
src/main/java/dev/gabryel/chatpersona/character/application/usecase - Character persistence
src/main/java/dev/gabryel/chatpersona/character/infrastructure/persistence/JpaCharacterRepositoryAdapter.java
Conversation and messaging
- Conversation API
src/main/java/dev/gabryel/chatpersona/conversation/application/api/ConversationController.java - Conversation use cases
src/main/java/dev/gabryel/chatpersona/conversation/application/usecase - Conversation persistence
src/main/java/dev/gabryel/chatpersona/conversation/infrastructure/persistence/conversation/JpaConversationRepositoryAdapter.java - Message persistence
src/main/java/dev/gabryel/chatpersona/conversation/infrastructure/persistence/message/JpaMessageRepositoryAdapter.java
Runtime integrations
- AI chat gateway
src/main/java/dev/gabryel/chatpersona/conversation/infrastructure/ai/SpringAiChatGateway.java
Other components
- User
- LLM provider
- PostgreSQL
Connections 18
- User → User API: submits requests
- User API → User use cases: dispatches
- User use cases → User persistence: uses repository
- User API → JWT security: uses authenticated identity
- User → Character API: manages characters
- Character API → Character use cases: dispatches
- Character use cases → Character persistence: uses repository
- User → Conversation API: starts and chats
- Conversation API → Conversation use cases: dispatches
- Conversation use cases → Character persistence: loads character
- Conversation use cases → Conversation persistence: uses repository
- Conversation use cases → Message persistence: reads and writes messages
- Conversation use cases → AI chat gateway: requests AI reply
- AI chat gateway → LLM provider: sends chat context
- User persistence → PostgreSQL: reads and writes
- Character persistence → PostgreSQL: reads and writes
- Conversation persistence → PostgreSQL: reads and writes
- Message persistence → PostgreSQL: reads and writes