Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
138 changes: 138 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,138 @@
# GOMS Android V3

<img width="2558" height="1495" alt="image" src="https://github.com/user-attachments/assets/3f9959a8-0555-47f9-81d2-b4b57b28a836" />

---

# 🤔 GOMS?

**GOMS**는 __광주소프트웨어마이스터고등학교__ Haribo가 개발한 Flutter 기반 애플리케이션으로,
월요일과 수요일에 시행되는 외출제를 **보다 효율적이고 체계적으로 관리하기 위해 제작되었습니다.**

기존 수기 기반 관리 방식에서 발생하던 비효율적인 프로세스를 개선하고,
외출 현황을 실시간으로 관리할 수 있는 시스템을 구축하는 것을 목표로 합니다.

---

## Preview


---

## 🎯 Problem

기존 외출제 운영 과정에서는 다음과 같은 문제가 존재했습니다.

- 학생회가 외출 학생을 수기로 직접 기록해야 하는 구조
- 지각 및 미복귀 학생을 즉시 파악하기 어려운 환경
- 데이터가 체계적으로 관리되지 않아 운영 효율성이 낮은 문제

---

## 💡 Solution

GOMS는 위 문제를 해결하기 위해 다음과 같은 방식으로 설계되었습니다.

- 외출 상태를 실시간으로 **조회할 수 있도록 시스템화**
- 지각 및 미복귀 학생을 **자동으로 식별하는 구조 설계**
- QR 기반 인증 시스템을 도입하여 **출입 관리 정확도 향상**
- 지도 기반 기능을 통해 외출 **시간 활용도를 높이는 사용자 경험 제공**

---

## ✨ Key Features

- 실시간 외출 현황 조회 기능
- 지각 학생 TOP 3 자동 집계 기능
- 7시 30분 기준 미복귀 학생 자동 블랙리스트 등록
- QR 코드 생성 및 스캔 기능
- 학생 검색 및 권한 관리 기능
- 유효하지 않은 QR 코드 차단
- 외출제 상태 푸시 알림
- Kakao Maps SDK 기반 주변 장소 탐색 및 경로 안내

---

## Architecture

- Riverpod 기반 상태 관리
`flutter_riverpod`와 `state_notifier`를 활용해 View와 비즈니스 로직을 분리하여 유지보수성과 확장성을 확보

- 모듈화된 프로젝트 구조
디자인 시스템을 `packages/goms_design_system` 내부 패키지로 분리하여 UI 일관성과 재사용성을 확보하고, 기능 단위로 코드를 구성

- 코드 생성 기반 개발
`freezed`, `json_serializable`, `retrofit_generator`를 활용해 모델과 API 통신 코드의 보일러플레이트를 최소화

---

## 🛠 Tech Stack

### Flutter
- Flutter / Dart
- FVM (Flutter Version Management)

### State Management
- Riverpod (flutter_riverpod)
- state_notifier

### Routing
- go_router

### Networking
- Dio
- Retrofit

### Code Generation
- Freezed
- json_serializable
- build_runner

### Location
- Kakao Maps SDK (kakao_map_sdk)
- Geolocator

### UI
- 내부 디자인 시스템 패키지 (goms_design_system)
- flutter_screenutil
- flutter_svg
- responsive_framework
- image_fade
- Custom Fonts: SUIT, GmarketSans

### Storage
- flutter_secure_storage
- shared_preferences

### Push Notification
- Firebase Core
- Firebase Messaging

### QR
- mobile_scanner (스캔)
- qr_flutter (생성)

### Environment
- flutter_dotenv

### Others
- permission_handler
- device_info_plus
- image_picker
- table_calendar

---

## What Makes This Project Different

- 단순 기능 구현이 아닌 실제 사용자 환경에서 발생한 문제를 기반으로 설계된 서비스
- 내부 디자인 시스템 패키지(goms_design_system)를 통한 UI 일관성과 재사용성 확보
- Kakao Maps SDK를 활용한 위치 기반 기능 확장
- 실제 학교 환경에서 사용 가능한 수준의 서비스 완성도

---

## Summary

수기 기반 외출제 관리 방식을 데이터 기반 시스템으로 전환하여
운영 효율성과 사용자 경험을 동시에 개선한 Flutter 애플리케이션
Loading