![]() |
![]() |
|
![]() |
![]() |
진정민 팀장 (FE) |
정지오 팀원 (FE) |
신현진 팀원 (FE) |
진종수 팀원 (FE) |
노욱진 팀원 (FE) |
@JeongMin83 (진정민) : 채팅방
@jiohjung98 (정지오) : 채팅 생성
@xxxjinn (신현진) : 유저 목록 페이지, 유저 프로필 모달, css 수정
@jongsujin (진종수) : 내 채팅, 오픈 채팅 조회
@NohWookJin (노욱진) : 회원가입, 로그인, 마이페이지
- 회원가입 진행시 각 입력폼마다 신규 유저가 넣고 있는 정보가 허용되는 값인지 검증하며 실시간으로 비교합니다.
- 올바른 값들로 입력폼을 모두 채웠을 경우(사진은 선택) 회원가입 버튼이 활성화됩니다.
![회원가입사진](https://private-user-images.githubusercontent.com/101846817/283388545-b61fcb65-3dc3-492a-80df-ed0773dfb9cb.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3Mzk1NTQwODgsIm5iZiI6MTczOTU1Mzc4OCwicGF0aCI6Ii8xMDE4NDY4MTcvMjgzMzg4NTQ1LWI2MWZjYjY1LTNkYzMtNDkyYS04MGRmLWVkMDc3M2RmYjljYi5wbmc_WC1BbXotQWxnb3JpdGhtPUFXUzQtSE1BQy1TSEEyNTYmWC1BbXotQ3JlZGVudGlhbD1BS0lBVkNPRFlMU0E1M1BRSzRaQSUyRjIwMjUwMjE0JTJGdXMtZWFzdC0xJTJGczMlMkZhd3M0X3JlcXVlc3QmWC1BbXotRGF0ZT0yMDI1MDIxNFQxNzIzMDhaJlgtQW16LUV4cGlyZXM9MzAwJlgtQW16LVNpZ25hdHVyZT01ZTA0NTQxNWY1MzE0Nzk3YTFhODA1ZDVkOTY5YTlhMTk0ZGZmNzVlZTA2OTI2Mzk3NzI3Zjc4NzczZmViNDZmJlgtQW16LVNpZ25lZEhlYWRlcnM9aG9zdCJ9.W1E8P2xtjrQJJnbUKepEzZ4JXeDCxd8OzqD6KNlQJA0)
- 아이디나 비밀번호를 확인해 틀린 값이거나 없는 값일시 유저에게 메시지를 보냅니다.
- 회원가입 페이지와 마찬가지로 입력폼을 모두 채웠을 경우 로그인 버튼이 활성화됩니다.
- 로그인시 JWT 토큰은 모두 쿠키에 보관하며, 로컬 스토리지에 저장한 로그인 시간을 최상단 컴포넌트에서 실시간 날짜와 비교해 만료 날짜와 가까워지면 토큰을 재발급합니다.
![로그인사진](https://private-user-images.githubusercontent.com/101846817/283389543-128852f4-7a18-4e47-b9ad-574d251f8b76.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3Mzk1NTQwODgsIm5iZiI6MTczOTU1Mzc4OCwicGF0aCI6Ii8xMDE4NDY4MTcvMjgzMzg5NTQzLTEyODg1MmY0LTdhMTgtNGU0Ny1iOWFkLTU3NGQyNTFmOGI3Ni5wbmc_WC1BbXotQWxnb3JpdGhtPUFXUzQtSE1BQy1TSEEyNTYmWC1BbXotQ3JlZGVudGlhbD1BS0lBVkNPRFlMU0E1M1BRSzRaQSUyRjIwMjUwMjE0JTJGdXMtZWFzdC0xJTJGczMlMkZhd3M0X3JlcXVlc3QmWC1BbXotRGF0ZT0yMDI1MDIxNFQxNzIzMDhaJlgtQW16LUV4cGlyZXM9MzAwJlgtQW16LVNpZ25hdHVyZT0yOGRjZDVhZTA4OTc0MWZiM2E4NDA5ZTg1ZjAzZjFjY2ZjNDc1MjAxYjIzMjAxMzc3MmEzYmMxZjRmMGQ1YTY4JlgtQW16LVNpZ25lZEhlYWRlcnM9aG9zdCJ9.gKYj4F7DI9JD1Q9KLVEe9He8S_mN6QHqKSdd9o_RBrA)
- 회원 정보 수정을 통해 유저의 프로필과 이름을 변경할 수 있습니다.
![정보수정사진](https://private-user-images.githubusercontent.com/101846817/283389036-e27cb621-e018-433f-ae2a-a3a8cf7bb357.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3Mzk1NTQwODgsIm5iZiI6MTczOTU1Mzc4OCwicGF0aCI6Ii8xMDE4NDY4MTcvMjgzMzg5MDM2LWUyN2NiNjIxLWUwMTgtNDMzZi1hZTJhLWEzYThjZjdiYjM1Ny5wbmc_WC1BbXotQWxnb3JpdGhtPUFXUzQtSE1BQy1TSEEyNTYmWC1BbXotQ3JlZGVudGlhbD1BS0lBVkNPRFlMU0E1M1BRSzRaQSUyRjIwMjUwMjE0JTJGdXMtZWFzdC0xJTJGczMlMkZhd3M0X3JlcXVlc3QmWC1BbXotRGF0ZT0yMDI1MDIxNFQxNzIzMDhaJlgtQW16LUV4cGlyZXM9MzAwJlgtQW16LVNpZ25hdHVyZT1lYTgyNzY4Yzg5MjIwZjMwMjZmY2NkOGJiOTI2OGM1N2U3MThhNzZiMDg0NTlkMGVjZGUzZGNkOTQyMjMxYjkwJlgtQW16LVNpZ25lZEhlYWRlcnM9aG9zdCJ9.c212KaSji490yYtuoJcxfV_Bjz0xvi5XJQZoXCjD3Hg)
- 회원 가입한 모든 유저들의 이름과 실시간 접속상태를 보여줍니다.
- 유저 검색이 가능하며, 해당하는 유저가 존재하지 않을 때에는 '해당 사용자가 존재하지 않습니다.'라는 문구가 나옵니다.
![스크린샷 2023-11-16 182451](https://private-user-images.githubusercontent.com/102955516/283397513-f110ff01-4287-4268-9c26-72e2e5a148dd.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3Mzk1NTQwODgsIm5iZiI6MTczOTU1Mzc4OCwicGF0aCI6Ii8xMDI5NTU1MTYvMjgzMzk3NTEzLWYxMTBmZjAxLTQyODctNDI2OC05YzI2LTcyZTJlNWExNDhkZC5wbmc_WC1BbXotQWxnb3JpdGhtPUFXUzQtSE1BQy1TSEEyNTYmWC1BbXotQ3JlZGVudGlhbD1BS0lBVkNPRFlMU0E1M1BRSzRaQSUyRjIwMjUwMjE0JTJGdXMtZWFzdC0xJTJGczMlMkZhd3M0X3JlcXVlc3QmWC1BbXotRGF0ZT0yMDI1MDIxNFQxNzIzMDhaJlgtQW16LUV4cGlyZXM9MzAwJlgtQW16LVNpZ25hdHVyZT0zZjliMTM2ZjhmN2RjYjlhNmRkN2NmNDg0MTVlOGU5Yzk0ZjVlOTFlNTU3OGVlNjE5NzkyZDI3ZmNiZTljMjRjJlgtQW16LVNpZ25lZEhlYWRlcnM9aG9zdCJ9.FQC49aE5oGoXlT3Q-FA2_qxyarqyAEgHAuq6etcZvrY)
- 목록에서 유저를 선택하면 해당 유저의 프로필 모달창이 나오고, 모달창에서 유저와의 1:1 채팅방으로 이동하는 것이 가능합니다.
![스크린샷 2023-11-16 182554](https://private-user-images.githubusercontent.com/102955516/283397595-ca18a585-8f2a-4f76-85f8-c165b6e07f9c.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3Mzk1NTQwODgsIm5iZiI6MTczOTU1Mzc4OCwicGF0aCI6Ii8xMDI5NTU1MTYvMjgzMzk3NTk1LWNhMThhNTg1LThmMmEtNGY3Ni04NWY4LWMxNjViNmUwN2Y5Yy5wbmc_WC1BbXotQWxnb3JpdGhtPUFXUzQtSE1BQy1TSEEyNTYmWC1BbXotQ3JlZGVudGlhbD1BS0lBVkNPRFlMU0E1M1BRSzRaQSUyRjIwMjUwMjE0JTJGdXMtZWFzdC0xJTJGczMlMkZhd3M0X3JlcXVlc3QmWC1BbXotRGF0ZT0yMDI1MDIxNFQxNzIzMDhaJlgtQW16LUV4cGlyZXM9MzAwJlgtQW16LVNpZ25hdHVyZT05ZGQ3NGQxYjg1YTNhNWY2YWRiNTQ5YTg1NTBiMzA4YmZjY2QwODgwODZkZTdiYjA3ZDk4OTlkOTNkMDg5NTg0JlgtQW16LVNpZ25lZEhlYWRlcnM9aG9zdCJ9.HoVZayZ_a70exak9G60PpYKfMDA_QVpyLxNHuPDhRes)
- 유저프로필 모달에서의 1:1 채팅 - 두 유저 간 1:1 채팅방이 있는지 확인하고 있으면 기존의 채팅방으로 이동, 없으면 새 채팅을 생성합니다.
![스크린샷 2023-11-16 182554](https://private-user-images.githubusercontent.com/104253583/283423096-87c6caa4-8288-49be-a270-2cbd00dae96b.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3Mzk1NTQwODgsIm5iZiI6MTczOTU1Mzc4OCwicGF0aCI6Ii8xMDQyNTM1ODMvMjgzNDIzMDk2LTg3YzZjYWE0LTgyODgtNDliZS1hMjcwLTJjYmQwMGRhZTk2Yi5wbmc_WC1BbXotQWxnb3JpdGhtPUFXUzQtSE1BQy1TSEEyNTYmWC1BbXotQ3JlZGVudGlhbD1BS0lBVkNPRFlMU0E1M1BRSzRaQSUyRjIwMjUwMjE0JTJGdXMtZWFzdC0xJTJGczMlMkZhd3M0X3JlcXVlc3QmWC1BbXotRGF0ZT0yMDI1MDIxNFQxNzIzMDhaJlgtQW16LUV4cGlyZXM9MzAwJlgtQW16LVNpZ25hdHVyZT0xZmRkMDdiODU3N2VkODdiZjUwZDQ4YTE1OTAwNTkzZjcyNmJiM2I4ZDk5NjhhYjM0NjE2YzY5M2ZhODgzYTlmJlgtQW16LVNpZ25lZEhlYWRlcnM9aG9zdCJ9.LF-H8Npl2zJIBxmQ7FLI2XKf8NUyOhW0v88HSvhiCaA)
![스크린샷 2023-11-16 182554](https://private-user-images.githubusercontent.com/104253583/283423468-c10e94ae-7579-4d1e-9585-2cbf155ec7cd.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3Mzk1NTQwODgsIm5iZiI6MTczOTU1Mzc4OCwicGF0aCI6Ii8xMDQyNTM1ODMvMjgzNDIzNDY4LWMxMGU5NGFlLTc1NzktNGQxZS05NTg1LTJjYmYxNTVlYzdjZC5wbmc_WC1BbXotQWxnb3JpdGhtPUFXUzQtSE1BQy1TSEEyNTYmWC1BbXotQ3JlZGVudGlhbD1BS0lBVkNPRFlMU0E1M1BRSzRaQSUyRjIwMjUwMjE0JTJGdXMtZWFzdC0xJTJGczMlMkZhd3M0X3JlcXVlc3QmWC1BbXotRGF0ZT0yMDI1MDIxNFQxNzIzMDhaJlgtQW16LUV4cGlyZXM9MzAwJlgtQW16LVNpZ25hdHVyZT01NTAzODA2ZDI5NmMzMTQ2NWNlNDlhMDczZDgwNTgxODdiMWUyMzU4N2ExOWFjZDZmNmQ2ZGJmOWE1MDA1ZTZkJlgtQW16LVNpZ25lZEhlYWRlcnM9aG9zdCJ9.SZFLMtNS--oFjNS3frEIq1uLmUCg6YQvDn3uu2evQY4)
- 채팅페이지에서의 채팅
- 유저 한 명 클릭 시 1:1 채팅 - 두 유저 간 1:1 채팅방이 있는지 확인하고 있으면 기존의 채팅방으로 이동, 없으면 새 채팅을 생성합니다.
- 유저 여러 명 클릭 시 단체채팅 - 프라이빗한 채팅방과 오픈 채팅을 선택할 수 있고 채팅방 이름을 직접 입력해 단체 채팅을 선택합니다.
- 프라이빗 채팅방의 경우, 내 채팅페이지에서만 채팅방이 나타납니다.
- 오픈 채팅방의 경우, 내 채팅페이지와 모든채팅페이지에서 채팅방이 나타납니다.
![스크린샷 2023-11-16 182554](https://private-user-images.githubusercontent.com/104253583/283423662-f15dd8dc-5f16-43cd-9bdc-a5237d6acb9c.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3Mzk1NTQwODgsIm5iZiI6MTczOTU1Mzc4OCwicGF0aCI6Ii8xMDQyNTM1ODMvMjgzNDIzNjYyLWYxNWRkOGRjLTVmMTYtNDNjZC05YmRjLWE1MjM3ZDZhY2I5Yy5wbmc_WC1BbXotQWxnb3JpdGhtPUFXUzQtSE1BQy1TSEEyNTYmWC1BbXotQ3JlZGVudGlhbD1BS0lBVkNPRFlMU0E1M1BRSzRaQSUyRjIwMjUwMjE0JTJGdXMtZWFzdC0xJTJGczMlMkZhd3M0X3JlcXVlc3QmWC1BbXotRGF0ZT0yMDI1MDIxNFQxNzIzMDhaJlgtQW16LUV4cGlyZXM9MzAwJlgtQW16LVNpZ25hdHVyZT0zMGY0NWRlZGIzOGIxYzRmMDljYzExMDljY2Y5ZWFkYzUxZDk2YzAyNDBlNDcwYjIwODIxYjQ2MGVmZTNiMmM2JlgtQW16LVNpZ25lZEhlYWRlcnM9aG9zdCJ9.PTG3MYslrn9mOfxzE6bhCMioQp8R8GbKd_HrJbdDjGg)
![스크린샷 2023-11-16 182554](https://private-user-images.githubusercontent.com/104253583/283423877-7f4b26d8-f509-46b6-9261-cae1db6630f8.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3Mzk1NTQwODgsIm5iZiI6MTczOTU1Mzc4OCwicGF0aCI6Ii8xMDQyNTM1ODMvMjgzNDIzODc3LTdmNGIyNmQ4LWY1MDktNDZiNi05MjYxLWNhZTFkYjY2MzBmOC5wbmc_WC1BbXotQWxnb3JpdGhtPUFXUzQtSE1BQy1TSEEyNTYmWC1BbXotQ3JlZGVudGlhbD1BS0lBVkNPRFlMU0E1M1BRSzRaQSUyRjIwMjUwMjE0JTJGdXMtZWFzdC0xJTJGczMlMkZhd3M0X3JlcXVlc3QmWC1BbXotRGF0ZT0yMDI1MDIxNFQxNzIzMDhaJlgtQW16LUV4cGlyZXM9MzAwJlgtQW16LVNpZ25hdHVyZT04YzQxNDk2MmVkYmRjZTkzOGQ0OWU2NmM0YWNlNDBhNDAxMDQwNzQyZDk5OWU2MmFjMDI4MGY4ZjE5MDBiM2Q1JlgtQW16LVNpZ25lZEhlYWRlcnM9aG9zdCJ9.QZLrc6_bA5P-C6Aj8p5jr2Qo-keA9GdZ8m49ejMbBV0)
![스크린샷 2023-11-16 182554](https://private-user-images.githubusercontent.com/104253583/283423985-c0c7f2fa-a4ab-4537-93b8-9b4d0a6a6ea5.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3Mzk1NTQwODgsIm5iZiI6MTczOTU1Mzc4OCwicGF0aCI6Ii8xMDQyNTM1ODMvMjgzNDIzOTg1LWMwYzdmMmZhLWE0YWItNDUzNy05M2I4LTliNGQwYTZhNmVhNS5wbmc_WC1BbXotQWxnb3JpdGhtPUFXUzQtSE1BQy1TSEEyNTYmWC1BbXotQ3JlZGVudGlhbD1BS0lBVkNPRFlMU0E1M1BRSzRaQSUyRjIwMjUwMjE0JTJGdXMtZWFzdC0xJTJGczMlMkZhd3M0X3JlcXVlc3QmWC1BbXotRGF0ZT0yMDI1MDIxNFQxNzIzMDhaJlgtQW16LUV4cGlyZXM9MzAwJlgtQW16LVNpZ25hdHVyZT01ZGVhZTU3MTRjZmJkZjQ2MzAzYzU5ZDgyZjc5ZmMyYzBhOWY0MzlmMGMyYTBkMWYzNDA4ZDkyMTMzYzJlN2QwJlgtQW16LVNpZ25lZEhlYWRlcnM9aG9zdCJ9.2oJbOVNKqC2Dgmmi9vfrFRe738neGmcSkedUT033RqA)
![스크린샷 2023-11-16 182554](https://private-user-images.githubusercontent.com/104253583/283424107-0c19a2e2-c797-47be-9921-c7f2f546be8e.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3Mzk1NTQwODgsIm5iZiI6MTczOTU1Mzc4OCwicGF0aCI6Ii8xMDQyNTM1ODMvMjgzNDI0MTA3LTBjMTlhMmUyLWM3OTctNDdiZS05OTIxLWM3ZjJmNTQ2YmU4ZS5wbmc_WC1BbXotQWxnb3JpdGhtPUFXUzQtSE1BQy1TSEEyNTYmWC1BbXotQ3JlZGVudGlhbD1BS0lBVkNPRFlMU0E1M1BRSzRaQSUyRjIwMjUwMjE0JTJGdXMtZWFzdC0xJTJGczMlMkZhd3M0X3JlcXVlc3QmWC1BbXotRGF0ZT0yMDI1MDIxNFQxNzIzMDhaJlgtQW16LUV4cGlyZXM9MzAwJlgtQW16LVNpZ25hdHVyZT04ZGIyYjM1ODQ2OTUzZjQ1YjExNDgyY2Q1Mjg1YmZkYzM3ODU3YjMyOTcwZjUxMTNmOGNlYmI4NWMyMDRhMzhhJlgtQW16LVNpZ25lZEhlYWRlcnM9aG9zdCJ9.wGCiEvpNss8KoBavN9oIL3d3AziqdmodtYMfSYoF3FM)
![스크린샷 2023-11-16 182554](https://private-user-images.githubusercontent.com/104253583/283424264-5805553d-65b8-48ad-8f62-021e01f0d40f.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3Mzk1NTQwODgsIm5iZiI6MTczOTU1Mzc4OCwicGF0aCI6Ii8xMDQyNTM1ODMvMjgzNDI0MjY0LTU4MDU1NTNkLTY1YjgtNDhhZC04ZjYyLTAyMWUwMWYwZDQwZi5wbmc_WC1BbXotQWxnb3JpdGhtPUFXUzQtSE1BQy1TSEEyNTYmWC1BbXotQ3JlZGVudGlhbD1BS0lBVkNPRFlMU0E1M1BRSzRaQSUyRjIwMjUwMjE0JTJGdXMtZWFzdC0xJTJGczMlMkZhd3M0X3JlcXVlc3QmWC1BbXotRGF0ZT0yMDI1MDIxNFQxNzIzMDhaJlgtQW16LUV4cGlyZXM9MzAwJlgtQW16LVNpZ25hdHVyZT1lZjc2NzlmMjA1NjYzMmMxMGQ3NjVlNGM4YzBjNzFkMGE1OTUzZDE4NTlhNzVlYzY0MDg3ZjA0NDViMTY0ZmM2JlgtQW16LVNpZ25lZEhlYWRlcnM9aG9zdCJ9.Ohhwv2s10EkJTBPSHLK3EK0kU-4wb7koyNUbbrdx8Wc)
![스크린샷 2023-11-16 182554](https://private-user-images.githubusercontent.com/104253583/283424958-68b8cbda-8877-4ffa-a54b-d21a4a75ca30.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3Mzk1NTQwODgsIm5iZiI6MTczOTU1Mzc4OCwicGF0aCI6Ii8xMDQyNTM1ODMvMjgzNDI0OTU4LTY4YjhjYmRhLTg4NzctNGZmYS1hNTRiLWQyMWE0YTc1Y2EzMC5wbmc_WC1BbXotQWxnb3JpdGhtPUFXUzQtSE1BQy1TSEEyNTYmWC1BbXotQ3JlZGVudGlhbD1BS0lBVkNPRFlMU0E1M1BRSzRaQSUyRjIwMjUwMjE0JTJGdXMtZWFzdC0xJTJGczMlMkZhd3M0X3JlcXVlc3QmWC1BbXotRGF0ZT0yMDI1MDIxNFQxNzIzMDhaJlgtQW16LUV4cGlyZXM9MzAwJlgtQW16LVNpZ25hdHVyZT00OTIyNjg4NGZhY2VjM2QzOTNhODRkZGRlMDVlNzg3NGFmMTY4ZmI3NWQwMDhlMDc3NmJjZjNjNzU5ZjkxMzg1JlgtQW16LVNpZ25lZEhlYWRlcnM9aG9zdCJ9.BeGVk7J5rq7IJkBChYcdJAxe6yf32OEXx4IqLgpRiDY)
![스크린샷 2023-11-16 182554](https://private-user-images.githubusercontent.com/104253583/283425094-88b16d8a-b639-43d3-9d5c-fc8e344b12b2.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3Mzk1NTQwODgsIm5iZiI6MTczOTU1Mzc4OCwicGF0aCI6Ii8xMDQyNTM1ODMvMjgzNDI1MDk0LTg4YjE2ZDhhLWI2MzktNDNkMy05ZDVjLWZjOGUzNDRiMTJiMi5wbmc_WC1BbXotQWxnb3JpdGhtPUFXUzQtSE1BQy1TSEEyNTYmWC1BbXotQ3JlZGVudGlhbD1BS0lBVkNPRFlMU0E1M1BRSzRaQSUyRjIwMjUwMjE0JTJGdXMtZWFzdC0xJTJGczMlMkZhd3M0X3JlcXVlc3QmWC1BbXotRGF0ZT0yMDI1MDIxNFQxNzIzMDhaJlgtQW16LUV4cGlyZXM9MzAwJlgtQW16LVNpZ25hdHVyZT1jYjlkMjBmN2U2ZGUxZWYzOTU0YWIzNzZmODc4OGZmYzkzMDU5NGNiODE5ZjE0YTQzOWJhYmE1MzY2YTMyZWNkJlgtQW16LVNpZ25lZEhlYWRlcnM9aG9zdCJ9.e8WUnfP9oG14ArDCPoZ6isrZng9b7tqejRd_2h4-Yio)
![스크린샷 2023-11-16 182554](https://private-user-images.githubusercontent.com/104253583/283426029-0d181b40-911a-495c-974e-4add2f9d8271.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3Mzk1NTQwODgsIm5iZiI6MTczOTU1Mzc4OCwicGF0aCI6Ii8xMDQyNTM1ODMvMjgzNDI2MDI5LTBkMTgxYjQwLTkxMWEtNDk1Yy05NzRlLTRhZGQyZjlkODI3MS5wbmc_WC1BbXotQWxnb3JpdGhtPUFXUzQtSE1BQy1TSEEyNTYmWC1BbXotQ3JlZGVudGlhbD1BS0lBVkNPRFlMU0E1M1BRSzRaQSUyRjIwMjUwMjE0JTJGdXMtZWFzdC0xJTJGczMlMkZhd3M0X3JlcXVlc3QmWC1BbXotRGF0ZT0yMDI1MDIxNFQxNzIzMDhaJlgtQW16LUV4cGlyZXM9MzAwJlgtQW16LVNpZ25hdHVyZT0wZmEwNjRiNTM2YWQwMmY3YTc0MjM3M2Y0NmJlMGE0MmNlMzRhMjJjMjZiZWE0NGNiMmQzODY0NjJmZmM5MjM2JlgtQW16LVNpZ25lZEhlYWRlcnM9aG9zdCJ9.V9wyE7fxIxN_DqSEVmWmBrvJWvr_2s2CGw3rCZtGbIk)
![스크린샷 2023-11-16 182554](https://private-user-images.githubusercontent.com/104253583/283426587-9eb98b53-e6ba-497a-bb45-c14db152bab0.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3Mzk1NTQwODgsIm5iZiI6MTczOTU1Mzc4OCwicGF0aCI6Ii8xMDQyNTM1ODMvMjgzNDI2NTg3LTllYjk4YjUzLWU2YmEtNDk3YS1iYjQ1LWMxNGRiMTUyYmFiMC5wbmc_WC1BbXotQWxnb3JpdGhtPUFXUzQtSE1BQy1TSEEyNTYmWC1BbXotQ3JlZGVudGlhbD1BS0lBVkNPRFlMU0E1M1BRSzRaQSUyRjIwMjUwMjE0JTJGdXMtZWFzdC0xJTJGczMlMkZhd3M0X3JlcXVlc3QmWC1BbXotRGF0ZT0yMDI1MDIxNFQxNzIzMDhaJlgtQW16LUV4cGlyZXM9MzAwJlgtQW16LVNpZ25hdHVyZT1mNWQ5OWJlMTE1MjRmZDA1NzU4YjNmMTAwNzEyYTVmZGMzYWRkMDI1YTQ5YTU5ODZlMjRjMzgxOTEyMDE5NGQzJlgtQW16LVNpZ25lZEhlYWRlcnM9aG9zdCJ9.gvm7EdPV1UWRUbFsN0mpPCVseLMWvttmnHl1y2L6ksI)
- 하단바를 통해 각각 유저 목록/내 채팅/오픈 채팅/정보 수정 페이지로 이동할 수 있습니다.
- 내가 속한 채팅만 보여주는 채팅 페이지와 현재 있는 Private 하지 않은 오픈 채팅을 볼 수 있습니다.
- 내가 속해 있지 않은 채팅방을 입장할 땐 모달창으로 채팅에 참여 유무를 묻고 채팅에 참여할 수 있습니다. 이미 들어가 있는 방은 바로 접속 됩니다.
- 내가 보낸 메시지 순으로 채팅방이 위로 정렬됩니다. 어느 채팅방에서 채팅을 친 후면 채팅 순서대로 채팅방이 정렬됩니다.
- 채팅방에서 볼 수 있는 최근 메세지 길이가 20자를 넘어가면 ...로 처리 되어 보여집니다.
- 1대1 채팅방일 땐 상대방의 이름과 사진이 채팅방 이름과 이미지로 보여지며 Private 및 그룹 채팅 유무에 따라 각기 다른 이미지로 채팅방을 구별할 수 있습니다
- 또한 현재 있는 채팅방을 검색할 수 있으며 검색 결과에 맞는 것이 없다면 채팅방이 없음을 알려줍니다.
- 내 채팅에 채팅 목록이 없을 땐 채팅방이 없음을 알려줍니다.
![내 채팅](https://private-user-images.githubusercontent.com/78890707/283403417-62b679cb-8f0d-46d3-951c-3efb0fed739d.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3Mzk1NTQwODgsIm5iZiI6MTczOTU1Mzc4OCwicGF0aCI6Ii83ODg5MDcwNy8yODM0MDM0MTctNjJiNjc5Y2ItOGYwZC00NmQzLTk1MWMtM2VmYjBmZWQ3MzlkLnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNTAyMTQlMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjUwMjE0VDE3MjMwOFomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPTBkMmNkYmEzYjYyNTY1YTJlY2RjODBkZDQyMTVjOGYzZjllYWJmYzFiMWQzNGRmNWU4OGU1MGVmYWMzM2Y1MWQmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0In0.Ruh5vYKcFZ2rxV3jvo_TOL9Ub-8nAZsgaV75F5JShuM)
![오픈 채팅](https://private-user-images.githubusercontent.com/78890707/283403493-840708f1-182b-48f0-ba14-e2864bd7dcda.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3Mzk1NTQwODgsIm5iZiI6MTczOTU1Mzc4OCwicGF0aCI6Ii83ODg5MDcwNy8yODM0MDM0OTMtODQwNzA4ZjEtMTgyYi00OGYwLWJhMTQtZTI4NjRiZDdkY2RhLnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNTAyMTQlMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjUwMjE0VDE3MjMwOFomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPTJkMjU1NTExMzAzN2U0MmRiZDJkMzE4OTg1OWFmY2IyNThjODViYzQwMmFmYzI2MWE2ZDQxMjllZTA2Yjk1NzImWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0In0.R7ISZeAoJj-GOIp-YhStNUg75fWfGDv1si6RzUYeAdM)
- 참여자들과 실시간으로 채팅을 주고 받을 수 있습니다.
- 해당 채팅방에 속하지 않는 사용자는 메인 페이지로 돌아갑니다.
- 동일한 유저의 연속적 채팅 시 유저의 프로필을 한 번만 보여줍니다.
- 실시간으로 들어오고 나가는 참여자들을 공지해줍니다.
![스크린샷 2023-11-16 23 29 03](https://private-user-images.githubusercontent.com/57976371/283507214-db6518a2-7c32-4030-927c-2a1130d817ea.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3Mzk1NTQwODgsIm5iZiI6MTczOTU1Mzc4OCwicGF0aCI6Ii81Nzk3NjM3MS8yODM1MDcyMTQtZGI2NTE4YTItN2MzMi00MDMwLTkyN2MtMmExMTMwZDgxN2VhLnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNTAyMTQlMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjUwMjE0VDE3MjMwOFomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPTYyODAyOGI0ZjUwYTQ1NjU1Mjc5MDlmZDk0ODY5ZjFjMWJkOGFkNWYyYTAxNDNiYmE0ZmQ1ZjRhY2ZmNWFmNDQmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0In0.vFafBd6qmafDnCfjLfWwudYZ4sLeewizXOgIS7u-kmQ)
![유저플로우](https://private-user-images.githubusercontent.com/101846817/283383140-0fa593f5-f90d-4d1c-82f1-5008364606f5.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3Mzk1NTQwODgsIm5iZiI6MTczOTU1Mzc4OCwicGF0aCI6Ii8xMDE4NDY4MTcvMjgzMzgzMTQwLTBmYTU5M2Y1LWY5MGQtNGQxYy04MmYxLTUwMDgzNjQ2MDZmNS5wbmc_WC1BbXotQWxnb3JpdGhtPUFXUzQtSE1BQy1TSEEyNTYmWC1BbXotQ3JlZGVudGlhbD1BS0lBVkNPRFlMU0E1M1BRSzRaQSUyRjIwMjUwMjE0JTJGdXMtZWFzdC0xJTJGczMlMkZhd3M0X3JlcXVlc3QmWC1BbXotRGF0ZT0yMDI1MDIxNFQxNzIzMDhaJlgtQW16LUV4cGlyZXM9MzAwJlgtQW16LVNpZ25hdHVyZT0xNGEzZjZjYWNhNjk5YWIzNmY2N2QyYzQxZTljMjJjMThiYzk0NWNmMWNjMWY2NmQwZDFmYTc4MjBjZmRkZTA1JlgtQW16LVNpZ25lZEhlYWRlcnM9aG9zdCJ9.__KG8Jo6JAg33B-eWn6yJxKrmZVYrIOcWrlwwqovUUc)
CHAT/
├── src/
│ ├── api/
│ │ └── socketIo.ts
│ │
│ ├── app/
│ │ ├── head.tsx
│ │ ├── layout.tsx
│ │ ├── page.tsx
│ │ ├── allchats/
│ │ ├── chatting/
| | ├── createAccount/
| | ├── login/
| | ├── mychats/
| | ├── mypage/
│ │ └── userSelect/
│ │
│ ├── components/
│ │ ├── Move.tsx
│ │ ├── Navigation.tsx
│ │ ├── Chat/
│ │ ├── chats/
│ │ ├── chatting/
│ │ ├── Login/
│ │ ├── Mypage/
| | ├── Register/
| | ├── Users/
| | ├── mychats/
| | ├── mypage/
│ │ └── userSelect/
│ │
│ ├── hooks/
│ │ └── AuthCheck.ts
│ │ └── createAccount/
│ │
│ ├── lib/
│ │ ├── api.ts
│ │ ├── cookie.ts
│ │ └── registry.tsx
│ ├── store/
│ │ └── atoms.ts
│ │
│ ├── style/
│ │ └── theme.ts
│
├── public/
│ ├── assets/
│ ├── fonts/
│ └── Logo.png
│
├── node_modules/
├── .babelrc
├── .gitignore
├── next-env.d.ts
├── next.config.js
├── package.json
├── tsconfig.json
├── README.md
└── ...
주어진 API와 소켓을 분석해 어떤 프로젝트를 진행/완성할 것인지 팀 단위로 자유롭게 결정하고 만들어보세요. 과제 수행 및 리뷰 기간은 별도 공지를 참고하세요!
-
useState
또는useReducer
를 활용한 상태 관리 구현 -
Sass
,styled-component
,emotion
,Chakra UI
,tailwind CSS
등을 활용한 스타일 구현 -
react
상태를 통한 CRUD 구현 - 상태에 따라 달라지는 스타일 구현
-
custom hook
을 통한 비동기 처리 구현 - 유저인증 시스템(로그인, 회원가입) 구현
-
jwt
등의 유저 인증 시스템 (로그인, 회원가입 기능) - 소켓을 이용한 채팅 구현
-
Next.js
를 활용한 서버 사이드 렌더링 구현 -
typescript
를 활용한 앱 구현 -
storybook
을 활용한 디자인 시스템 구현 -
jest
를 활용한 단위 테스트 구현