or, the "putting it all together" part.
youâd think a guide on building a web app would have this way in the front, eh? itâs funny because HTML forms the core of what enables the web but itâs become secondary as a technology these days when compared to JS. i wonât spend too much time on explaining the ins and outs of HTMLin this guide but hereâs a couple of things to keep in mind.
<div>
/<span>
! this is especially important for robots crawling your site (i.e. SEO) to extract meaning from your document. itâs also especially important for accessibility so that users that have visual handicaps are able to still use your website through a screen reader.thereâs a lot that goes into the <head>
tag these days. some of itâs standardized and some of itâs not. you should definitely look into all of these though since they increase the shareability of your app and its virality.
a list of technologies to look into adding to your <head>
section:
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no" />
<tab>
when typing in the URL to be able to search from their browserâs address field. historically developed by Amazon. (authorâs note: for such a common tool on the web, this has a such a crappy website?)<noscript>
not everyone likes running JS on their websites. this is probably for good reason! it can be such a weight when navigating to random websites. donât forget to include this tag somewhere on your page to inform your users in case JS is needed for things to function.
as much as you try, things will go wrong. itâs best to go easy on your users when these frustrating experiences happen. those of you around for when Twitter first came out will be familiar with the infamous Fail Whale. Twitter probably bought itself a lot of social credit by being cute about how it went down all the time back in the day. you can at least take the time to create a single error page that at least conveys something for the following errors:
your app, probably, needs to provide a way for a user to login and create a presence on your website. given the security implications here, this is such an easy way to shoot yourself in the foot. my recommendation here is: donât roll your own whenever possible.
the two options here are to use cookies, which is traditionally the way people save logins or to store local tokens in the client only. the latter option of storing tokens solely in the client eliminates a class of potential security holes in your server (namely, XSRF) and can help eliminate complexity on the server. however, it will make server-side rendering (SSR) difficult. thus, if youâre going the SSR route, itâs best to go cookies; otherwise, choose tokens.
some products in this space:
a minor detail but an important one. make sure you provide a feedback button/form so that your users to get in touch with you. itâs vital as you grow your app to give your users a way to give you feedback and let you know if things go wrong (or, go right!)
a great way to iterate quickly and try out new features with your users is to create an experiments framework. this is a must have for modern development!
one thing to consider in your app is building a separate, sister application that allows one to perform administrative tasks for your website. on top of that, if it makes sense a âsuper-adminâ mode could be recommended for more sensitive operations that can be irreversible and dangerous. exercise caution and prudence here and always obfuscate any private data that your user is providing your website. your users deserve the utmost respect and have a more than reasonable expectation that their data will never be viewed, even if a developer is in admin/âgodâ mode.
just as important as how users enter into your app is how they are able to âexitâ it. to be a worthy citizen of todayâs web, you must provide a way for users to be able to export their data. this can be as simple as a JSON dump or an HTML bundle of their data. as an added bonus to creating this functionality is the fact that you can better justify creating an importer so that users bring their data to your app from other sites!
if your app is sufficiently large, you can provide users some helpful nudges to guide them along into how your app works. you are effectively âgamefyingâ your app here a bit. if done successfully, it can also be a great opportunity for you to offer to get users to invite their friends to your app. Slack whose onboarding is best-in-class here.