Article

Flutter와 Laravel로 1일 만에 만든 아이 교육 앱

아이 교육이 주요 관심사가 되면서 처음 시작한 프로젝트가 키즈랜드입니다. 단순한 아이디어를 하루 안에 실제 동작하는 앱으로 만들기 위해 Flutter와 Laravel을 선택했습니다.

프로젝트 시작의 배경

보육 시설에 다니는 아이들을 위한 학습 보조 앱을 만들고 싶었습니다. 기존 교육 앱들은 너무 복잡하고 비싼 데다가, 부모가 원하는 기능이 부족한 경우가 많았습니다. 그래서 필수 기능만 담은 간단하지만 효과적인 앱을 만들기로 결심했습니다.

기술 스택 선택

왜 Flutter인가?

모바일 앱을 만드는 방법은 여러 가지가 있습니다. iOS와 Android를 각각 개발하는 네이티브 방식도 있고, React Native 같은 크로스 플랫폼 솔루션도 있습니다. 하지만 시간이 극히 제한된 상황에서 선택한 것은 Flutter였습니다.

  • 빠른 개발: Hot Reload 기능으로 코드 수정 후 즉시 결과 확인
  • 크로스 플랫폼: 한 번의 코드 작성으로 iOS, Android 동시 지원
  • 아름다운 UI: Material Design이 기본으로 적용되어 별도 디자인 작업 최소화
  • 성능: 네이티브에 준하는 빠른 실행 속도

백엔드는 Laravel

서버는 PHP 기반의 Laravel을 선택했습니다.

  • 개발 속도: 많은 보일러플레이트가 이미 구성되어 있음
  • 생태계: 오픈소스 패키지가 풍부해 바퀴를 다시 만들 필요 없음
  • 데이터베이스: MySQL과의 통합이 매우 간단

데이터베이스는 MySQL

사용자 데이터와 학습 컨텐츠를 저장하기 위해 MySQL을 선택했습니다. 관계형 데이터베이스의 안정성과 확장성이 필요했습니다.

개발 타임라인

1단계: 기획 및 설계 (0시간)

모든 시간을 개발에 사용하기 위해 기획은 최소화했습니다. 마인드맵 수준의 간단한 스케치만으로 출발했습니다.

2단계: 모바일 앱 개발 (6시간)

Flutter 프로젝트를 생성하고 기본 화면을 구성했습니다. 아이들이 사용할 메인 페이지, 학습 콘텐츠 목록, 간단한 퀴즈 화면을 만들었습니다.

구현한 주요 기능:

  • 사용자 회원가입 및 로그인
  • 아이 프로필 생성 및 관리
  • 학습 콘텐츠 목록 표시
  • 간단한 상호작용 (터치, 탭)

3단계: 백엔드 API 개발 (4시간)

Laravel로 REST API를 구축했습니다. 사용자 인증, 아이 정보 관리, 학습 콘텐츠 제공 등의 엔드포인트를 작성했습니다.

4단계: 통합 및 테스트 (2시간)

Flutter 앱이 Laravel 백엔드와 통신하도록 연결했습니다. 네트워크 요청, 응답 처리, 에러 핸들링 등을 확인했습니다.

5단계: 배포 준비 (2시간)

Firebase를 사용해 백엔드를 배포하고, Flutter 앱을 테스트 환경에 설치했습니다.

총 개발 시간: 약 14시간 (일 전체 기준으로는 1일 집중 개발)

개발 과정에서 배운 점

빠른 프로토타이핑의 강력함

기획을 간단히 하고 즉시 개발에 들어가는 것의 장점을 몸소 느꼈습니다. 실제 코드를 작성하면서 더 명확한 요구사항이 보이고, 그에 맞춰 빠르게 방향을 수정할 수 있었습니다.

UI/UX 설계의 어려움

아이들을 위한 앱이라는 특수성 때문에 UI/UX가 매우 중요했습니다.

  • 글자 크기는 충분히 큰가?
  • 터치 버튼은 아이 손가락 크기에 맞는가?
  • 색상은 아이들이 좋아할 만한가?

이러한 세부사항들이 개발보다 더 많은 시간과 고민을 필요로 했습니다.

데이터 보안의 중요성

아이의 개인 정보를 다루는 앱이기 때문에 보안은 선택이 아닌 필수였습니다. HTTPS 통신, 비밀번호 암호화, 데이터 검증 등을 꼼꼼히 구현해야 했습니다.

직면한 도전과제

플랫폼별 호환성

Flutter가 훌륭하지만, 여전히 iOS와 Android 간의 미묘한 차이가 있습니다. 특히 터치 감도와 애니메이션이 플랫폼별로 다르게 작동했습니다.

백엔드 성능 최적화

초기 API 설계가 데이터베이스 쿼리를 효율적으로 처리하지 못했습니다. 나중에 인덱싱과 쿼리 최적화가 필요했습니다.

테스트 부족

1일 개발이라는 타이트한 일정 때문에 충분한 테스트를 하지 못했습니다. 이후 버그를 발견하고 수정하는 데 더 많은 시간이 들었습니다.

향후 개선 계획

단계 1: 안정성 강화 (2주)

  • 자동 테스트 코드 추가
  • 엣지 케이스 처리
  • 성능 프로파일링 및 최적화

단계 2: 기능 확대 (1개월)

  • 부모용 관리 기능 추가
  • 학습 통계 및 진도 추적
  • 더 다양한 학습 콘텐츠

단계 3: 상용화 (2개월)

  • 팀의 피드백 수집
  • 사용자 테스트 및 개선
  • App Store, Google Play 출시

마치며

키즈랜드 프로젝트는 제 경험 중 가장 빠르고 집중력 있는 개발이었습니다. 완벽함을 추구하는 것보다 동작하는 것을 먼저 만들고, 그 다음에 개선하는 철학이 얼마나 효과적인지 체감할 수 있었습니다.

아이 교육이라는 의미 있는 목표와 Flutter, Laravel의 강력한 도구들 덕분에 불가능해 보이던 프로젝트를 완성할 수 있었습니다. 앞으로 이 앱이 많은 아이들의 학습을 돕는 작은 파트너가 되기를 바랍니다.

댓글