야구부터 농구까지, 개인에 커스터마이징된 스포츠 캘린더입니다.
관심 팀을 설정하고 알림을 통해 경기를 놓치지 않도록 도와줍니다.
AI팀 추천과 챗봇으로 새로운 팬심의 즐거움까지 느낄 수 있습니다.
내 응원 팀의 일정만 쏙쏙,
관심 팀 맞춤형 캘린더
경기 규칙부터 팀 추천까지,
팬심을 넓히는 스마트한 파트너
FullCalendar를 커스터마이징하여, 일자별 경기 밀도에 따라 색상의 농도가 변하는 직관적인 UI를 구현했습니다.
야구, 축구, 농구 등 종목에 관계없이 내가 응원하는 팀만을 골라 나만의 캘린더를 구성할 수 있습니다.
관심 팀 경기 시작 1시간 전, 놓치지 않도록 이메일 알림을 자동 발송하는 스케줄링 시스템을 구축했습니다.
"응원 팀이 없어도 괜찮습니다."
사용자의 성향을 분석하여 AI가 가장 적합한 스포츠 팀을 추천해줍니다.
경기 규칙부터 선수 정보까지, 궁금한 점은 언제든 파트너 챗봇에게 물어볼 수 있습니다.
사용자 비밀번호 저장 시 Salt가 포함된 BCrypt 해싱을 적용하여 보안을 강화했습니다.
경기 시작 1시간 전 알림을 위해 @Scheduled로 배치 작업을 구성하고, JavaMailSender를 활용하여 메일을 발송하도록 구현했습니다.
외부 라이브러리에 의존하지 않고, Vanilla CSS로 커스텀 디자인 시스템을 개발하여 일관성 있는 UI를 구현했습니다.
@Bean
public SecurityFilterChain filterChain(HttpSecurity http) {
http
.csrf().disable()
.sessionManagement()
.sessionCreationPolicy(SessionCreationPolicy.STATELESS)
.and()
.authorizeRequests()
.antMatchers("/api/auth/**").permitAll()
.anyRequest().authenticated()
.and()
.addFilterBefore(new JwtAuthenticationFilter(jwtTokenProvider),
UsernamePasswordAuthenticationFilter.class);
return http.build();
}
Spring Security와 JWT를 연동해 보며, 토큰을 사용한 인증 및 인가 처리 과정을 직접 경험하고 구현해 보았습니다.
사용자 비밀번호는 BCrypt 해싱 알고리즘을 적용하여 DB 유출 시에도 복호화가 불가능하도록 보호했습니다.
기존 라이브러리에 의존하던 방식에서 벗어나, Flexbox와 Grid 등 CSS의 핵심 속성을 직접 다루며 기획한 UI를 그대로 화면에 구현해냈습니다.
짧은 기간, 풀스택 개발이라는 압박 속에서도
"막막한 순간에도 반드시 해답을 찾아낸다"는
강한 끈기와 논리적인 문제 해결력을 얻었습니다.