TDDD27 Advanced Web Programming
Requirements
Project Requirements:
Focus on interactivity and data added to the system by users, stored andaffecting the appearance of the app.
Applications that focus on presenting data or only and searching online databases or promting AI are not sufficient.
Having to reload pages to get data from the server is not sufficient.
Your project must have a relativelly large volume and unique functionality and details sourounding the base functionality which is th halmark of worked-through project.
So called "bolier-plate projects" that can basically be downloaded and/or generated with LLMs are not sufficent.
Examples of boiler-plate proejcts what will not be passable in are:
* Social network with basic friends and messaging
* Databases that are serached and where a user can save a list of bookmarks such as a food recepie website.
* Forms-based system for registring such as a booking system.
Boiler-plate projeects can be good projects if a more full and detailed application is developed with many small features working together to make a good system. Its the basic implementation of somthing very common that is insufficient.
Speding time on non-web, web APIs has low value. Such as working extensivelly with for instance the Spotify API, which is JavaScript exposing another komplex system that is not part of the web technology stack. Use it, but focus on developing the web system around it.
Using generative AI to create content in the app has low value (in terms of grading). Use it, but focus on developing the system around it.
### *Client-side* requirements:
Your framwork should be a framwork that is used to produce larger and more advanced applications (interactive systems) and have more functionality than simply UI-components. E.g. Bootstrap is, for instance, not sufficient.
Examples of frontend (browser) frameworks to use:
* [React](https://reactjs.org/)
* [Vue](https://vuejs.org/)
* [Angular](https://angular.io/)
* [Next](https://nextjs.org/)
* [Nuxt](https://nuxt.com/)
* [Svelte](https://svelte.dev/)
* [Solid](https://www.solidjs.com/)
... or find something. Put your proposal on the repo and we will get back to you. This should not be someting simpler that React or Svelte.
An important limitation is that the frameworks **must be javascript- or typscript-based** and not e.g. rust-based and not **flutter** since they live outside the normal web-development space and are not in line with the learnign goals of the course even though it can run on the web. With C++ anything can run on the web, so that cannot be our focus. Also, WEBGL and Canvas-based systems, though they can be components, are not in right area for the course goals.
---
### *Server-side*:
You must use a backend which stores data and manages the system and/or user state. User-based interaction should change this data, this should be a major part of the project.
You may use Micro framworks to create your backend. Check out this list [Wikipedia Microframworks](https://en.wikipedia.org/wiki/Microframework) or more large scale backends like Ruby on Rails and Django. (only remember to run your backend as REST or API) [Azure functions](https://azure.microsoft.com/en-us/services/functions/), [AWS lambda](https://aws.amazon.com/lambda/) and [Firebase Cloud functions](https://firebase.google.com/docs/functions) with some form of datastorage option.
You may use a serverless backends such as [Firebase](www.firebase.com), [Azure functions](https://azure.microsoft.com/en-us/services/functions/), [AWS lambda](https://aws.amazon.com/lambda/), [Google Cloud](https://cloud.google.com/?hl=en).
You may also use a [GrapQL](https://graphql.org/)-backend to manage your server endpoint work like [Apollo](https://www.apollographql.com/).
**Adding and mixing multiple APIs and REST-services directly from the client *and* from the backend is really the perfect project. The mix of system running independently.**
---
### Additional focus arease of benefit to you (but not a strict requirement)
*Deployment*
In the course, deployment is not a factor. You can run local development only. But if you work on deployment that is a plus. Also, advanced deployment work with CI/CD-integration and containers and so forth ... yes by all means.
*User managment and Persistent storage*
Look at best practice for your framework and use that. Look for intelligent use of tools and plugins to minimize the amount of code you have to write.
*Auth services*
Tehcologies that enable you to separate your server logic from user data, even at different servers and systems, is interesting. Here is a good place to use things like [Firebase](http://firebase.com) or [Stormpath](https://stormpath.com/), [auth0.com](https://auth0.com/), [UserApp](https://www.userapp.io/) and [AuthRocket](https://authrocket.com/)
**If you know what you're doing and want to try other things that is large scale web development - YES! Put it into your proposal on the proejct repo.**
Page responsible: Erik Berglund
Last updated: 2025-04-01