NSWI142: Preparation for Programming Test

The goal is to develop a simple web application with PHP and JavaScript that allows the user to show and edit a collection of articles. The application must be deployed at https://webik.ms.mff.cuni.cz/~{user-id}/cms/ where {user-id} is your user name.

Changelog:

Functional requirements

The application composes of three main components: article list, article detail and article edit. It is safe to assume that the application will be used by only one client at a time.

Article list

The article list page is available at URL ./articles and implements the following functionality:

Article detail

Article detail page is available at URL ./article/{id}, where {id} is an article identifier. The page implements the following functionality:

Article edit

Article edit page is available at URL ./article-edit/{id}, where {id} is an article identifier. The page implements the following functionality:

Nonfunctional requirements

Data

Data should be stored in the MySQL database. Database schema must contain table articles, where all the articles are stored. The articles table must contain columns name and content, which store article name and content respectively. You should prepare some test data to support smooth presentation of your application.

External resources

Any resources on the internet, namely StackOverflow, Github Copilot, or Chat GPT, can only be used to solve minor problems, not to solve your problem directly. Thus, searching/prompting for class and function implementations and architectural composition is forbidden. Searching for feature documentation, examples, and bugs is fine.

Although many tasks are solvable by today's AI, the restrictions ensure that you understand the core of web application development, which is necessary for more complex problems where skilled programmers are still needed. The rule of thumb is that you use AI, not the other way around. As a result, you must be able to fully explain, and provide reasoning, behind all of the code. Failure to do so will result in failing the test.

You must be able to demonstrate individual parts of your solution by providing examples which are not part of your source code.

Grading Details

Your semestral work must implement all the aforementioned features as described, otherwise, it will not be accepted. You can diverge from the specification slightly if the intended scope of tested knowledge and skills to be demonstrated by the work is maintained. Make sure your implementation fulfils the following conditions: