Skip to content

INHA-404-Not-Found/BE

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

204 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

기술 스택

  • Frontend: JavaScript, HTML5, CSS, React, React Native, Expo, Redux
  • Backend: Spring Boot, Spring Data JPA, Spring Security, JWT, MySQL

사용 툴

  • Tools: Git Hub, Notion, Postman, Figma

배포

  • Infra: Amazon EC2, RDS, NGINX




LOST-INHA

인하대학교 분실물 통합 관리 플랫폼입니다. 교내 분실물을 최소화하고 학생들의 학교 생활의 질을 향상시켜주고자 합니다.


프로젝트 소개

LOST INHA는 캠퍼스 내 분실물/습득물을 빠르고 체계적으로 관리할 수 있는 통합 플랫폼입니다. 기존의 아날로그 중심 분실물 관리 방식을 개선하여, 학생과 관리자 모두가 효율적으로 정보를 공유하고 확인할 수 있도록 설계되었습니다.

  • 관리자 (웹): 분실물/습득물 조회 및 일괄 수정, 수령자 정보 등록, 물품 카테고리 등록 및 수정 가능
  • 학생 (앱): 분실물/습득물 등록, 카테고리별/분실 위치별/상태별 검색 가능

이 플랫폼을 통해 관리자는 분실물 관리 업무의 효율성을 높이고, 학생은 언제 어디서나 간편하게 물품을 등록하고 조회할 수 있는 편리한 사용자 경험을 제공합니다.



주요기능

  • JWT 기반 인증 로그인
  • 편리한 분실/습득 게시물 등록
  • 분실 신고 해두면 사용자 맞춤 알림 전송
  • 게시판의 편리한 분실물 필터링

시스템 아키텍처

Image

프로젝트 구조

Frontend

- 웹

+---public
|   +---fonts
|   \---images
\---src
  +---api
  +---assets
  +---components
  +---fonts
  +---pages
  |   +---itemCategory
  |   +---login
  |   +---main
  |   +---post
  |   \---receiverRegist
  +---styles
  \---utils

- 앱

MOBILE
├── .expo
│   └── web
├── .vscode
├── android
├── api
│   ├── api.js
│   ├── auth.js
│   ├── category.js
│   ├── location.js
│   ├── post.js
│   └── receiver.js
├── assets
├── components
│   ├── BottomBar.js
│   ├── CategoryList.js
│   ├── DefaultHeader.js
│   ├── LocationMap.js
│   ├── LocationViewBox.js
│   ├── MyPostListItem.js
│   ├── Notification.js
│   ├── PostListItem.js
│   ├── PostTypeSelector.js
│   ├── SearchHeader.js
│   ├── SelectCate.js
│   └── StatusLabel.js
├── hooks
│   └── useAuth.js
├── node_modules
├── Redux
│   ├── slices
│   │   ├── categorySlice.js
│   │   ├── keywordSlice.js
│   │   ├── locationSlice.js
│   │   └── mySlice.js
│   └── store.js
├── screens
│   ├── AddLostPostScreen.js
│   ├── AddPostScreen.js
│   ├── EditPostScreen.js
│   ├── Login.js
│   ├── MainScreen.js
│   ├── MyPostListScreen.js
│   ├── NotificationListScreen.js
│   ├── PostListScreen.js
│   ├── PostScreen.js
│   └── UserScreen.js
├── utils
│   ├── DateFormat.js
│   └── imageSource.ts
├── .gitignore
├── App.js
├── app.json
├── babel.config.js
├── package-lock.json
├── package.json
├── setupProxy.js
├── tokenStorage.js
└──  TokenStore.js

Backend

+---domain
|   +---category
|   |   +---api
|   |   +---dto
|   |   |   +---request
|   |   |   \---response
|   |   +---model
|   |   +---repository
|   |   \---service
|   +---comment
|   |   +---api
|   |   +---dto
|   |   |   +---request
|   |   |   \---response
|   |   +---model
|   |   +---repository
|   |   \---service
|   +---location
|   |   +---api
|   |   +---dto
|   |   |   +---request
|   |   |   \---response
|   |   +---model
|   |   +---repository
|   |   \---service
|   +---member
|   |   +---model
|   |   \---repository
|   +---notification
|   |   +---api
|   |   +---dto
|   |   |   +---request
|   |   |   \---response
|   |   +---model
|   |   +---repository
|   |   \---service
|   +---post
|   |   +---api
|   |   +---dto
|   |   |   +---request
|   |   |   \---response
|   |   +---model
|   |   +---repository
|   |   \---service
|   \---receiver
|       +---api
|       +---dto
|       |   +---request
|       |   \---response
|       +---model
|       +---repository
|       \---service
\---global
    +---auth
    |   +---token
    |   |   +---api
    |   |   +---dto
    |   |   |   +---request
    |   |   |   \---response
    |   |   +---exception
    |   |   +---filter
    |   |   \---service
    |   \---user
    +---config
    |   +---auth
    |   +---firebase
    |   \---web
    +---firebase
    |   +---api
    |   +---dto
    |   |   \---request
    |   +---model
    |   +---repository
    |   \---service
    \---mail
    +---api
    \---service

개발환경

Version

  • Spring boot: 3.x

  • Java: JDK 21

  • Mysql: 8.xx

  • React: 19.x.x

  • React Native: 0.81.x

  • expo: 54.x.x

환경 설정 및 실행

FE

BE

1️. 프로젝트 클론

git clone https://github.com/INHA-404-Not-Found/BE.git

2️. 의존성 설치

./gradlew build

3️. 환경 변수 설정

  -- resources/application.properties DB, 환경변수 등 설정 --
  spring.application.name=next_campus

  # DB 관련
  spring.datasource.url=${YOUR_DB_URL}
  spring.datasource.username=${YOUR_DB_USERNAME}
  spring.datasource.password=${YOUR_DB_PASSWORD}
  spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.MySQLDialect

  # JWT 인증 관련
  jwt.secret=${YOUR_JWT_SECRET}
  jwt.access-token-expiration-ms=${YOUR_JWT_ACCESS_EXPIRATION}
  jwt.refresh-token-expiration-ms=${YOUR_JWT_REFRESH_EXPIRATION}

  # 이메일 알림 관련
  spring.mail.host=smtp.gmail.com
  spring.mail.port=587
  spring.mail.username=${YOUR_MAIL_USERNAME}
  spring.mail.password=${YOUR_MAIL_PASSWORD}
  
  spring.mail.properties.mail.smtp.auth=true
  spring.mail.properties.mail.smtp.starttls.enable=true

  # DB 테이블 정보 가져오기
  spring.jpa.hibernate.ddl-auto=update

  server.port=8080
  server.ssl.enabled=false

4️. 실행
./gradlew bootRun

5️. 테스트
Postman으로 API를 테스트 KakaoTalk_20251107_151856585 KakaoTalk_20251107_151856585_01 KakaoTalk_20251107_151856585_02 KakaoTalk_20251107_151856585_03


ERD

Image


Sparkles 팀원 소개

Frontend Frontend Backend Backend
김도담 안유민 권도연 최지윤(팀장)

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors