플러터 만능 앱

Related tags

Utilities all_in_one
Overview

한국 플러터 개발자 그룹 스터디 - 만능앱 개발

실습1

참고 사항

프로젝트 매니저

  • 닉네임: 영자
    • 이름: 송재호
    • 카카오톡: thruthesky2

컨트리뷰터

만능앱 개발자 가이드

만능앱 개발 스터디 목적 및 인원 모집

  • 서로 도와 가며 공부해서 맨 처음부터 끝(앱 배포)까지 하는 스터디.
  • 앱 하나로 모든 것을 다 할 수 있도록 온갖 기능을 다 집어 넣은 만능앱 개발.
  • 혼자가 아닌 협업을 통해서 프로젝트를 수행하는 과정 배움.
  • 서로가 작업한 부분(기능)의 경험과 지식을 세미나 발표를 통해서 공유.
  • 스터디 결과물은 오픈 소스로 공개되며, 누구든지 소스 코드 그 자체를 판매해도 되고, 앱으로 등록하여 수익을 만들어도 됩니다.
    • 누구 누구는 간단한 앱을 개발해서 월 1천만원 이상의 수익을 올리고 있다고 합니다. 개발자의 로망이지 않을까요?
      • 만능앱을 바탕으로 불필요한 기능은 없애고 필요한 기능만 골라서, 앱을 출시 해 보는 것은 어떨까요?

참가 신청

  • 본 단톡방에서 "참가신청합니다. 깃허브 아이디: xxxx" 와 같이 적어주시면 됩니다.
  • 프로젝트 관리자와 상의 후, 특정 기능을 맡아서 작업을 하면 된다.

스터디 참여에 대한 FAQ

  • 스터디 참여가 마감이 되었나요?

    • 아니요, 마감이라는 것 자체가 없습니다. 그냥 누군든지 언제든지 참여를 하면 됩니다.
    • 참여해 보고, 아니다 싶거나, 내 수준 보다 많이 떨어진다거나, 흥미를 느끼지 못하면 언제든지 그만두셔도 됩니다
    • 또는 좀 더 천천히, 자세히 등 여러가지 건의해주셔도 됩니다.
  • 스터디 방식은 어떻게 되나요?

    • 여러 명의 개발자가 하나의 프로젝트를 진행 할 때, 개발 스타일(또는 개발 방식)이 필요합니다.
    • 폴더, 파일, 모델, 상태 관리, 함수명, 변수명 등 등 통일된 방식이 필요합니다.
    • 또한 처음 시작시, 프로젝트의 개요, 실행, 테스트 등의 부분도 도움을 받아야 하구요.
    • 그래서 이런 부분에 대한 세미나가 반복적으로 꾸준히 있을 예정이며, 문서로도 잘 작성 될 것입니다.
  • 개발에 참여하고 싶습니다. 어떻게 하면 되나요?

    • 개발자 문서를 보세요.

세미나 일정 및 계획

  • 세미나는 가급적 온라인으로 진행할 예정입니다.
  • 세미나는 초등 그룹(시작하는 그룹)과 중등 그룹(활발히 개발에 참여하는 그룹)으로 나뉘어서 진행될 것 같습니다. (이 부분은 논의가 필요합니다.)
    • 초등 그룹을 위해 영자님이 먼저 세미나를 진행하고, 그 후, 다른 멤버들이 처음 시작하는 분들을 위해 반복적으로 세미나를 진행하면 좋겠습니다. 늦게 참여하는 분들이나 처음 시작이 힘들어서 고생하고 있는 분들께 도움이되고자 합니다.
      • 또한 문서화를 잘 해 놓는 것도 매우 중요하겠습니다.
    • 중등 그룹에서는 각자(또는 여럿이) 원하는 기능을 맞아서 개발을 하고, 문서화를 잘하고, 세미나를 진행하는 것입니다. 요청이 있으면 문서화를 더 잘하고, 세미나를 다시 열거나 동영상으로 간단히 강좌를 만들어도 좋겠습니다.

세미나 참여 방법

  • 줌(Zoom)을 통해서 세미나를 진행합니다.
  • 줌을 설치하시고, 만능앱 개발 세미나 룸에 참여(이 곳 클릭)하시면 됩니다.
  • 줌 세미나 룸 관리는 영자님이 하고 있습니다. 만약, 여러분들이 직접 세미나를 진행해서 아이디어 및 지식 공유를 보고 싶다면, 영자님에게 연락을 해 주세요.

