HTML and CSS Reference
In this chapter, you'll get a rough idea of the app you'll be building in order to learn how to use realtime web
technologies. You'll be using that rough idea to determine the tools needed to build the app, as well as doing a quick
once-over of the role and function of each.
By the end of this chapter, you should be refreshed on the technologies you already know, and ready to start
learning the new bits.
What Are We Building?
Before we do anything else, it's probably a good idea to take a look at what we're trying to build. This should give us a
rough outline of what the app needs to do, which allows us to create a list of tools that we'll need to make it all happen.
Our goal over the course of this topic is to create a question and answer app. This app will allow a presenter to
create a “room” that attendees can then join.
Attendees will be able to ask a question that will be immediately displayed on the presenter's device—anything with
a browser, such as a laptop, tablet, or smartphone—to be answered. If another attendee has already asked the question,
attendees will be able to vote for the answer to give the presenter an indication of which questions are most pressing.
The presenter will be able to mark a question as answered and will also be able to close a room when the
presentation is over. The result of these actions will instantly be shown to all attendees.
What Does That Mean Development-Wise?
Now that we know the basic capabilities of the app, we need to break it into the various layers, which will also help us
separate the app into technologies.
First, we need a user interface so that the users have an easy way to interact with our application . Without a
great user interface, it doesn't matter how cool or useful our app is; it simply won't get used if it's difficult or confusing.
Second, we need to process user requests and handle the various actions they perform during the course of
interaction with the app. For the app to be useful, it will need to do stuff.
Third, we need to store user-supplied application data so that rooms can be archived, settings stored, and
various other pieces of data can persist throughout the app.
Fourth, the updates need to be instant . If users have to constantly refresh to get data, there's a much higher
probability for overlap of questions and missed information. The usefulness of this app depends almost entirely on
the realtime nature of information delivery.
Finally, we need to ensure that it's easy and painless to authenticate and start using the site. Users will likely be
using this app for the first time right as a presentation is starting, so they won't have a lot of time to fill out personal details
or check for confirmation e-mails; we need to get them up and running with the app as close to instantly as possible.