http://www.timebox.kro.kr/ (๋น์ฉ์์ ์ด์ ๋ก ์๋ฒ๋ด๋ ธ์ต๋๋ค,)
https://github.com/Hyeon-Uk/TimeBox
์ด๋ ธ์์ ์ ๋ชจ๋๋ค ํ์์บก์์ ๋ง๋ค์ด๋ณธ์ ์ด ์์ผ์ค๊ฒ๋๋ค.
ํ์์บก์์ ์์ ์ ํ์ฌ๋ชจ์ต, ํน์ ๋ฏธ๋์ ๋๋ฅผ ์ํ ํธ์ง๋ฅผ ์์ฑํด์ ๋ณด๊ดํ์๋ฉด, ๋ฏธ๋์ ๋์๊ฒ ์ฑ ์์ ์ง๊ณ ๋ณด๋ด๋๋ฆฌ๊ฒ ์ต๋๋ค.
- ๊ฐํธํ๊ฒ ์นด์นด์ค๊ณ์ ์ ์ด์ฉํด์ ๋ก๊ทธ์ธํ์ธ์
- ํธ์ง์ ๊ธ๊ณผ ๊ทธ๋ฆผ์ ๊ทธ๋ฆฐ๋ค, ๋ฐ๊ณ ์ถ์ ๋ ์ง๋ฅผ ์ ํํ์ธ์
- ๊ทธ๋ฐ๋ค ๋ฐ์ค์ ๋ด์ ๋ณด๊ดํด์ฃผ์๋ฉด ๋ฉ๋๋ค๐
- ์๊ฐ์ด ๋ค๋๋ฉด, ์นด์นด์ค๊ณ์ ์ ๋ฑ๋ก๋ ์ด๋ฉ์ผ์ ํตํด ์๋ฆผ์ ๋ณด๋ด๋๋ฆฌ๊ฒ ์ต๋๋ค.
์๋ ์ ํ์์บก์์ ๋ง๋ค๋ฉด์ ํฌ๋ฉด ์ด๋ป๊ฒ ๋์ด์์ผ๋ฉด ์ข๊ฒ ๋ค! ๋ผ๋ ๋ด์ฉ๋ ๋ด์๋ ๊ธฐ์ต์ด ์์ต๋๋ค. ์๊ฐํด๋ณด๋ฉด ์๋ ์ ์ ๊ฐ ์ด๋ค ํฌ๋ง์ ํ์ ํ์์บก์์ ๋ง๋ค์๋์ง ๊ธฐ์ต๋ ์ ๋์ง์๊ณ , ์ด๋์ ๋ฌป์๋์ง ๊ธฐ์ต๋ ๋์ง ์์ต๋๋ค...
๊ทธ๋์ ํ์ฌ๋ฅผ ๊ธฐ์ค์ผ๋ก ๋ฏธ๋์ ๋์๊ฒ ๋ณด๋ด์ฃผ๋ ํธ์ง๋ฅผ ์์ฑํด์ ๋ฏธ๋์ ๋ด๊ฐ ๊ผญ ๋ฐ์๋ณผ ์ ์๋ ์๋น์ค๋ฅผ ์ ์ํด๋ณด๋ฉด ์ด๋จ๊น? ๋ผ๋ ์๊ฐ์ TimeBoxํ๋ก์ ํธ๋ฅผ ์์ํ์ต๋๋ค.
ํ์์บก์์ ๊ทธ๋๋ก ๊ทธ๋ฆฌ๊ธฐ์ ๊ฐ์ฑ์ด ๋ถ์กฑํ๋ค ์๊ฐํด์, ์์คํ ๋ฐ์ค์์ ์ถ์ต์ ๋ด๋๋ค๋ ์ปจ์ ์ ์ก์์ต๋๋ค.
๊นํ์ฑ(๋ฐฑ์๋/ํ๋ก ํธ) GitHub
**์ฑํ(๋ก๊ณ ๋ฐ ๋ํธ) Instagram **
- GitHub (๊ฐ์ธ์ ์ผ๋ก ๊ด๋ฆฌ)
- Thymeleaf
- Vanilla JS
- BootStrap
- SpringBoot
- Jpa
- EC2
- RDS (MySql)
- javaMail
- Spring Security (22.07.17 ์ถ๊ฐ)
- Spring Security OAuth2.0 (22.07.17 ์ถ๊ฐ)
- ์นด์นด์ค ๊ณ์ ์ ํตํด ๋ก๊ทธ์ธ์ ํ ์ ์๋๋ก ์ฐ๊ฒฐํ์ต๋๋ค.
-
์นด์นด์คํก ํ๋กํ์ฌ์ง์ ๋ฉ์ธ์ ๋์๋จ์ต๋๋ค.
-
์์ ์ด ์์ฑํ๋ ํธ์ง๋ค์ด ๋ด๊ธด ๋ฐ์ค๋ฅผ ๋ณผ ์ ์์ต๋๋ค.
-
์ด๋ฆฌ๊ธฐ๊น์ง ๋จ์ ์๊ฐ์ ๋ณผ ์ ์์ต๋๋ค.
-
์ค์ ํด๋จ๋ ์๊ฐ์ด ์ง๋๋ฉด ๊ท์ฌ์ด ๊ณฐ๋์ด๊ฐ ์์ฑํ๋ ํธ์ง๋ฅผ ์ฃผ๊ณ , ์ง๋์ง ์์๋ค๋ฉด ๋ซํ์๋๋ก ๋ง๋ค์์ต๋๋ค.
-
๋ก๊ทธ์์ ๋ฒํผ์ ๋๋ฅด๋ฉด ๋ก๊ทธ์์๋๊ณ , ์์ฑํ๋ฌ๊ฐ๊ธฐ๋ฅผ ๋๋ฅด๋ฉด ํธ์ง๋ฅผ ์์ฑํ ์ ์์ต๋๋ค.
- ์ด๋ฆฌ์ง์์ ์์๋ฅผ ๋๋ฅธ๋ค๋ฉด, ์๋ฌ๋ฉ์ธ์ง๋ฅผ ์ถ๋ ฅํ๋๋ก ๋ง๋ค์์ต๋๋ค.
-
์คํํ๊ณ ์ถ์ ๋ ์ง๋ฅผ ์ ๋ ฅ, ํน์ ๋ฌ๋ ฅ์์ ์ ํํ ์ ์์ต๋๋ค.
-
์๋์ ์๋ ํด์ ์ด์ฉํด์ ํฐํธ์ ๋ถ์ ํฌ๊ธฐ, ๋ถ์ ์์ ๊ณ ๋ฅผ ์ ์์ต๋๋ค.
-
์บ๋ฒ์ค์ ๊ทธ๋ฆผ์ ๊ทธ๋ฆด ์ ์์ต๋๋ค. ๊ธ์จ์๋ ๋ณ๊ฐ ์บ๋ฒ์ค์ด๋ฏ๋ก, ์ง์๋ ๊ธ์๋ ์ง์์ง์ง ์์ต๋๋ค.
-
๋ณด์ฌ๋๋ฆฌ๊ธฐ์ํด ์๊น ๋ง๋ ํธ์ง๋ฅผ ์ด์ง ๊ฑด๋๋ ค์ ์๊ฐ์ด ์ง๋ฌ๋ค๊ณ ํด๋ณด์...
-
๋ค์ด๋ก๋๋ฅผ ๋๋ฅด๋ฉด ์๋์๊ฐ์ด ์ ์ฅ์ด๋ฉ๋๋ค.
์นด์นด์ค ์์
๋ก๊ทธ์ธ์ ์ด์ฉํด์ ๋ก๊ทธ์ธ์ ๊ตฌํํ์ต๋๋ค. ์นด์นด์ค ๋๋ฒจ๋กํผ๋ฅผ ์ด์ฉํด์ ID์ Email์ ๋ฐ์ ์ ์ฅํ์์ต๋๋ค.
(2022.07.17 ์ ์ฉ)Spring Security์ OAuth๋ฅผ ์ด์ฉํด์ ์นด์นด์ค ์์
๋ก๊ทธ์ธ์ ๊ตฌํํ์ต๋๋ค.
์บ๋ฒ์ค๋ฅผ ์ด์ฉํ์ฌ ๊ทธ๋ฆผ์ ๊ทธ๋ฆฌ๊ณ , ๊ธ์จ๋ฅผ ์ด๋ค ์ ์ฅ์ ํ๋ฉด base64๋ก ์ธ์ฝ๋ฉ๋ ๋ฐ์ดํฐ๊ฐ ๋ฉ๋๋ค. ์ด ๋ฐ์ดํฐ๋ฅผ ์๋ฒ์์ ๋ฐ์์ ์ ์ฅํ ๋ค, ์ฌ์ฉ์๊ฐ ํด๋นID์ ๋ฉ์ธ์ง๋ฅผ ํธ์ถํ๋ฉด, ์ด ๋ฐ์ดํฐ๋ฅผ ๋ฟ๋ ค์ฃผ๋ ๋ฐฉ๋ฒ์ ์ด์ฉํด์ ๋ฉ์ธ์ง๋ฅผ ์ ์ฅํ๊ณ , ๋ณด์ฌ์ฃผ์์ต๋๋ค.
์ฒ์์๋ ์นด์นด์ค๊ณ์ ์ผ๋ก ๋ก๊ทธ์ธ์ ํ ๋ค, ์ฑ๋์ ํตํด ์ฌ์ฉ์๋ค์๊ฒ ์๊ฐ์ด ๋ค๋์๋ค๋ ๋ฉ์ธ์ง๋ฅผ ๋ณด๋ด์ฃผ๊ณ ์ถ์์ง๋ง, ์ฑ๋๊ณผ ์นด์นด์ค ์ดํ๋ฆฌ์ผ์ด์ ์ ์ฐ๋ํ๋๋ฐ ์ฌ์ ์ ๋ฒํธ๊ฐ ํ์ํด์ ์ด๋ ํฌ๊ธฐํ์ต๋๋ค.
๊ทธ๋ผ ๋ค๋ฅธ ๋ฐฉ๋ฒ์ด ๋ฌด์์ด ์์์ง ์๊ฐ์ ํด๋ณด๋ ์นด์นด์ค ๋ก๊ทธ์ธ์ ํ๋ฉด์ ์ด๋ฉ์ผ์ ๋ฐ์ ์ ์๋๋ฐ, ์ด ์ด๋ฉ์ผ์ ์ด์ฉํด์ ์ฌ์ฉ์๋ค์๊ฒ ์ด๋ฉ์ผ๋ก ์๋ ค์ฃผ๋ฉด ์ด๋จ๊น? ๋ผ๋ ์๊ฐ์ ์ด๋ฉ์ผ์ ์ฑํํ์ต๋๋ค.
์ค์ผ์ฅด๋ง์ ์ด์ฉํด์ ๋งค์ผ 00:00๋ถ์ ์๋ฃ๋ ๋ฉ์ธ์ง๋ฅผ ์ ๋ถ ์ฐพ์ ๋ค, JavaMail์ ์ด์ฉํด์ ๋ฉ์ผ์ ์ ์กํ๋๋ก ๋ง๋ค์์ต๋๋ค.
์ ์์๊ฐ์ด ๊ธด ์๋น์ค๊ฐ ์๋๋ผ์ ์๋ฒ์ ๋ถ๋ด์ด ๋ํ๊ณ , Thymeleaf๋ฅผ ์ด์ฉํ์ฌ Server Side Rendering์ ํ๊ธฐ๋๋ฌธ์, JWT๋ณด๋จ Session์ ์ด์ฉํด์ ์ ์ ๊ด๋ฆฌ๋ฅผ ํด์ฃผ๋๊ฒ์ด ์ข๋ค๊ณ ์๊ฐ์ํด์ Session์ ์ด์ฉํ์ต๋๋ค.
๋ก๊ทธ์ธ์ด ๋์ง์์์ฑ ์ด๋ฐ์ ๋ฐ ํ์ด์ง๋ฅผ ๋์๋ค๋๋ค๋ฉด ๋ณด์์ ๋ฌธ์ ๊ฐ ์๊ธฐ๋ฏ๋ก, Interceptor๋ฅผ ์ด์ฉํด์ ์ธ์
์ด ์กด์ฌํ์ง ์์ผ๋ฉด loginํ์ด์ง๋ก Redirect๋๊ฒ๋ ์ค์ ํ์ต๋๋ค.
MVC(Model, View, Controller) ์ ํจํด์ ์ ์ฉํ์ต๋๋ค.
์ฒ์์ผ๋ก ํผ์์ ๋ฐฐํฌ๊น์ง ํ ํ๋ก์ ํธ์ ๋๋ค. ํ๋ก ํธ์ ๋ฐฑ์ ๋ชจ๋ ํผ์์ํ๋ค๋ณด๋ ์ญ์๋ ๋๋ฌด ํ๋ค์์ต๋๋ค. ๋๊ตฐ๋ค๋ ๋์์ธ๊ฐ๊ฐ๋ ์์ด์ ๋ ํ๋ค์์ต๋๋ค. ์ฒ์ css๋ฅผ ์ด์ฉํด์ ๋ง๋ ๋ฐ์ค ๋์์ธ์ด์๋๋ฐ , ์น๊ตฌํํ ๋ณด์ฌ์ฃผ๋ ์์ ์ด ๋ํธ๋ฅผ ์ฐ์ด์ฃผ๊ฒ ๋ค๋ฉด์ ํ์ผ์ ๊ฑด๋ค์ฃผ์์ต๋๋ค....
ํ๋ก ํธ๋ ์ ๋ง ์ฃผ๋ณ์ ๋ง์์ฌ๋๋ค์๊ฒ ์กฐ์ธ๊ณผ ํผ๋๋ฐฑ์ ๋ฐ๋๋ฑ์ ๋์์ ๋ฐ์์ ์์ฑ์ ํ์ต๋๋ค.
์๋ฒ์ชฝ์ผ๋ก ๋์ด๊ฐ์, ๋จผ์ ์ ๋ฒํ๋ก์ ํธ์์๋ JdbcTemplate์ ์ฌ์ฉํ๋๋ฐ, ์ด๋ฒ์๋ Jpa๋ฅผ ์ด์ฉํด์ ๋ง๋ค์ด๋ณด์! ๋ผ๋ ์๊ฐ์ํ๊ณ ํ๋ก์ ํธ๋ฅผ ์งํํ๊ธฐ์ ์ Jpa์๋ํด ๊ณต๋ถ๋ฅผ ํ์ต๋๋ค. JdbcTemplate์ ์ฌ์ฉํ๋ค๊ฐ Jpa๋ฅผ ์ฌ์ฉํ๋ ๊ฐ๋ฐํ๋ฉฐ ๋ง์ ์ฅ์ ์ ๋๋ ์ ์์์ต๋๋ค.
- ์ ์ง๋ณด์๊ฐ ๊ฐํธํ๋ค.
- ์ฟผ๋ฆฌ๋ฅผ ์งค ํ์๊ฐ ์์ด์ ์๋น์ค ๋ก์ง์ ์ง์คํ ์ ์์๋ค. ํฌ๊ฒ๋ ์์ ๋๊ฐ์ง๊ณ ์ธ์ธํ ์ฅ์ ๋ค์ ๋๋ ์ ์์์ต๋๋ค.
๋ค์์ผ๋ก ๋๋์ ์ TDD์ ์ค์์ฑ์ ๋๊ผ์ต๋๋ค. ์ด ํ๋ก์ ํธ๋ TDD๊ฐ์๋ ๊ฐ๋ฐ์ ํ๋ฉฐ ํ ์คํธ์ฝ๋๋ฅผ ์์ฑํด๋๊ฐ๋๋ฐ, ์ด๋ ๊ฒ ํ๋ค๋ณด๋๊น ๋นจ๋ฆฌ ์๋น์ค๋ก์ง์ ๊ฑด๋ค๊ณ ์ถ์ ์๊ฐ์ ํ ์คํธ์ฝ๋์ ์ฌํ์ ๊ธฐ์ธ์ด์ง ๋ชปํ์ต๋๋ค. ๋ค์ ํ๋ก์ ํธ๋ถํฐ๋ TDD๋ฐฉ์์ ์ฑํํด์ผ๊ฒ ๋ค๋ ์๊ฐ์ด ๋ค์์ต๋๋ค.
๋ํ ๋ค์ํ๋ก์ ํธ๋๋ SpringSecurity๋ฅผ ์ฌ์ฉํด๋ณด๊ณ ์ถ๋ค๋ ์๊ฐ์ด ๋ค์๊ณ , ๊ฐ๋ฐํ ๋ ๊ด์ฌ์ฌ๋ถ๋ฆฌ๋ฅผ ์ฒ ์ ํ๊ฒ ํ๋ ์ฐ์ต์ ๋ ํด์ผ๊ฒ ๋ค๊ณ ๋๊ผ์ต๋๋ค.