Skip to content

jinh0215/samshisaeki

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

86 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

대건세끼

대건고등학교 급식 식단 뷰어 및 순서 웹 푸시 서비스

Published At

Server

웹 서버 (책임자: @권영준)

Stack

  • Web Crawling - Python Beautiful soup
  • Node.js - Express.js framework
  • API Development - RESTful API
  • User Authentication (Restricted User registration & User login) - with Mongo DB
  • Crawling Data (meun) caching - Mongo DB
  • Automate scheduled DB delete & update - by cron
  • JSON Web Token (JWT) Authentication - secured request & response
  • Web push alert

Feature

  • Express.js를 활용해 Server API를 RESTful API 규격에 맞추어 작성
  • Client로 API를 사용해 요청에 대한 급식메뉴, 급식 순서, 회원가입, 로그인, 웹푸시를 Token(JSON Web Token)을 이용한 인증을 거쳐 응답함으로써 안전한 요청과 응답
  • MongoDB를 활용한 급식메뉴 캐싱, 회원가입 관리
  • cron과 axios을 통해 API를 활용해서 "웹크롤링 -> DB 삭제 -> DB 업데이트"과정을 자동화
  • web-push로 시간에 맞추어 Client에게 알람(급식 순서) 보내는 요청 보내기

Folder Structure

  • backend : app.js(서버 구동), scrap.py(웹크롤러 스크립트)
    • #legacy : Express서버와 DB를 MySQL을 사용하던 개발 초창기 코드들 (Deprecated)
    • controllers : router에서 사용하는 각종 모듈들 모음
    • database : Mongo DB에 액세스하기위한 초기 설정 코드
    • helpers : 회원가입 이메일 중복검사, 토큰생성, 식단 DB 캐싱 함수
    • middlewares : CORS, 토큰인증 같이 중간에서 데이터를 처리,인증 등을 거치고 다음으로 넘겨주는 함수들 모음
    • models : MongoDB 데이터베이스 구조 스키마 모음
    • routes : 클라이언트의 요청을 받는 엔드포인트에 대한 라우팅 코드 모음
    • static : 정적파일(로고 svg파일)

Repository

  • Automated publish powered by heroku (session expired)

Client

웹 클라이언트 (책임자: @금정빈)

Stack

  • React (boilerplate by CRA)
  • Recoil.js - State mangagement library
  • Styled Components - CSS in JS
  • Reat Router Dom - Router management
  • React Helmet - Modify html metadta
  • React Datepicker - For Datepicker
  • ServiceWorkers (client) - For web push alert

Feature

  • Styled-components로 React에서 css 작성
  • Server에서 급식메뉴, 급식 순서 받아오면서 가공
  • ServiceWorkers를 사용하여 사용자에게 알람(급식 순서) 보내기

Folder Structure

  • public
  • src
    • atom : Recoil 상태 관리 관련 모음
    • components : 리액트 컴포넌트 모음
    • hooks : 리액트 훅 모음 (인가인증 처리 로직, 바깥부분 클릭 확인 로직(모달창에 사용))
    • lib : 각종 유틸들 모음
    • icon : 이미지 아이콘들 모음
    • pages : 라우팅 된 컴포넌트 모음

Repository

  • Automated publish with github actions (Client only)

Releases

No releases published

Packages

No packages published

Languages

  • TypeScript 59.3%
  • JavaScript 30.4%
  • Python 6.8%
  • HTML 3.5%