1차 세미나

  • 날짜: 6월 12일 오후 4시 예정.

  • 스터디 방향 논의

    • 초기 세미나에서 팀멤버들이 본 프로젝트 개발에 적응을 할 수 있도록 가이드를 해 주어야 하고,
    • 반복적으로 새로운 팀멤버들 또는 기존 멤버들이 이해를 못하고 있는 부분에 대해서 온라인 세미나를 통해서 가이드를 해 주어야 함.
    • 처음 세미나는 "영자"가 진행을 하고 그 다음 부터는 다른 멤버가 이어서 반복적인 프로젝트 적응 세미나를 해 나가야 함.
  • 협업을 위한 Github 사용법.

    • 그냥 간단하게 git config pull.rebase false 옵션 사용.
    • main branch 는 보호 되어서 있어,
      • 본인의 branch 에서 commit & push 하고
      • Github 프로젝트 페이지에서 Pull Request 후,
      • 관리자에게 Merge 해 달라고 알려 줌.
      • 실제 연습.
  • 프로젝트 내에서 스크린(페이지 생성 방법)

  • Layout 사용 방법

2차 세미나

  • 프로젝트 클론 및 설치, 실행

  • 기본 폴더, 파일 구조

  • 프로젝트 내에서 스크린(페이지 생성 방법)

  • Layout 사용 방법

  • 공유 함수 및 글로벌 변수

  • 공유 가능한 위젯 생성

    • 프로젝트별 공유.

    • 플러터의 경우,

      • lib 폴더
      • 또는 pubspec.yaml 에 등록된 패키지 에 있는 소스 코드를 사용 할 수 있다.
    • 따라서, 공유 가능한 소스를 pubspec.yaml 에 등록한다.

  • Mono repo

    • Mono repo 무엇이고 왜 필요한가?
    • 서브 앱 생성 방법과 배포 시나리오
  • 만능앱 개발 가이드라인 제시. 프로젝트에 대한 기본 설명과 설치 및 실행, 그리고 기본 코드 테스트.

  • 개인별 설정(launch.json)으로 프로젝트 실행 방법

  • 만능앱에서 Controller 를 통한 상태 관리

  • Matrix (x_flutter) 백엔드 연동

    • 기본 Restful Api 접속 테스트
    • 회원 가입
    • 세션을 저장하고, 앱 종료 후 재 실행 히, 세션 유지
    • 로그인
    • 회원 정보 수정
  • Mono repo

    • Mono repo 무엇이고 왜 필요한가?
    • 서브 앱 생성 방법과 배포 시나리오
  • 만능앱에서 Controller 를 통한 상태 관리

  • 개인별 설정(launch.json)으로 프로젝트 실행 방법

  • 만능앱 개발 가이드라인 제시. 프로젝트에 대한 기본 설명과 설치 및 실행, 그리고 기본 코드 테스트.

    • 문서화
    • Scaffold 및 스크린(페이지) 생성.
      • Scaffold 대신, Layout 사용법
    • 공유 가능한 위젯 생성
    • 공유 함수 및 글로벌 변수
    • Theme 사용법
      • 컬러, 텍스트(글자) 특성 등
  • Matrix (x_flutter) 백엔드 연동

    • 기본 Restful Api 접속 테스트
    • 회원 가입
    • 세션을 저장하고, 앱 종료 후 재 실행 히, 세션 유지
    • 로그인
    • 회원 정보 수정

3차 세미나

  • Getx 와 Matrix 를 통한 언어화(다국어)

  • 파이어베이스 연동

    • 구글, 페이스북, 애플 로그인
  • 플러터 Integration Test.

4차 세미나

  • QR 앱 개발
  • 각 팀 멤버별 업무 부여
  • 업무 수행시 또는 수행 후 문서화 및 동영상 강좌 제작 및 세미나 계획

개발 멤버가 해야 할 일

  • 먼저 본 README 문서를 잘 읽어, 본 프로젝트가 어떻게 진행되고 있는지, 어떻게 협업을 해 나가야 하는지를 잘 파악해야 합니다.

  • 프로젝트 매니저에게 연락하여 어떤 부분(기능)작업을 할지 먼저 의논합니다.

  • 더 상세한 개발 가이드를 보시려면 DEVELOPER_GUIDE 를 참고 해 주세요.

