web app introduction

master
Simon Rozsival 8 years ago
parent dc9438a8f5
commit 58950aa080

@ -238,7 +238,7 @@ addons (mostly administrative features).
assignment); otherwise, the solution with most points is used assignment); otherwise, the solution with most points is used
- teacher can edit student solution and privately resubmit it; optionally saving - teacher can edit student solution and privately resubmit it; optionally saving
all results (including temporary ones) all results (including temporary ones)
- localization of all texts (UI and exercises) - localization of all texts (user interface (UI) and exercises)
- Markdown support for creating exercise texts - Markdown support for creating exercise texts
- tagging exercises in database and search by these tags - tagging exercises in database and search by these tags
- comments, comments, comments (exercises, tests, solutions, ...) - comments, comments, comments (exercises, tests, solutions, ...)
@ -1666,7 +1666,56 @@ be implemented in next releases.
### Web-app ### Web-app
@todo: what technologies can be used on client frontend side, why react was used The web application is one of the possible client applications of the ReCodEx
system. Creating a web application as a client has several advantages:
- no installation or setup is required on the user's device
- works on all platforms including mobile platforms
- when a new version is rolled out all the clients will use this version without
any need for installing an update manually
One of the downsides is the large number of different web browsers (including
the older versions of a specific browser) and their different interpretation
of the code (HTML, CSS, JS). Some features of the latest specifications of HTML5
are implemented in some browsers which are used by a subset of the Internet
users. This has to be taken into account when choosing apropriate tools
for implementation of a website.
There are two basic ways how to create a website these days:
- **server-side approach** - user's actions are processed on the server and the
HTML code with the results of the action is generated on the server and sent back
to the user's Internet browser. The client does not handle any logic (apart from
rendering of the user interface and some basic user interaction) and is therefore
very simple. The server can use the API server for processing of the actions so
the business logic of the server can be very simple as well. A disadvantage of
this approach is that a lot of redundant data is transferred across the requests
although some parts of the content can be cached (e.g., CSS files). This results
in longer loading times of the website.
- **server-side rendering with asynchronous updates (AJAX)** - a slightly different
approach is to render the page on the server as in the previous case but then
execute user's actions asynchronously using the `XMLHttpRequest` JavaScript
functionality. Which creates a HTTP request and transfers only the part of the
website which will be updated.
- **client-side approach** - the opposite approach is to transfer the communication
with the API server and the rendering of the HTML completely from the server directly
to the client. The client runs the code (usually JavaScript) in his/her web browser
and the content of the website is generated based on the data received from the API
server. The script file is usually quite large but it can be cached and does not
have to be downloaded from the server again (until the cached file expires).
Only the data from the API server needs to be transfered over the Internet and
thus reduce the volume of payload on each request which leads to a much more
responsive user experience, especially on slower networks. Since the client-side
code has full control over the UI and a more sophisticated user interactions
with the UI can be achieved.
All of these approaches are used in production by the web developers and all
of them are well documented and there are mature tools for creating websites
using any of these approaches.
We decided to use the third approach -- to create a fully client-side application
which would be familiar and intuitive for a user who is used to modern web
applications.
@todo: please think about more stuff about api and web-app... thanks ;-) @todo: please think about more stuff about api and web-app... thanks ;-)

Loading…
Cancel
Save