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/await와Future— 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에 표시
배지 예시입니다.
[](https://github.com/yourusername/todo-server/actions)
이 배지가 있으면 저장소를 방문하는 사람이 테스트 통과 여부를 바로 확인할 수 있습니다.