course overview
Build PhotoDuck — a photo sharing app with resumable uploads — from scratch.
What You Will Build
This course walks you through building PhotoDuck -- a photo sharing app with a full upload pipeline. You start with a single file upload and finish with a production-grade system using multipart uploads, resumable transfers, React integration, persistence, and validation.
Who Is This For
- Developers who are new to @gentleduck/upload and want a structured learning path
- Teams evaluating @gentleduck/upload for file upload needs
- Anyone who learns best by building something real
Prerequisites
- TypeScript basics (types, interfaces, async/await)
- React basics (components, hooks, context)
- Node.js installed (v18+) or Bun
- Basic knowledge of S3/MinIO is helpful but not required
How to Follow Along
Each chapter builds on the previous one. Every chapter ends with:
- A checkpoint showing the complete code so far
- FAQ questions answering common doubts about what you just learned
Estimated time: ~10-15 minutes per chapter.
You can follow along by creating a new project:
Create a new project directory and initialize it:
mkdir photoduck && cd photoduck
npm init -y
npm install @gentleduck/upload typescript tsx
npx tsc --init
mkdir srcmkdir photoduck && cd photoduck
npm init -y
npm install @gentleduck/upload typescript tsx
npx tsc --init
mkdir srcYou are ready. Start with Chapter 1: Your First Upload.
Course Map
| Chapter | Topic | What You Learn |
|---|---|---|
| 1 | Your First Upload | createUploadClient, UploadApi, dispatch, phases, progress events |
| 2 | Strategies & Backends | PostStrategy, createStrategyRegistry, presigned URLs, strategy architecture |
| 3 | React Integration | UploadProvider, useUploader, dropzone UI, progress bars |
| 4 | Multipart Uploads | multipartStrategy, chunked uploads, signPart, completeMultipart, concurrency |
| 5 | Validation & Rejection | UploadValidationRules, file type/size limits, custom validators, rejection events |
| 6 | Persistence & Resume | PersistenceAdapter, cursors, rebind, resumable uploads across sessions |
| 7 | Plugins & Hooks | UploadPlugin, UploadHooks, debugging, metrics, custom extensions |
| 8 | Production Readiness | Retry policies, error normalization, concurrency tuning, fingerprinting, testing |