iBetter Books
수정

Ch 01. 네 개의 프로젝트에서 배운 것

이 교재를 시작할 때 우리는 Dart가 Flutter만을 위한 언어라고 생각했을지 모릅니다. 하지만 네 개의 프로젝트를 완성하고 나면 Dart가 얼마나 넓은 영역에서 쓸 수 있는지 실감하게 됩니다.

프로젝트 1: file_organizer (PART 04)

CLI 도구를 만들며 배운 것들입니다.

  • dart:io로 파일 시스템을 다루는 방법을 익혔습니다.
  • args 패키지로 커맨드라인 인수를 파싱했습니다.
  • 파일 이동, 복사, 삭제를 안전하게 처리하는 dry-run 패턴을 구현했습니다.
  • 비동기 스트림(Stream)으로 대용량 파일 목록을 효율적으로 처리했습니다.
  • AOT 컴파일로 배포용 단일 바이너리를 만드는 방법을 배웠습니다.

이 프로젝트를 포트폴리오에 활용하는 방법입니다. README에 "사용 방법", "설치 방법", "스크린샷"을 추가하고, GitHub에 공개하면 됩니다. dart compile exe로 만든 바이너리를 GitHub Releases에 첨부하면 Dart 없이도 사용할 수 있는 도구가 완성됩니다.

프로젝트 2: todo_server (PART 06)

REST API 서버를 만들며 배운 것들입니다.

  • dart_frog 프레임워크로 라우팅, 미들웨어, 의존성 주입을 구현했습니다.
  • SQLite와 sqlite3 패키지로 데이터를 영구 저장했습니다.
  • JWT로 인증을 구현하고 미들웨어로 보호된 라우트를 만들었습니다.
  • HTTP 메서드(GET/POST/PUT/DELETE)와 상태 코드 의미를 몸으로 익혔습니다.

이 프로젝트는 포트폴리오의 "백엔드 개발 경험" 항목으로 활용할 수 있습니다. API 문서(README에 엔드포인트 목록)를 작성하고, Docker로 컨테이너화하여 클라우드에 배포하면 실제로 접속 가능한 서버를 보여줄 수 있습니다.

프로젝트 3: dart_validator (PART 07)

패키지를 만들며 배운 것들입니다.

  • lib/lib/src/를 분리하여 공개 API와 내부 구현을 캡슐화했습니다.
  • /// dartdoc 주석으로 API 문서를 작성했습니다.
  • 100% 테스트 커버리지를 달성하는 테스트 전략을 익혔습니다.
  • dart pub publish로 pub.dev에 배포하는 전 과정을 경험했습니다.
  • 시맨틱 버저닝과 @Deprecated로 하위 호환성을 관리했습니다.

pub.dev에 공개된 패키지 링크는 이력서에 직접 포함할 수 있습니다. "pub.dev 점수 120/130 달성", "주간 다운로드 X회" 같은 숫자가 있다면 더 설득력이 있습니다.

프로젝트 4: todo_app + todo_server (PART 08)

Flutter 앱과 Dart 백엔드를 연동하며 배운 것들입니다.

  • Flutter의 위젯 트리, StatefulWidget, setState를 이해했습니다.
  • Provider 패키지로 앱 전역 상태를 관리했습니다.
  • http 패키지로 REST API와 통신하고 JSON을 파싱했습니다.
  • JWT 토큰을 shared_preferences로 저장하여 로그인 상태를 유지했습니다.
  • Full-Stack Dart의 코드 공유 패턴(공유 모델 패키지)을 이해했습니다.

이 프로젝트는 가장 강력한 포트폴리오 항목입니다. "Flutter 앱과 직접 개발한 Dart 백엔드를 Docker로 배포한 경험"은 많은 기업의 관심을 끌 수 있습니다.

공통으로 사용한 기술

네 프로젝트 전체에서 반복해서 사용한 기술들이 있습니다.

  • async/awaitFuture — Dart 비동기의 핵심
  • null safety — 컴파일 타임에 null 오류를 잡는 Dart의 강점
  • 테스트 (dart test, mockito, 커버리지)
  • GitHub Actions CI/CD
  • Docker 컨테이너화

이 기술들은 Dart를 넘어 어떤 프로젝트에서도 통용되는 역량입니다.

포트폴리오 정리 가이드

이 교재를 완료했다면 GitHub 프로필에 다음 네 개의 저장소가 있어야 합니다.

github.com/yourusername/
├── file-organizer     ← CLI 도구, AOT 바이너리 Releases
├── todo-server        ← REST API, Docker 배포
├── dart-validator     ← pub.dev 패키지
└── todo-app           ← Flutter 앱 (todo-server와 연동)

각 저장소에 다음을 준비합니다.

  • README.md: 프로젝트 소개, 사용 방법, 스크린샷
  • LICENSE: MIT 또는 원하는 라이선스
  • .github/workflows/ci.yml: CI 배지를 README에 표시

배지 예시입니다.

[![CI](https://github.com/yourusername/todo-server/actions/workflows/ci.yml/badge.svg)](https://github.com/yourusername/todo-server/actions)

이 배지가 있으면 저장소를 방문하는 사람이 테스트 통과 여부를 바로 확인할 수 있습니다.