Intro

PushAlarmy 라는 어플이 있다.
image.png
제목과 내용, 원하는 시간을 선택하여 전송하면 해당 시간에 Push Message(Notification)을 보내는 어플인데, 학생 시절 안드로이드 강의를 들으며 혼자 뚝딱뚝딱 대었던, 지금보면 내 최초의 토이 프로젝트이지 않나 싶다.

PlayStore에 올린 뒤 얼마지나지 않아 어플에 대한 관심은 꺼져갔는데, 도저히 구글 플레이스토어에서 검색하여 찾을 수 없었고 내게는 개발자용 apk가 있었으니 이걸 그대로 사용했었기 때문이다.

유니크한 네이밍은 굉장히 중요하다.

그러다 얼마전 우연찮게 댓글이 달렸던 것을 알게 되었다.
image.png
무려 5개의 별과 함께 Notification에 Schudle 기능이 있었으면 좋겠다는 것이었다.

React나 React Native를 다시 공부하기로 결심하면서 어떤 토이 프로젝트를 진행할 지에 대한 고민 중이던 나는 9개월이나 늦었지만 소중한 피드백을 반영하여 과거 개발했던 어플을 React Native로 마이그레이션 하기를 결심했다.

요구사항

내게 적확하고 효율적인 설계를 할 수 있는 능력이 없다는 것 또한 알고 있기에 큰 가이드라인만 잡고 유연하게 진행하기로 했다. 설령 중간에 프로젝트가 뒷걸음질치거나 거대해질지라도.

  • React Native를 사용할 것.
  • Push Alarmy의 모든 기능을 가져올 것.
  • Schedule 기능 및 회원가입 기능을 추가 할 것.
  • Push icon을 사용자가 설정할 수 있도록 할 것.
  • ios 출시는 고려하지 말 것.

애초 어플의 정체성을 생각하면 회원 기능은 어울리지 않는 것 같아 찜찜하지만, 공부 겸 추가 커스터마이징 세팅 기능을 추가하여 개발을 진행하기로 했다.

지금 해두면 다음에도 써먹을 수 있으니까...?

개발환경

무엇을 개발할지를 결정했으니 개발환경을 정하고 시작하기로 했으며 개발을 진행하며 추가되는 라이브러리에 대해서는 그 때 그 때마다 정리해두기로 했다.

  • React Native : 오픈소스 모바일 App개발 프레임워크
  • NativeBase : UI Component 라이브러리
  • Redux : State 관리 라이브러리
  • Firebase : DataBase, Storage, FCM
  • Android Studio : AVD 테스트
  • VScode : IDE
  • Git : 소스 관리

앞으로 진행 될 NotiU 시리즈는 구현 기능 및 진행되는 내용에 대한 이야기이다.

덧붙임

1. expo 대신 react-native 로 결정한 이유

  • 사실 Intro를 작성하기 전부터 expo로 프로젝트를 생성하여 개발 진행중이었다. 최초 생성, 사용, 테스트 모두 굉장히 간단하였으나 갈수록 답답한 마음만 늘어났다. 간단한 기능 구현을 위해서 expo의 사용은 생산성에 도움이 되겠으나 결국 expo를 버리기로 결심했다. 이미 많은 분들이 expo와 react-native에 관한 내용을 정리해 주셨다.

2. MobX

  • MobX는 Redux와는 또 다른 State 관리 라이브러리인데 한 번 사용 해볼까에 대한 고민을 하다 이내 Redux를 사용하기로 했다. 나중에 다뤄볼 기회가 있지 않을까.