Project structure
First, let's have a look at the project structure. It's a classical Opa project structure; we can create a similar structure with the following command line:
opa create liveroom
liveroom.opa
: The entry point of the application. It declares the database, dispatches the requests, and starts the web server.login.opa
: The login module. It shows the login page, handles theUserContext
when the user logs in and logs out, and connects to Facebook when the user tries to sign in with Facebook.model.opa
: The data model of the application. It defines data models and deals with database reading and writing.view.opa
: The UI (user interface). It shows the pages, maps what we fetch from the database into XHTML, and then shows them on the page. And moreover, it gets the user's input and tries to insert data into the database through theModel
module.style.css
: The external style sheet. It's registered when the web server starts, so we can use styles in this file application scope...