Functional requirements PWD:

  • The application should be a single page application.
  • The user shall be able to open multiple windows within the application.
  • The user shall be able to drag and move the windows in the document.
  • The user shall be able to open and close new windows of the desired application by clicking or double clicking an icon at the desktop.
  • The icon used to open the window should be represented in the upper bar of the window.
  • Windows should get focus when clicked/dragged.
  • The window with focus shall be on top of all other windows.

The following three applications should at least be included in the desktop application:

  • A memory-game
  • A chat connected to a central chat channel using websockets
  • One, by you, designed and decided application

Non functional requirements PWD:

  • The application shall be visually appealing
  • The code shall be organized in appropriate modules

The memory game application

Functional requirements, Memory application:

  • The user should be able to open and play multiple memory games simultaneously.
  • The user should be able to play the game using only the keyboard.
  • One, by you decided, extended feature

The chat application

The chat application shall be connected to other students chats via a web socket-server.

The server

You connect to the server via web sockets and send messages using the json format:

  "type": "message",
  "data" : "The message text is sent using the data property",
  "username": "MyFancyUsername",
  "channel": "my, not so secret, channel",
  "key": "A api-key. Found when logged in on the course webpage"

The properties type, data, username and key are mandatory when sending a message to the server. The properties type, data and username will always be present when you receive a message from the server. Additionally, all properties sent from one user will be echoed to all receiving clients.


The web socket server will send a “heartbeat” message to keep the connection open. This message is sent every 40 seconds and have the following structure:

  "type": "heartbeat",
  "data" : "",
  "username": "Server"

Your application can simply ignore those messages completly.

Functional requirements, Chat application:

  • The user should be able to have several chat applications running at the same time.
  • When the user opens the application for the first time the user should be asked to write his/her username.
  • The username should remain the same the next time the user starts a chat application or the PWD is restarted.
  • The user should be able to send chat messages using a textarea.
  • The user should be able to see at least the 20 latest messages since the chat applications was opened.
  • One, by you decided, extended feature.

You are free to add functionality not described above. Added functionality could be:

  • Ability to choose which channel to listen to.
  • Caching message history.
  • Added support for emojis.
  • Added support for writing code.
  • Ability to change username.
  • Encrypted messages on a special channel to allow secret communication.
  • Added functionality to the “chat protocol”. Discuss with others in the course and agree upon added functionality to add to the sent messages.
  • Use the messages to play memory against an opponent. Perferably using a seperate channel.