Server Repository for Capstone Design Project "Neverland
Automatically Record and Preserve Group Memories
Neverland is a service that provides an efficient way to record and archive the memories of groups and organizations.
Neverland allows users to automatically compile and generate a unified record of the group's memories, even when individuals remember them differently. Leveraging generative AI technology, this feature enables groups to conveniently and efficiently document their shared experiences.
Neverland systematically organizes and stores the group's memory records from both temporal and spatial perspectives.
This enhances the diversity and efficiency of the memory archiving process.
- Clone the repository
$ git clone https://github.com/lemonssoju/neverland-server.git
- Set the environment values in
application.yml
file
gpt.token={Your OpenAI API Key}
kakao.maps.api-key:{Your Kakao API Key}
Code Structure
./
├── Dockerfile
├── HELP.md
├── README.md
├── build.gradle
├── gradle
│ └── wrapper
│ ├── gradle-wrapper.jar
│ └── gradle-wrapper.properties
├── gradlew
├── gradlew.bat
├── neverland.iml
├── settings.gradle
└── src
├── main
│ ├── java
│ │ └── com
│ │ └── lesso
│ │ └── neverland
│ │ ├── NeverlandApplication.java
│ │ ├── album
│ │ │ ├── application
│ │ │ │ └── AlbumService.java
│ │ │ ├── domain
│ │ │ │ └── Album.java
│ │ │ ├── dto
│ │ │ │ ├── AlbumByLocationDto.java
│ │ │ │ ├── AlbumByTimeDto.java
│ │ │ │ ├── AlbumDetailResponse.java
│ │ │ │ ├── AlbumImageRequest.java
│ │ │ │ ├── AlbumListByLocationResponse.java
│ │ │ │ └── AlbumListByTimeResponse.java
│ │ │ ├── presentation
│ │ │ │ └── AlbumController.java
│ │ │ └── repository
│ │ │ └── AlbumRepository.java
│ │ ├── comment
│ │ │ ├── application
│ │ │ │ └── CommentService.java
│ │ │ ├── domain
│ │ │ │ └── Comment.java
│ │ │ ├── dto
│ │ │ │ ├── CommentDto.java
│ │ │ │ ├── ModifyCommentRequest.java
│ │ │ │ └── PostCommentRequest.java
│ │ │ ├── presentation
│ │ │ │ └── CommentController.java
│ │ │ └── repository
│ │ │ └── CommentRepository.java
│ │ ├── common
│ │ │ ├── YearMonthToString.java
│ │ │ ├── base
│ │ │ │ ├── BaseEntity.java
│ │ │ │ ├── BaseException.java
│ │ │ │ ├── BaseResponse.java
│ │ │ │ ├── BaseResponseStatus.java
│ │ │ │ └── ErrorResponse.java
│ │ │ ├── configuration
│ │ │ │ ├── AmazonS3Config.java
│ │ │ │ ├── AppConfig.java
│ │ │ │ ├── RedisConfig.java
│ │ │ │ └── WebSecurityConfig.java
│ │ │ ├── constants
│ │ │ │ ├── Constants.java
│ │ │ │ └── RequestURI.java
│ │ │ ├── enums
│ │ │ ├── exception
│ │ │ │ └── GlobalExceptionHandler.java
│ │ │ ├── image
│ │ │ │ └── ImageService.java
│ │ │ └── jwt
│ │ │ ├── JwtAuthenticationFilter.java
│ │ │ └── JwtExceptionFilter.java
│ │ ├── gpt
│ │ │ ├── application
│ │ │ │ └── GptService.java
│ │ │ ├── configuration
│ │ │ │ └── GptConfig.java
│ │ │ ├── domain
│ │ │ │ └── GptProperties.java
│ │ │ ├── dto
│ │ │ │ ├── GptRequest.java
│ │ │ │ ├── GptResponse.java
│ │ │ │ └── GptResponseDto.java
│ │ │ └── presentation
│ │ │ └── GptController.java
│ │ ├── group
│ │ │ ├── application
│ │ │ │ └── GroupService.java
│ │ │ ├── domain
│ │ │ │ └── Team.java
│ │ │ ├── dto
│ │ │ │ ├── CreateGroupRequest.java
│ │ │ │ ├── CreateGroupResponse.java
│ │ │ │ ├── EditGroupRequest.java
│ │ │ │ ├── GroupEditViewResponse.java
│ │ │ │ ├── GroupInviteResponse.java
│ │ │ │ ├── GroupJoinResponse.java
│ │ │ │ ├── GroupListDto.java
│ │ │ │ ├── GroupListResponse.java
│ │ │ │ ├── GroupProfileResponse.java
│ │ │ │ ├── GroupPuzzleDto.java
│ │ │ │ ├── GroupPuzzleListResponse.java
│ │ │ │ └── JoinGroupRequest.java
│ │ │ ├── presentation
│ │ │ │ └── GroupController.java
│ │ │ └── repository
│ │ │ └── GroupRepository.java
│ │ ├── puzzle
│ │ │ ├── application
│ │ │ │ └── PuzzleService.java
│ │ │ ├── domain
│ │ │ │ ├── Puzzle.java
│ │ │ │ ├── PuzzleLocation.java
│ │ │ │ ├── PuzzleMember.java
│ │ │ │ └── PuzzlePiece.java
│ │ │ ├── dto
│ │ │ │ ├── CompletePuzzleRequest.java
│ │ │ │ ├── CompletePuzzleResponse.java
│ │ │ │ ├── CreatePuzzleRequest.java
│ │ │ │ ├── CreatePuzzleResponse.java
│ │ │ │ ├── EditPuzzleRequest.java
│ │ │ │ ├── KakaoApiResponse.java
│ │ │ │ ├── MyPuzzleDto.java
│ │ │ │ ├── MyPuzzleListResponse.java
│ │ │ │ ├── PuzzleDetailResponse.java
│ │ │ │ ├── PuzzleEditViewResponse.java
│ │ │ │ ├── PuzzlePieceDto.java
│ │ │ │ ├── PuzzlePieceRequest.java
│ │ │ │ ├── PuzzlerDto.java
│ │ │ │ └── PuzzlerListResponse.java
│ │ │ ├── presentation
│ │ │ │ └── PuzzleController.java
│ │ │ └── repository
│ │ │ ├── PuzzleMemberRepository.java
│ │ │ ├── PuzzlePieceRepository.java
│ │ │ └── PuzzleRepository.java
│ │ └── user
│ │ ├── application
│ │ │ ├── AuthService.java
│ │ │ ├── RedisService.java
│ │ │ └── UserService.java
│ │ ├── domain
│ │ │ ├── User.java
│ │ │ ├── UserProfile.java
│ │ │ └── UserTeam.java
│ │ ├── dto
│ │ │ ├── JwtDto.java
│ │ │ ├── LoginIdRequest.java
│ │ │ ├── LoginRequest.java
│ │ │ ├── ModifyNicknameRequest.java
│ │ │ ├── ModifyPasswordRequest.java
│ │ │ ├── MyPageResponse.java
│ │ │ ├── NicknameRequest.java
│ │ │ ├── ReissueTokenRequest.java
│ │ │ ├── SignoutRequest.java
│ │ │ ├── SignupRequest.java
│ │ │ └── TokenResponse.java
│ │ ├── presentation
│ │ │ └── UserController.java
│ │ └── repository
│ │ ├── UserRepository.java
│ │ └── UserTeamRepository.java
│ └── resources
│ ├── application.yml
│ ├── static
│ └── templates
└── test
└── java
└── com
└── lesso
└── neverland
└── NeverlandApplicationTests.java
The core logic of Neverland, the image auto-generation, is powered by Chat-GPT and Stable Diffusion, and it operates through the following workflow.
Joonghyun Kim | Seojin Kwak | Somin Ji |
---|---|---|
Backend Developer | Frontend Developer | AI Developer |
Stability AI's Stable Diffusion
Kakao Map API
React Native Maps
Chat-GPT 3.5 Java Client