만능앱의 주요 기능 들

  • 백엔드는 파이어베이스와 도커(Nginx + PHP + MariaDB)

  • 모든 메뉴 및 화면에 보이는 글은 다국어(i18n, 언어화). 단, 사용자가 직접 입력하는 글은 제외.

  • Integration Test

    • 테스트 작성을 통해서 본인이 작성한 기능을 잘 동작하는지 확인하는 것이 좋습니다.
  • 디자인과 로직을 분리.

  • 회원 가입 및 관련 기능

    • 카카오 로그인
    • 네이버 로그인
    • 구글 로그인
    • 페이스북 로그인
    • 애플 로그인
    • 전화번호 로그인
    • 본인 실명 인증
      • 휴대폰 PASS번호 로그인
  • 프로필 검색, 보기, 추천(좋아요), 별쏘기 및 사용자 프로필 갤러리 공유.

  • 친구 기능

    • 친구 추가, 목록, 삭제
    • 친구에게 바로 채팅, 쪽지
  • 다른 사용자 블럭 기능

    • 블럭 추가, 목록, 삭제
    • 블럭된 경우,
      • 글/코멘트/사진 보지 않기
      • 쪽지 받기 않기
      • 채팅 받지 않기
      • 기타 모든 이벤트 받지 않기
  • 파이어베이스 관련 기능

    • 푸시 알림 설정
    • 파이어베이스 Analystics 와 구글 연결
    • Engage => Admob 연결
  • 커뮤니티. 게시판 및 커뮤니티 관련 전체 기능.

    • 게시판 별 검색,
    • 사용자별 글/코멘트 보기
  • 푸시알림. 전반적인 푸시 알림 및 프로필 추천, 게시판, 채팅 등에서 밀접한 푸시 알림 설계

    • 푸시 알림 커스터마이징
  • 전체 검색시

    • 사용자 이름으로 검색해서 사용자가 맨 위에 보이고 그 아래에 글 이 보일 것.
  • 채팅. 1:1, "다대다" 채팅 기능 일체

  • 쪽지 기능.

    • 쪽지 기능은 1:1 채팅으로 대체. 즉, 쪽지 기능은 만들지 않고, 1:1 채팅으로 잘 포장해서 사용.
  • 관리자와 회원(고객) 상담 기능

    • 1:1 채팅을 잘 포장해서 고객 상담 기능을 활용.
  • 맞춤 뉴스 기능

    • IT, 프로그래밍, 코로나, 영화 등 맞춤 뉴스를 볼 수 있도록.
  • 날씨

  • 미세먼지

  • 환율

  • 계산기

  • 달력

  • 달력에서 이벤트 관리

    • 이벤트 반복, 푸시 알림 등 설정. 구글 칼렌더와 비슷한 기능.
  • 영어 단어장

  • 유튜브 노래 모음, 기타 유튜브 모음 집

  • 음악 플레이어 기능.

    • 음악 그룹 만들고
    • 재생곡 위치 스크롤로 변경
    • 음악 파일 이동, 삭제 등.
  • 녹음 기능

  • 게임. 간단한 게임, 틀린 그림 찾기, 그림 기억하기 등.

  • 카메라 기능.

    • 뽀샤시 하게 또는 웃기게 사진을 찍어 공유
  • 포인트 기능. 회원 활동에 따라 포인트 증/감.

    • 포인트가 증가하는 양이 경험치가 되며, 경험치 별로 레벨 지정.
    • 포인트는 증/감하지만, 경험치는 감소하지 않음.
    • 포인트 결제. 식당에서 음식 값을 포인트로 결제하는 기능.
      • 협력사에 QR 코드를 부여하고, 회원이 앱에서 QR 스캔에서 포인트로 음식값 결제.
  • 건강 기능.

    • BMI 지수
    • 눈 건강. 색상/색명 검사.
    • 치매 검사.
    • 만보기 기능.
    • 간단한 건강 기능들.
  • QR 관련기능

    • QR 리더
    • QR 생성. 원하는 웹 페이지로 연결하는 QR 코드. 내 전화번호로 자동 연결하는 QR 코드
  • 돋보기 기능.

  • 지도

  • 내 주위에 있는 사람 찾기

    • 가족
    • 친구
    • 모임 그룹 인원
    • 회원 멤버
  • Admob 광고

  • 인앱결제

    • 포인트 구매
    • 특정 메뉴는 정기 구독자만 가능.
  • 전화 걸기

    • 가족이나 지인 사진을 찍거나 업로드하고 전화번호를 기록해 놓으면, 메인 화면에서 버튼 한번으로 전화 연결
  • 위치 공유

    • 친구, 연인, 가족, 모임그룹 간 위치 공유.
    • 친구 목록에 있는 친구 끼리 위치 공유.
    • 상대방이 허가를 해 주어야 한다.
    • 단, 가족으로 등록된 경우는 예외.
  • 메모장

  • TODO 해야 할 일 기능

  • 그림 그리기.

    • 펜슬로 자유 드로잉을 하는 기능.
  • 쇼핑몰 기능

    • 쇼핑몰 기능 전체. 일체.
    • 회원 포인트로 결제 가능.
  • 중고 장터 기능

    • 게시판을 변형(확장)하여 회원들 끼리 물건을 사고 파는 기능을하는 게시판 디자인
  • 구인/구직 기능

    • 게시판을 변형하여, 구인 구직에 꼭 맞는 게시판 디자인
  • 부동산 임대/매매

    • 게시판을 변경하여, 글 등록 양식을 부동산 임대/매매 형식에 맞추고, 검색도 용이하게 한다.
    • 위치 별 지도를 보기 버튼을 두고, 네비 기능 제공
  • 퀴즈앱

  • 소셜앱

  • 나이대별 커뮤니티

    • 70-80
    • 80-90
    • 90-00
    • 방년
    • 불혹
    • 지천명
    • 등.
  • 카페 커뮤니티 기반 또는 게시판 기반 앱 개발

    • 예를 들면, 구인 구직 게시판 하나를 바탕으로 그 정보를 온라인에 제공하는 앱 개발.
  • 여행 앱

    • 예) 필리핀 여행에 필요한 모든 것을 다 담았습니다.
  • 운영자 문의 기능

    • 1:1 채팅
    • 이런 기능 만들어주세요. (사용자가 원하는 기능을 만들어 달라고하면 만들어 줌.)
  • 기타, 언제든지 생각나는 기능이 있으면 추가.

