Requirement engineering
There are a couple of options and focus points that can arise when building a web app. Here are a few of them to help ask the right questions from the customer.
B2B or B2C?
B2B (Business to business) apps tend to focus on functionality, practicality and less on aesthetics. B2B apps can be company internal tools or external, like Rabbit for example. The userbase is mostly known to be company employees with good internet connection, and good devices.
B2C (Business to Customer) apps like Toggl or Google Drive can be used by basically anyone on the internet. This can be a little bit of a wild west, because there is a wide range of possible users. This means a wide range of:
- internet connection quality
- devices
- browsers
- accessibility needs
- languages & locales
Browser support
Nowadays this is more or less a no brainer to support evergreen browsers, but worth to check. Internet Explorer was a pain to support, but it is not even supported by Microsoft, so if a customer asks for it, just say no. Currently Safari is the most trickier browser, but only for certain features, like PWA support.
If you need to use cutting edge features of the web platform, then you probably will look for Chrome (and Edge).
https://caniuse.com/ will tell you what browser supports what feature.
Languages & Locales
A single locale contains the language, preferred date-time, number, currency and string collation formats as well.
Two locales can use the same language but different formattings, like en-US and en-UK.
Generally speaking if you have to support multiple locale, then supporting a third or fourth locale is not that big effort that supporting the second one. Once you set up localization support it is easy to add new locales, relatively speaking, because for a big app the effort to translate everything can be substantial. But when you have to support many locales then every locale adds a little bit of complexity, because there will be locale specific edge cases.
Frameworks like https://www.i18next.com/ support having a json file in your codebase as well as getting translations from a localization as a service like https://locize.com/ Use the former in simple cases where the devs control end edit the translations, and use the latter, when there are multiple languages, and it won't be only the developers responsibility to maintain the translations.
Design
This can be one of the following.
Customer doesn't care
Pick a design system, like Google's Material Design. Apply it correctly, theme it to fit customer's brand identity.
Customer already has a design system
This can be anything from a generic PDF file to a detailed Figma file, so discover how detailed and usable it is.
Customer wants custom design
Grab a UI designer. UI designer will create the design in Figma. Tell him to Atomic Design (https://bradfrost.com/blog/post/atomic-web-design/) is preferred. Implement it in the codebase.
Devices
This can range from anything between smartwatches, phones, tablets, desktops, 8k HDR TVs, e-ink displays, whatnot. Designers usually design for a limited (2-4) set of viewport sizes, and some components can have rules for fluent responsive design.