You may want to take a look at the official FAQ!
Despite this not being a course which hand-holds you, on the contrary its a course that requires quite some analitycal skills from the end user if no prior experience exists, it is comprehensive enough to let you expericence full-stack development for the first time if you had never done it before. If you are passionate about the subjects it is a good way to approach them. Being an extremely practical course, the correction system is quite complex and can lead to temporal dilatations (see My repo wasn't assessed)
- A minimum of basics in the use of a command line (to use git, install and update the necessary tools, etc.)
- A minimum of knowledge about linux (the development of the project is encouraged to be done on the prof's VM, which is based on Debian)
- Concepts fromt the exam "Reti di Calcolatori" (?)
- Programming paradigms
It is not possible to use libraries which augment Vue or that add new components, for everything else, make sure they're written in JS and not TS.
No, this is a course about JavaScript, not TypeScript, if you want types you can use JSDoc as the TS language server supports it.
The oral exam is composed of a brief presentation of the project, guided mainly by you; plus one or two questions.
The most common questions are on the methods of the HTTP protocol (for example the difference between POST and PUT),
on implementation choices, on what does the contents of the Dockerfiles mean.
Swagger has limited checks compared to the prof's config, which is based mostly on ibm-openapi-validator,
you can download ibm-validator and set it up to use the config made by Michele.
- Checks that the paths match what you declared inside
doc/api.yamland between frontend and backend. - If you have a path
/users/{userId}which expects aPOSTyou have to keep coherence in the various parts of the application. - Check the casing of the letters, the check is case-sensitive so if they differ it will fail.
If you pushed to the repo wednesday, it may not get it as he starts the assessment early in the morning, even if the results arrive way later. If it gets skipped more than two times, write him an email.
The week after the exams are skipped.
Usually, every wednesday, except festivities or exceptional cases. The week before the exam, he assess every day until the Thursday before (so all pushes done before wednesday evening will be assessed).
Example: I have the attend the exam on the wensday 22? then i will receive assessments every day from wednesday 8 to wednesday 15.
Generally:
- Documentation of the technology you are using, foundamental.
- The prof's book goes on the whole program and shows a quite useful parallel project, its relatively short but doesn't cost much and may be useful.
Specifically:
- OpenAPI:
- Backend:
- Basically, whatever tutorial on how to create a backend for an api rest, but will nonetherless link more rersources.
- Interactive introduction to Go
- For the libraries:
- Frontend:
- Vue
- Axios
- Docker:
- You can just look at thye prof's example to understand what you need to do in the specific case.
- Introduction
- Manuals
- Reference
Note
This is for avoiding that your errors are different from yours
docker run --rm --user 1000 -p 3000:3000 <image tag>To verify the correctness, or if you don't want to wait for the prof's assessment, you can use the linters.
It says i have hardcoded an url to http://localhost:3000/the backend doesn't work for the prof, how do i fix it?
These errors may be caused by the fact that the prof runs the project on a machine, while opening the site on another, so localhost:3000 doesn't know where to go.
So, to test it by yourself you can do the same, taking the IP of the host and placing it in a browser from another device, like you would do on PC.
For example, if the host's IP is 192.168.1.4 you connect from another device to http://192.168.1.4:8080.
This said, of course the two devices must be on the same network, else they cannot comminucate, so pay attention that they are on the same network.
If this doesn't take you anywhere, check if you have that string anywhere, the regex matches everything, including comments!
Linters are used to find errors and problems before they reach the repo on github/gitlab, and consequently before the prof assesses them,
so to have more chances to receive actual notes on the project instead of syntax errors or typos.
To get this result, we need to reflect the prof's configuration as much as possible, for which
Michele (@Michele 4384 on tg (without spaces)) has created a series of configs which should manage exactly that.
To install both linters and configs, you may follow the mini-guide which is present in the above link.
The course, even if divided in homework, actually requires the realization of a full-stack app divided in:
- OpenAPI document which desribes the REST API
- Backend/API implementation
- Frontend with VueJS
- Docker container to simulate a deploy
The project must be realized starting from the example github repo made by the prof Bassetti (licensed under MIT) fantastic-coffee, from which is possibke to create forks or cloness, the important part is that you connect your repo to the prof's corrector via SSH key by following his instructions.
Note
Reply given from Ionut Cicio (@CuriousCI on tg)
- If you've done DB2, do the analisys of the project, so you can quickly solve problems like "what do i need to implement?"
- Try to start the code and see if it compiles and works (everything is written in the fantastic-coffee's README)
- Write the API using a RESTful style as suggested by thye slides, assessments will tell you if and what problems exist as you go
- Design the DB (technically you could do it later as well, to implement the functionalities you can use "fake" data); if check, the cloned project congtains a "database" folder, which is where this stuff should be placed into
- Take a functionality (like the login), and try to implement it
- Implement the rest of the functionalities (to test, use postman or similar, i made a bash script which uses
jqto make the tests) - Do the front-end
- Write the two small
Dockerfileneeded to start the project via Docker