Comments
  • is this stable yet?

    is this stable yet?

    thanks for this, looks like your next iteration of fireflutter & firelamp? i want to try it out but hard to translate, and want to make sure this is under active development. cheers

    opened by jtkeyva 1
  • 로그인 + 본인인증 + 게시판.

    로그인 + 본인인증 + 게시판.

    • [x] 코멘트

      • [ ] 코멘트에 코멘트 쓰기
    • [x] 파일 업로드/삭제

      • [ ] Masonry 형태로 보여주고, 전화 화면에 보여주기.
    • [ ] 기타 메뉴

      • [ ] 친구 추가
      • [ ] 차단
      • [ ] 별쏘기
      • [ ] 채팅( 소너브 웹 기능 마치고, 앱에만 채팅 기능 추가. 챨스가 작업. 로직은 달고나앱과 비슷하게. )
      • [ ] 신고
      • [ ] 사용자 글 목록
      • [ ] 사용자 코멘트 목록
    • [ ] 본인인증

    • [ ] 소너브 홈페이지와 연동

    • [ ] 국가별 카페 메인 앱

    배포 블럭 
    opened by thruthesky 1
  • Wangmaac

    Wangmaac

    첫날 세미나를 지금이나만 적용해서 PR 해봅니다.

    • 개인버튼과 개인페이지 생성완료

    협업시- 단, 안드로이드 설정상의 : app/project 수준의 build.gradle 변경( 제 avd 버전 설정 문제겠지만...) 아이폰의 podfile등의 설정 변경등을 그대로 push해도 되는지 궁금합니다.

    opened by wangmaac 1
  • 개발자 프로그래밍 연습을 위한 기능

    개발자 프로그래밍 연습을 위한 기능

    • [ ] 정규 표현식 연습 기능
    • [ ] dart/flutter 기본 연습 및 문서
    • [ ] flutter 기본 위젯 사용 설명

    https://docs.google.com/document/d/1wqUneBjgcbB3wd8ZMnHcAhvzikLmhkdaar0oSv9z9Dk/edit#

    opened by thruthesky 0
  • 중복 라우트 제거 및 에러 핸들링

    중복 라우트 제거 및 에러 핸들링

    아래의 코드에서 보듯이, Get 을 통해서 Nav stack 의 중복 라우트(스크린)을 제거하려고 했다.

    https://github.com/thruthesky/all_in_one/blob/main/lib/services/router.dart

    문제는 코드가 복잡하다는 것이다. 복잡한 코드는 실패한 코드이다.

    더 간단하게 할 수 있어야 한다.

    • [ ] Nav Stack 에 중복 라우트(또는 동일한 스크린과 라우트 옵션)을 두개 띄우지 않기.
    • [ ] 존재하지 않는 라우트로 접속시 에러 핸들링.
    opened by thruthesky 0
  • 어바웃 페이지

    어바웃 페이지

    • [x] 패키지 버전 표시 https://pub.dev/packages/package_info_plus 또는 https://pub.dev/packages/get_version

    • [x] 디바이스 정보 표시 최대한 자세한 정보를 표시해서, 내 디바이스가 어떤 디바이스인지 알고 싶어 하는 사람들에게, 가능한 모든 정보를 표시해 준다. https://pub.dev/packages/device_info_plus

    • [x] 서버 버전 표시

    • [ ] 현재 디바이스 언어 정보 표시 - https://pub.dev/packages/devicelocale

    배포 블럭 
    opened by thruthesky 0
Owner
JaeHo Song
Where am I?
JaeHo Song