Go + Flutter: Build a Real-Time gRPC App

Learn Go from the ground up, then build Field Notes, a team task and project app, from an empty repository to a secure, deployable Go gRPC service consumed by a Flutter client. This is designed as a follow-along book: each chapter tells you what to create, gives commands and code, explains what you should see, and ends with exercises and a checkpoint.

Course at a glance

  • Audience: Beginners to Go who can use a terminal and edit files. Basic programming helps but is not required. Flutter/Dart experience is helpful; Flutter concepts are introduced as needed.
  • Format: 18 guided chapters, each designed for 1–3 hours, plus a capstone and optional extensions.
  • Outcome: Learners understand Go's core language and tooling, then build a Flutter app that signs in, manages projects and tasks, reconnects safely, and receives live updates from a Go service backed by PostgreSQL.
  • Teaching pattern: Learn a concept, implement one vertical slice, run it from Flutter, then complete a small challenge.

Learning outcomes

By the end, learners can design versionable Protocol Buffer APIs; generate Go and Dart stubs; implement unary and streaming RPCs; translate domain errors to gRPC status codes; use deadlines, cancellation, metadata, TLS, and authentication; persist data; test services and clients; and package/deploy the system with observability.

Prerequisites and setup

Bring Go, Flutter/Dart, Git, Docker Compose, and the Protocol Buffer compiler (protoc). Install the Go protobuf plugins and Dart protoc_plugin; ensure all compiler plugins are on PATH. Pin tool versions in the course repository once a cohort starts. Exact install instructions vary by OS and should be checked against the official Go, Flutter, gRPC, and protobuf documentation linked in References.

Android emulators reach the host through 10.0.2.2; iOS simulators commonly use localhost; physical devices need a reachable LAN address or deployed endpoint. Start with insecure local transport only, then replace it with TLS before deployment.

Suggested repository layout

field-notes/
  api/fieldnotes/v1/service.proto
  gen/go/fieldnotes/v1/
  server/cmd/api/
  server/internal/{tasks,projects,auth,store}/
  flutter_app/lib/{data,features,shared}/
  deploy/compose.yaml

Keep .proto files as the contract source of truth. Generated code is reproducible output. Do not hand-edit generated files.

Course map

  1. Install Go and write your first program
  2. Variables, types, control flow, and functions
  3. Slices, maps, structs, and JSON
  4. Methods, interfaces, packages, and modules
  5. Errors, tests, and debugging
  6. Goroutines, channels, and context
  7. The product, gRPC, and the development loop
  8. Protocol Buffers and API design
  9. Your first Go gRPC server
  10. Flutter client and the first vertical slice
  11. CRUD, validation, and error contracts
  12. Persistence with PostgreSQL
  13. Deadlines, cancellation, and pagination
  14. Server streaming and live updates
  15. Identity, authorization, and TLS
  16. Testing, code generation, and compatibility
  17. Observability and deployment
  18. Capstone polish and production review

Read How to use this book, Capstone specification, Assessment rubric, and References alongside the chapters.

On Windows? Follow the Windows setup and run guide.

Definition of done

The course project is complete when a new user can authenticate, create a project and tasks, update task state, see changes arrive in another connected client, recover after reconnecting, and run the stack using documented commands. The service must validate inputs, scope reads and writes to the authenticated user, use TLS outside local development, and have automated tests for core behavior.

results matching ""

    No results matching ""