Hello World

Beyond the browser

All chapters

Part 5 · Beyond the web page

Beyond the browser

Chapter 19 17 min read 10 sections

Imagine a customer in Berlin orders something from your shop. The checkout is in German, the prices are in euros, and the confirmation page says the parcel will arrive "Montag, 6. Juli". Everything you built in the earlier chapters works.

An hour later, the "your order has shipped" email arrives. It's in English, and it says "Monday, July 6, 2026 at 2:00 PM", which is two hours out for someone in Berlin and written in an order they'd never use.

Nothing in the web app broke. The email was sent by a background worker, and the background worker had no idea who it was writing to. It used the app's default locale and the server's timezone, because that's all it had.

Most of this book assumes there's a person on the other end of a web request. A surprising amount of what users actually read is produced when there isn't: emails, scheduled reminders, push notifications, text messages, PDFs, invoices and API responses. This chapter is about all of those.

Keep reading

The rest of this chapter is for readers of the book

Get the book to read the rest of this chapter and every other one, the field guide and the glossary, and to download the whole book as a PDF.

Still to come in this chapter

  • Why the locale disappears
  • Emails
  • Scheduled jobs and cron
  • Push notifications and text messages
  • PDFs and generated documents
  • Invoices and receipts
  • APIs
  • Exports, webhooks and logs
  • Checklist
  • Further reading