- 가족의 역사를 기록하고 싶은 분
- 세대 간의 추억을 간직하고 싶은 분
- 부모님이나 조부모님의 모습을 생생하게 기억하고 싶은 분
TimeCapsule 서비스는 가족 간 또는 세대 간의 이야기를 기록하고 보존하는 것을 목표로 기획되었습니다.
사용자는 가족의 역사를 웹페이지 형태로 저장하여, 자손 및 후손들이 자신들의 생전 모습을 볼 수 있을 뿐만 아니라, 목소리도 들을 수 있습니다.
이를 통해 소중한 가족의 추억이 세월이 흘러도 생생하게 유지되며, 다음 세대에 전해질 수 있습니다.
또한, 이 서비스는 단순히 사진과 목소리뿐만 아니라, 가족 구성원들의 생애 이야기를 텍스트로 기록할 수 있는 기능도 제공합니다.
이를 통해 부모님이나 조부모님의 일대기를 세세하게 남길 수 있으며, 후손들은 이 기록을 통해 자신들의 뿌리를 더욱 깊이 이해하고, 그 의미를 되새길 수 있습니다.
언제든지 원할 때마다 이 기록들을 되돌아보며, 가족의 유대감을 강화하고, 세대 간의 소통을 돕는 소중한 자산이 될 것입니다.
- 프로젝트 이름 : TimeCapsule
- 프로젝트 팀명 : A-HI
- 프로젝트 기간 : 2024.08.21 ~ 2024.09.13
- 가족의 역사와 추억을 세대 간에 전하는 커뮤니티
- 생생한 기억과 따뜻한 목소리를 보존하는 커뮤니티
- 미래 세대에게 소중한 유산을 전달하는 커뮤니티
📁 src
├── 📁 main
│ ├── 📁 java
│ │ ├── 📁 api
│ │ │ ├── 📄 AlanAPI.java
│ │ │ └── 📄 STTAPI.java
│ │ ├── 📁 config
│ │ │ ├── 📄 AuthorityUtils.java
│ │ │ ├── 📄 JwtAuthenticationEntryPoint.java
│ │ │ ├── 📄 JwtAuthenticationFilter.java
│ │ │ ├── 📄 JwtTokenProvider.java
│ │ │ ├── 📄 PasswordEncoderConfig.java
│ │ │ ├── 📄 RedisService.java
│ │ │ ├── 📄 RegExp.java
│ │ │ ├── 📄 SecurityConfig.java
│ │ │ └── 📄 UserDetailService.java
│ │ ├── 📁 controller
│ │ │ ├── 📄 ApiController.java
│ │ │ ├── 📄 CommentController.java
│ │ │ ├── 📄 MainController.java
│ │ │ ├── 📄 NoticeController.java
│ │ │ ├── 📄 StoryController.java
│ │ │ └── 📄 UserController.java
│ │ ├── 📁 dto
│ │ │ ├── 📁 notice
│ │ │ │ ├── 📁 request
│ │ │ │ │ ├── 📄 NoticeCreateDTO.java
│ │ │ │ │ └── 📄 NoticeUpdateDTO.java
│ │ │ │ └── 📁 response
│ │ │ │ ├── 📄 NoticeDetailDTO.java
│ │ │ │ └── 📄 NoticeListDTO.java
│ │ │ ├── 📁 request
│ │ │ │ ├── 📄 StoryContentDTO.java
│ │ │ │ └── 📄 StoryOptionDTO.java
│ │ │ ├── 📄 ApiResponse.java
│ │ │ ├── 📄 CommentDTO.java
│ │ │ ├── 📄 FindImagesResponseDTO.java
│ │ │ ├── 📄 FindSharedResponseDTO.java
│ │ │ ├── 📄 FindStoryResponseDTO.java
│ │ │ ├── 📄 ImageDTO.java
│ │ │ ├── 📄 NoticeDTO.java
│ │ │ ├── 📄 StoryDTO.java
│ │ │ ├── 📄 StoryShareDTO.java
│ │ │ ├── 📄 StoryUserResponseDTO.java
│ │ │ ├── 📄 TemporayPasswordDTO.java
│ │ │ ├── 📄 TokenExchangeRequest.java
│ │ │ ├── 📄 TokenResponse.java
│ │ │ ├── 📄 UpdateStoryRequestDTO.java
│ │ │ ├── 📄 UserDTO.java
│ │ │ ├── 📄 UserLoginDTO.java
│ │ │ ├── 📄 UserSignUpDTO.java
│ │ │ ├── 📄 UserUpdateDTO.java
│ │ │ └── 📄 UserWithdrawalDTO.java
│ │ ├── 📁 entity
│ │ │ ├── 📄 BaseEntity.java
│ │ │ ├── 📄 Comment.java
│ │ │ ├── 📄 Image.java
│ │ │ ├── 📄 Notice.java
│ │ │ ├── 📄 Story.java
│ │ │ ├── 📄 StoryShare.java
│ │ │ └── 📄 User.java
│ │ ├── 📁 exception
│ │ │ ├── 📄 GlobalExceptionHandler.java
│ │ │ ├── 📄 NotFoundException.java
│ │ │ ├── 📄 NoticeNotFoundException.java
│ │ │ ├── 📄 StoryNotFoundException.java
│ │ │ └── 📄 UserNotFoundException.java
│ │ ├── 📁 oauth
│ │ │ ├── 📄 CustomOAuth2FailureHandler.java
│ │ │ ├── 📄 CustomOAuth2SuccessHandler.java
│ │ │ ├── 📄 CustomOAuth2User.java
│ │ │ ├── 📄 CustomOAuth2UserService.java
│ │ │ ├── 📄 EmailAlreadyExistsException.java
│ │ │ ├── 📄 GoogleOAuth2UserInfo.java
│ │ │ ├── 📄 KakaoOAuth2UserInfo.java
│ │ │ └── 📄 OAuth2UserInfo.java
│ │ ├── 📁 repository
│ │ │ ├── 📄 CommentRepository.java
│ │ │ ├── 📄 ImageRepository.java
│ │ │ ├── 📄 NoticeRepository.java
│ │ │ ├── 📄 StoryRepository.java
│ │ │ ├── 📄 StoryShareRepository.java
│ │ │ └── 📄 UserRepository.java
│ │ ├── 📁 service
│ │ │ ├── 📄 ApiService.java
│ │ │ ├── 📄 CommentService.java
│ │ │ ├── 📄 EmailService.java
│ │ │ ├── 📄 ImageService.java
│ │ │ ├── 📄 NoticeService.java
│ │ │ ├── 📄 StoryService.java
│ │ │ └── 📄 UserService.java
│ │ ├── 📁 status
│ │ ├── 📁 util
│ │ │ └── 📄 FileUtil.java
│ │ └── 📄 TimecapsuleApplication.java
│ └── 📁 resources
│ └── 📄 application.yml
├── 📁 test
│ └── 📁 java
│ ├── 📁 controller
│ │ └── 📄 NoticeControllerTest.java
│ ├── 📁 repository
│ │ └── 📄 NoticeRepositoryTest.java
│ ├── 📁 service
│ │ ├── 📄 NoticeServiceTest.java
│ │ └── 📄 UserServiceTest.java
│ ├── 📄 TestSecurityConfig.java
│ └── 📄 TimecapsuleApplicationTests.java
│
├── 📄 .gitignore
├── 📄 build.gradle
├── 📄 docker-compose.yml
├── 📄 Dockerfile
├── 📄 gradlew
├── 📄 gradlew.bat
├── 📄 README.md
└── 📄 settings.gradle
📁 src/main/resources
├── 📁 static
│ ├── 📁 css
│ │ ├── 📄 account.css
│ │ ├── 📄 common.css
│ │ ├── 📄 footer.css
│ │ ├── 📄 header.css
│ │ ├── 📄 login.css
│ │ ├── 📄 main.css
│ │ ├── 📄 modal.css
│ │ ├── 📄 notice.css
│ │ ├── 📄 sidebar.css
│ │ ├── 📄 signup.css
│ │ ├── 📄 story-created.css
│ │ ├── 📄 story-detail.css
│ │ ├── 📄 story-form.css
│ │ ├── 📄 story-update.css
│ │ └── 📄 storylist.css
│ ├── 📁 images
│ │ └── 📄 accounticon.png
│ ├── 📁 docs
│ │ └── 📄 community-detail.png
│ └── 📁 js
│ ├── 📄 accountManagement.js
│ ├── 📄 auth.js
│ ├── 📄 file-upload.js
│ ├── 📄 form-warning.js
│ ├── 📄 header.js
│ ├── 📄 image-upload.js
│ ├── 📄 login.js
│ ├── 📄 modalUtils.js
│ ├── 📄 notice-delete.js
│ ├── 📄 oauthLogin.js
│ ├── 📄 record.js
│ ├── 📄 resetPassword.js
│ ├── 📄 signup.js
│ ├── 📄 story-config.js
│ ├── 📄 story-modal.js
│ └── 📄 story.js
└── 📁 templates
├── 📁 account
│ ├── 📄 account-management.html
│ └── 📄 reset-password.html
├── 📁 fragments
│ ├── 📄 footer.html
│ ├── 📄 header.html
│ ├── 📄 modal.html
│ └── 📄 sidebar.html
├── 📁 notice
│ ├── 📄 detail.html
│ ├── 📄 edit.html
│ ├── 📄 form.html
│ └── 📄 list.html
├── 📄 index.html
├── 📄 login.html
├── 📄 main.html
├── 📄 signup.html
├── 📄 story-created.html
├── 📄 story-detail.html
├── 📄 story-form.html
├── 📄 story-update.html
└── 📄 storylist.html
| 메인페이지 | 메인페이지 |
|---|---|
![]() |
![]() |
| 로그인 | 회원가입 |
![]() |
![]() |
| 비밀번호 찾기 | 계정 관리 |
![]() |
![]() |
| 공지사항 목록(관리자) | 공지사항 상세(관리자) |
![]() |
![]() |
| 공지사항 생성(관리자) | 공지사항 수정(관리자) |
![]() |
![]() |
| 공지사항 목록(사용자) | 공지사항 상세(사용자) |
![]() |
![]() |
| 스토리 생성 | 스토리 결과 |
![]() |
![]() |
| 마이스토리 목록 | 마이스토리 상세 |
![]() |
![]() |
| 마이스토리 수정 | 공유스토리 목록 |
![]() |
![]() |
| 공유스토리 상세 | 커뮤니티 목록 |
![]() |
![]() |
| 커뮤니티 상세 | 비고 |
![]() |
| NAME | HTTP METHOD | URL | DESCRIPTION | AUTHORITY |
|---|---|---|---|---|
| signUpPage | GET | /signUpPage |
회원가입 페이지로 이동 | 일반 |
| signUp | POST | /signUp |
사용자 회원가입 | 일반 |
| login | GET | /login |
로그인 폼 조회 | 일반, 관리자 |
| login | POST | /login |
사용자 로그인(로컬 스토리지 방식) | 일반, 관리자 |
| logout | POST | /logout |
사용자 로그아웃 | 일반, 관리자 |
| main | GET | /main |
메인 페이지로 이동 | 일반, 관리자 |
| validateToken | GET | /valid-token |
페이지 접속 시 토큰 유효성 검사 | 일반, 관리자 |
| checkDuplicate | POST | /api/users/check-duplicate |
아이디, 이메일, 닉네임 중복 확인 | 일반 |
| isPasswordMatching | POST | /api/users/password-match |
비밀번호 매칭 확인 | 일반 |
| findPasswordPage | GET | /users/password/find |
비밀번호 찾기 폼 조회 | 일반 |
| issueTemporaryPassword | POST | /users/password/temporary |
사용자가 입력한 아이디와 이메일을 검증하고, 임시 비밀번호를 발급하여 이메일로 전송 | 일반 |
| getUserInfo | GET | /users/info |
계정 관리 폼 조회 | 일반 |
| updateUser | PUT | /users/update |
사용자 정보 수정 | 일반 |
| deleteUser | DELETE | /users/delete |
사용자 회원 탈퇴 | 일반 |
| oauthLogin | POST | /oauth/login |
OAuth2 로그인(구글, 카카오) | 일반 |
| checkDuplicateNickname | GET | /users/checkDuplicateNickname |
닉네임 중복 체크 | 일반 |
| checkDuplicateEmail | GET | /users/checkDuplicateEmail |
이메일 중복 체크 | 일반 |
| NAME | HTTP METHOD | URL | DESCRIPTION | AUTHORITY |
|---|---|---|---|---|
| getStoryForm | GET | /stories/form |
스토리 생성 폼 조회 | 일반 |
| uploadFile | POST | /stories/form |
스토리 생성 폼에 파일 업로드 | 일반 |
| searchUsers | GET | /stories/search |
공유하고자 할 유저 닉네임 검색 | 일반 |
| getCreateStoryForm | GET | /stories/complete-form |
스토리 생성 완료 후 작성폼 조회 | 일반 |
| createStory | POST | /stories |
스토리 작성폼으로부터 최종으로 스토리 생성 | 일반 |
| getStoryList | GET | /stories |
사용자가 작성한 전체 스토리 조회 | 일반 |
| findStoryDetail | GET | /stories/{id} |
특정 스토리 조회 | 일반 |
| getUpdateStoryForm | GET | /stories/{id}/edit |
특정 스토리 수정폼 조회 | 일반 |
| updateStory | PUT | /stories/{id} |
특정 스토리 수정 | 일반 |
| deleteStory | DELETE | /stories/{id} |
특정 스토리 삭제 | 일반 |
| getSharedStoryList | GET | /stories/shared |
사용자에게 공유된 전체 스토리 조회 | 일반 |
| findSharedStoryDetail | GET | /stories/shared/{id} |
공유된 특정 스토리 조회 | 일반 |
| getCommunityStoryList | GET | /community |
커뮤니티에 게시된 전체 스토리 조회 | 일반 |
| findCommunityStoryDetail | GET | /community/{id} |
커뮤니티에 게시된 특정 스토리 조회 | 일반 |
| NAME | HTTP METHOD | URL | DESCRIPTION | AUTHORITY |
|---|---|---|---|---|
| getNoticeList | GET | /notices |
전체 공지사항 목록 조회 및 공지사항 검색 | 일반, 비회원, 관리자 |
| findNoticeDetail | GET | /notices/{id} |
특정 공지사항 상세 조회 | 일반, 비회원, 관리자 |
| createNotice | POST | /notices |
공지사항 생성 | 관리자 |
| getCreateNoticeForm | GET | /notices/form |
공지사항 생성 폼 조회 | 관리자 |
| updateNotice | POST | /notices/{id} |
공지사항 수정 | 관리자 |
| getUpdateNoticeForm | GET | /notices/{id}/edit |
공지사항 수정 폼 조회 | 관리자 |
| deleteNotice | DELETE | /notices/{id} |
공지사항 삭제 | 관리자 |
| NAME | HTTP METHOD | URL | DESCRIPTION | AUTHORITY |
|---|---|---|---|---|
| getComment | GET | /comments |
댓글 조회 | 일반 |
| createComment | POST | /comments |
댓글 작성 | 일반 |
| updateComment | PUT | /comments/{id} |
댓글 수정 | 일반 |
| deleteComment | DELETE | /comments/{id} |
댓글 삭제 | 일반 |






























