How yoohyeok/codertown-server works
Codertown is a project-recruitment and collaboration backend with member accounts, recruitment listings, project participation, messaging, and a Coggle discussion/notification feature. The main workflow is users discovering or creating recruitments, joining project roles, and coordinating in chat; account and community features are parallel branches. The excerpts establish several service-to-repository and service-to-domain behaviors, but most controllers and some integrations were not sampled, so those links are omitted or marked unverified.
Main entry points: RecruitService.java Recruitment service · UserService.java Account service · ChatRoomService.java Chat rooms · CoggleService.java Coggle service
Components 27
Accounts and access
- Members
src/main/java/io/codertown/web/entity/user/User.java - Account API
src/main/java/io/codertown/web/controller/UserApiController.java - Account service
src/main/java/io/codertown/web/service/UserService.java - Member repository
src/main/java/io/codertown/web/repository/UserRepository.java - OAuth login
src/main/java/io/codertown/web/service/oauth2/CustomOAuth2UserService.java - JWT provider
src/main/java/io/codertown/support/jwt/JwtTokenProvider.java
Recruitment and projects
- Recruitment API
src/main/java/io/codertown/web/controller/RecruitApiController.java - Recruitment service
src/main/java/io/codertown/web/service/RecruitService.java - Recruitment listings
src/main/java/io/codertown/web/entity/recruit/Recruit.java - Recruit search
src/main/java/io/codertown/web/repository/querydsl/RecruitQuerydslRepositoryImpl.java - Project lifecycle
src/main/java/io/codertown/web/entity/project/Project.java - Project roles
src/main/java/io/codertown/web/entity/ProjectPart.java - Project membership
src/main/java/io/codertown/web/entity/UserProject.java - Project repository
src/main/java/io/codertown/web/repository/ProjectRepository.java
Community and messaging
- Coggle API
src/main/java/io/codertown/web/controller/CoggleApiController.java - Coggle service
src/main/java/io/codertown/web/service/CoggleService.java - Posts and comments
src/main/java/io/codertown/web/entity/coggle/Coggle.java - Notifications
src/main/java/io/codertown/web/entity/coggle/Notification.java - Chat APIs
src/main/java/io/codertown/web/controller/ChatRoomApiController.java - Message API
src/main/java/io/codertown/web/controller/ChatMessageController.java - Chat rooms
src/main/java/io/codertown/web/service/ChatRoomService.java - Chat messages
src/main/java/io/codertown/web/entity/chat/ChatMessage.java
Application infrastructure
- Address lookup
src/main/java/io/codertown/web/controller/AddressCategoryDBController.java - Address repository
src/main/java/io/codertown/web/repository/AddressRepository.java - WebSocket handling
src/main/java/io/codertown/support/interceptor/StompHandler.java
Other components
- User
- Relational database
Connections 28
- User → Account API: uses accounts
src/main/java/io/codertown/web/controller/UserApiController.java - Account API → Account service: delegates to
src/main/java/io/codertown/web/controller/UserApiController.java - Account service → Member repository: reads and saves
src/main/java/io/codertown/web/service/UserService.java - Account service → JWT provider: creates tokens
src/main/java/io/codertown/web/service/UserService.java - OAuth login → Member repository: looks up members
src/main/java/io/codertown/web/service/oauth2/CustomOAuth2UserService.java - Account service → Project repository: loads joined projects
src/main/java/io/codertown/web/service/UserService.java - Project repository → Project lifecycle: queries projects
src/main/java/io/codertown/web/repository/ProjectRepository.java - User → Recruitment API: browses listings
- Recruitment API → Recruitment service: delegates to
src/main/java/io/codertown/web/controller/RecruitApiController.java - Recruitment service → Recruit search: searches listings
src/main/java/io/codertown/web/service/RecruitService.java - Recruitment service → Project lifecycle: creates projects
src/main/java/io/codertown/web/service/RecruitService.java - Recruitment service → Project roles: updates roles
src/main/java/io/codertown/web/service/RecruitService.java - Recruitment service → Project membership: records participation
src/main/java/io/codertown/web/service/RecruitService.java - User → Coggle API: uses discussions
- Coggle API → Coggle service: delegates to
src/main/java/io/codertown/web/controller/CoggleApiController.java - Coggle service → Posts and comments: reads and updates
src/main/java/io/codertown/web/service/CoggleService.java - Coggle service → Notifications: manages notifications
src/main/java/io/codertown/web/service/CoggleService.java - User → Chat APIs: uses chat
- Chat APIs → Chat rooms: delegates to
src/main/java/io/codertown/web/controller/ChatRoomApiController.java - Message API → Chat rooms: routes messages
- WebSocket handling → Chat rooms: checks room access
src/main/java/io/codertown/support/interceptor/StompHandler.java - Chat rooms → Chat messages: loads messages
src/main/java/io/codertown/web/service/ChatRoomService.java - User → Address lookup: requests addresses
src/main/java/io/codertown/web/controller/AddressCategoryDBController.java - Address lookup → Address repository: queries
src/main/java/io/codertown/web/controller/AddressCategoryDBController.java - Member repository → Relational database: persists members
- Recruit search → Relational database: queries listings
- Posts and comments → Relational database: persists posts
- Chat messages → Relational database: persists messages