If your application can access the current location you don't need to expose a TZ selector to the user. You can figure out what time zone database sector you're in automatically.
https://en.wikipedia.org/wiki/List_of_tz_database_time_zones...
> Sure, it's duplicate data but a backend system (Postgres config files, say) should only store the value of the TZ, i.e. -7 / -8.
Your backend needs to store location because places can switch time zones. The reason for the seemingly arbitrary list of cities is they each define a region where clocks have been synchronized since 1970.