TDDD27 Advanced Web Programming
Remember, what you learn depends on your choice here. Grading is not based on the the easy choice. Its based on the level of your knowledge at the end. At the same time, find your level and your fit!
Server-side: Micro-service framwork with REST/URL- api. Service-oriented design. Typical framworks Flask, Express.js, slimPHP, Scalatra or Spark, Meteor and so forth. There are many more and you will save a lot of time searching for a suitable framework. More large-scale backend like DJango and Ruby on Rails are also naturally OK. Still you need to publish some form of API-design. Back-end service design is important - think in terms of building a backend that can manage multiple clients doing different things with your backend. You web-frontend is one of these. Another could be a future mobile app or desktop application.
Deployment: Pure localhost projects are not accepted. Automated, code-based or git-based deployment to a PaaS like openshift Gears or through Docker containers or something similar is required. Writing gulp-code, using Team City, Fabric, BootBot ... IaaS deployment not acceptable. Some providers have both IaaS and Paas.
IDA provides openshift.ida.liu.se. Alternatives can be: Heroku, Google Container Engine or Redhat Openshift. Make your own choice. Experiences from 2015 show you need to handle this part of the project at the start!
Also, a lot of development time can be saved buy setting up tooling ot test your systems and automaticallt start webservers and browsers when code changes. This is not a requimrent, but a tip.
Backends like Firebase or can be used as alternatives to databases but cannot replace your server in the course. You can work with a client that runds with the firebase and and admin part that runs with the server backend if you like. Systems like Meteor is from 2015 considered a backend framwork with advanced databinding. You need something like Angular with that. We will not allow GWT/GAE-projects or other projects that hides the REST/URL-based connection of services that hides the fundamental system messaging of the web.
Data and user management: Look at best practice for your framework and look for intelligent use of tools and plugins to minimize the amount of code you have to write. Especially interesting are tehcologies that enable you to separate user management, data storage and application logics to a great extent. Implementing your own user-managemnet and writing plain SQL-queries in string in your backend logic will not be passable - unless specifically allowed.
As always, if you know what you're doing and want to try new and totally outside the box (but large-scale web) tool-chain that is appreciated, even applauded, even if you end up failing dramatically. The key word however is large-scale web development. Contact the examiner via email to discuss.
Page responsible: Erik Berglund
Last updated: 2016-03-31