How samba-gomis/guildboard works
GuildBoard is a web application for managing an adventurers’ guild. The guild master uses the React interface to browse and mutate adventurers and quests; frontend services send HTTP requests to Spring controllers, which delegate to services. Domain services enforce assignment, completion, reward, XP, and leveling rules, then persist entities in PostgreSQL. Responses return through the same layers to lists, detail pages, XP displays, and assignment history. The frontend page-to-component wiring and some unsampled backend details are represented only where supported by the tree and README.
Components 19
Web Interface
- React App
frontend/src/App.tsx - Quest Screens
frontend/src/pages/QuestsPage.tsx - Adventurer Screens
frontend/src/pages/AdventurersPage.tsx - Adventurer Detail
frontend/src/pages/AdventurerDetailPage.tsx - Quest Client
frontend/src/services/questService.ts - Adventurer Client
frontend/src/services/adventurerService.ts - HTTP Client
frontend/src/services/httpClient.ts
REST API
- Quest Controller
backend/demo/src/main/java/com/forgesoft/guildboard/controller/QuestController.java - Adventurer Controller
backend/demo/src/main/java/com/forgesoft/guildboard/controller/AdventurerController.java - Error Handler
backend/demo/src/main/java/com/forgesoft/guildboard/exception/GlobalExceptionHandler.java - API Contracts
backend/demo/src/main/java/com/forgesoft/guildboard/dto
Guild Domain
- Quest Rules
backend/demo/src/main/java/com/forgesoft/guildboard/service/QuestService.java - Adventurer Rules
backend/demo/src/main/java/com/forgesoft/guildboard/service/AdventurerService.java - Guild Entities
backend/demo/src/main/java/com/forgesoft/guildboard/entity
Data Persistence
- Quest Repository
backend/demo/src/main/java/com/forgesoft/guildboard/repository/QuestRepository.java - Adventurer Repository
backend/demo/src/main/java/com/forgesoft/guildboard/repository/AdventurerRepository.java - Assignment Repository
backend/demo/src/main/java/com/forgesoft/guildboard/repository/AssignmentRepository.java - PostgreSQL
Other components
- Guild Master
Connections 30
- Guild Master → React App: uses
- React App → Quest Screens: shows
- React App → Adventurer Screens: shows
- Adventurer Screens → Adventurer Detail: opens
- Quest Screens → Quest Client: requests quests
- Adventurer Screens → Adventurer Client: requests adventurers
- Adventurer Detail → Adventurer Client: loads history
- Quest Client → HTTP Client: calls
- Adventurer Client → HTTP Client: calls
- HTTP Client → Quest Controller: HTTP requests
- HTTP Client → Adventurer Controller: HTTP requests
- Quest Controller → Quest Rules: delegates
- Adventurer Controller → Adventurer Rules: delegates
- Quest Controller → API Contracts: uses DTOs
- Adventurer Controller → API Contracts: uses DTOs
- Quest Rules → API Contracts: maps responses
- Adventurer Rules → API Contracts: maps responses
- Quest Rules → Quest Repository: reads/writes
- Quest Rules → Adventurer Repository: reads adventurers
- Quest Rules → Assignment Repository: reads/writes
- Adventurer Rules → Adventurer Repository: reads/writes
- Adventurer Rules → Assignment Repository: reads history
- Quest Repository → PostgreSQL: queries
- Adventurer Repository → PostgreSQL: queries
- Assignment Repository → PostgreSQL: queries
- Quest Rules → Guild Entities: applies rules
- Adventurer Rules → Guild Entities: maps entities
- Error Handler → API Contracts: formats errors
- Quest Controller → Error Handler: raises errors
- Adventurer Controller → Error Handler: raises errors