Book Image

Opa Application Development

By : Li Wenbo
Book Image

Opa Application Development

By: Li Wenbo

Overview of this book

Opa is a full-stack Open Source web development framework for JavaScript that lets you write secure and scalable web applications. It generates standard Node.js/MongoDB applications, natively supports HTML5 and CSS and automates many aspects of modern web application programming. It handles all aspects of web programming written in one consistent language and compiled to web standards.Opa Application Development is a practical,hands-on guide that provides you with a number of step-by-step exercises. It covers almost all aspects of developing a web application with Opa, which will help you take advantage of the real power of Opa, as well as building a secure, powerful web application rapidly.Opa Application Development dives into all concepts and components required to build a web application with Opa. The first half of this book shows you all of the basic building blocks that you will need to develop an Opa application, including the syntax of Opa, web development aspects, client and server communication and slicing, plugin, database, and so on. By the end of the book you will have yourself created a complete web application along with a game: Pacman!
Table of Contents (18 chapters)
Opa Application Development
About the Author
About the Reviewers

The application

LiveRoom is all about posting topics and messages. When users sign in, they can start discussions by creating new topics. The newly created topics will be shown in the list of most recent discussions, namely the latest discussions list. If a user clicks on a topic, he/she will enter the discussion and get a list of messages related to the topic. If he/she has signed in, he/she will be able to post a message related to the topic that he/she selected, or comment on an existing message. The following figure shows the data model of topic, message, and comment:

And here are the type definitions in Opa:

type Topic.t = {
  int   id,    //id, the primary key
  string title,    //title of the topic
  string author,  //the author
  int   posttime,  //post time
  int   lastupdate,  //last update time, 
  string lastposter,  //last poster
  int   reply,    //number of replies
  stringmap(Message.t) messages
type Message.t = { 
string author, string content, int posttime,