Skip to content

✨ Server Repository for Capstone Design Project "Neverland"

Notifications You must be signed in to change notification settings

lemonssoju/neverland-server

Repository files navigation

🧚🏻 Neverland Server

Server Repository for Capstone Design Project "Neverland

📱 About the Project

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.

Automatically Record and Preserve Group Memories

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.

Effective Memory Archiving

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.

🚀 Getting Started

Prerequisites

Install

  1. Clone the repository
$ git clone https://github.com/lemonssoju/neverland-server.git
  1. Set the environment values in application.yml file
gpt.token={Your OpenAI API Key}
kakao.maps.api-key:{Your Kakao API Key}

📌 System Architecture

architecture


⚙️ Project Structure

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

🛠️ Tech Stacks

Frontend

Frontend

Platform

External API

Develop tools



Backend

Backend

JWT

Database

Cloud

CD

External API

Develop tools



✨ Features

7

8

9

10

11

12

13


✨ Core Feature Logic

The core logic of Neverland, the image auto-generation, is powered by Chat-GPT and Stable Diffusion, and it operates through the following workflow. Core Feature



🧩 Contributors

Joonghyun Kim Seojin Kwak Somin Ji
Backend Developer Frontend Developer AI Developer


🔗 Open Source Libraries and SDK

Stability AI's Stable Diffusion
Kakao Map API
React Native Maps
Chat-GPT 3.5 Java Client