TDDD27 Advanced Web Programming
Requirements
### Project Requirements:
Focus on building interactive features **where** users add data to your web application. Presenting and searching for data is **relatively** low value but can be a good basis for interactivity. Sending queries to APIs or **prompting** AI are not sufficient, but **managing** such data—as data stored, shared among users, and **managing the** history of such data—can be part of interactivity. **Web applications** are about users adding data to the system.
Data updates should never require action. E.g., having to reload pages to get data from the server is not sufficient.
Your project must be clearly worked **through** with many details in the **implementation**. A worked-**through project** typically has a clear focus and a lot **of** small details that make that focus intuitive to use. Many iterations with user testing leads to high-quality work; simply just mashing "code slop" together will not create a passable project. Unique functionality, not boilerplate blog code, and details supporting that are the **hallmark** of a well-worked-through project.
So-called "**boilerplate** projects" that can basically be downloaded and/or generated with LLMs are not passable.
Examples of **boilerplate projects that** will not be passable are:
* Social network with basic friends and messaging.
* Databases that are **searched** and where a user can save a list of bookmarks, such as a **recipe** website.
* Simple **forms-based** booking system.
**Boilerplate projects** can be a good starting point if a more full and detailed application is developed **on top** of that, with many small features working together to make a good system. **It's** the basic implementation of **something** very common that is insufficient.
**Spending** time on non-web, web APIs has low value. This includes working **extensively** with, for instance, the Spotify API, which is JavaScript exposing another **complex** 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 **framework** should be a **framework** 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 **something** simpler **than** React or Svelte.
An important limitation is that the frameworks **must be JavaScript- or TypeScript-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 **learning** goals of the course (even though they can run on the web). With C/C++ and WASM, 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 **the** 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-frameworks** to create your backend. Check out this list [Wikipedia Microframeworks](https://en.wikipedia.org/wiki/Microframework) or more large-scale backends like Ruby on Rails and Django (only remember to run your backend as a 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 data storage option.
You may use serverless **Backends-as-a-Service** such as [Firebase](http://www.firebase.com), [Supabase](https://supabase.com/), or [Azure Functions](https://azure.microsoft.com/en-us/services/functions/).
You may also use a [GraphQL](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 a really good backend challenge. The mix of systems running independently.**
---
### Additional focus **areas** 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 management and Persistent storage*
Look at best practices for your framework and use those.
Look for intelligent use of tools and plugins to minimize the amount of code you have to write.
*Auth services*
**Technologies** that enable you to separate your server logic from user data, even across different servers and systems, is interesting. Here is a good place to use things like [Firebase](http://firebase.com), [Auth0](https://auth0.com/), [AuthRocket](https://authrocket.com/), [Supabase Auth](https://supabase.com/docs/guides/auth), and [Stytch](https://stytch.com/).
**If you know what you're doing and want to try other things that constitute large-scale web development—YES! Put it into your proposal on the project repo.**
Page responsible: Erik Berglund
Last updated: 2026-03-31
