Skip to content

AjouEvent/AjouEvent_FE

Repository files navigation

📢 AjouEvent (아주이벤트)

"학교의 모든 소식, 놓치지 말고 구독하세요" 아주대학교 공지사항 및 행사 정보를 유튜브처럼 구독하고 푸시 알림으로 받아보는 공지 통합 플랫폼입니다.

ajouevent_홍보_page-0001

🔗 배포 링크 (Deploy)


📖 프로젝트 배경 (Background)

"장학금 신청 기간을 놓쳐서 못 받았어..." "우리 학과 공지는 어디서 봐야 하지?"

아주대학교의 공지사항은 학교 홈페이지, 단과대 사이트, 학과 게시판 등 여러 곳에 흩어져 있어 학생들이 필요한 정보를 제때 확인하기 어려웠습니다. 이러한 문제를 해결하기 위해, 사용자가 관심 있는 키워드와 카테고리만 구독하면, 새 글이 올라올 때 즉시 알려주는 서비스를 기획하게 되었습니다.


✨ 핵심 기능 (Key Features)

  • 🔔 맞춤형 공지 구독: 일반/장학/학사/취업 등 원하는 카테고리만 골라 구독 가능
  • 💬 키워드 푸시 알림: '졸업', '장학금' 등 특정 키워드 등록 시 관련 공지 등록 즉시 FCM 푸시 발송
  • 📅 캘린더 연동: 공지사항의 일정을 구글 캘린더에 원클릭으로 저장
  • 📱 PWA 지원: 앱스토어 심사 없이 웹에서 바로 설치하여 네이티브 앱처럼 사용 가능
  • 🔥 실시간 인기 공지: 학우들이 가장 많이 클릭한 이번 주 인기 공지사항 랭킹 제공
image (7) image (8) image (9)

🛠️ 기술 스택 (Tech Stack)

분류 기술
Framework React
Language JavaScript
Notification Firebase (Cloud Messaging)
State Mgt Recoil (or Context API)
Styling Styled Components
Deploy Vercel (or AWS Amplify)

📂 아키텍처 및 폴더 구조 (Architecture)

PWA 설정과 FCM 알림 처리를 위한 구조로 설계되었습니다.

AjouEvent_FE/
├── public/
│   ├── firebase-messaging-sw.js # 백그라운드 푸시 알림 처리를 위한 Service Worker
│   └── manifest.json            # PWA 설치 정보 설정
├── src/
│   ├── api/                     # Axios 인스턴스 및 공지사항 조회 API
│   ├── assets/                  # 아이콘, 배너 이미지
│   ├── components/              # 공통 UI (Button, Modal, NoticeCard)
│   ├── pages/                   # 페이지 (Home, Subscribe, MyPage)
│   ├── hooks/                   # 커스텀 훅 (useNotification, useCalendar)
│   ├── utils/                   # 날짜 포맷팅, FCM 토큰 처리 로직
│   ├── App.js
│   └── index.js
├── .env                         # Firebase Key 및 API EndPoint
├── package.json
└── README.md

💡 기술적 도전 & 트러블 슈팅 (Challenges)

1. PWA와 FCM을 활용한 웹 푸시 구현

  • 문제: 웹 환경(iOS/Android/PC)에서 네이티브 앱 없이 알림을 보내야 하는 요구사항.
  • 해결: Firebase Cloud Messaging(FCM)과 Service Worker를 연동하여 브라우저가 닫혀 있어도 백그라운드 알림을 수신할 수 있도록 구현. 특히 iOS(Safari)의 PWA 푸시 정책 변화에 맞춰 manifest.json을 최적화함.

2. 구독 데이터 동기화 최적화

  • 문제: 사용자가 구독한 태그/키워드가 많아질수록 메인 페이지 로딩 속도가 저하됨.
  • 해결: 초기 로딩 시 전체 공지를 불러오지 않고, Intersection Observer를 활용한 무한 스크롤 Infinite Scroll을 도입하여 초기 렌더링 속도를 40% 개선.

3. 크롤링 데이터 정제 및 렌더링

  • 문제: 백엔드(Go/Java)에서 크롤링해온 데이터에 포함된 불필요한 HTML 태그나 깨진 문자열 처리.
  • 해결: 프론트엔드 단에서 정규표현식(Regex)을 이용한 유틸리티 함수를 제작하여, 텍스트 미리보기(Preview)를 깔끔하게 정제하여 UI 가독성을 높임.

🚀 설치 및 실행 (Getting Started)

# 1. Repository Clone
git clone https://github.com/AjouEvent/AjouEvent_FE.git

# 2. Install Dependencies
npm install

# 3. Environment Setup (.env)
# REACT_APP_API_URL=...
# REACT_APP_FIREBASE_API_KEY=...

# 4. Run Development Server
npm start

📬 Team & Contact


© 2024 Yoonseokchan. All rights reserved.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 4

  •  
  •  
  •  
  •  

Languages