t-beigbeder / otvl_web

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

otvl_web

Otvl_web is an Open Source web application whose main objective is to publish digital content efficiently.

It is built with the Vue.js framework as a single-page application.

There is at this time no GUI for editing a site content, so the content publisher has to update the site using technical tools to modifiy and upload files. However, the files structure, their contents and their organization remain easy to understand.

You will find useful references at the bottom of this page.

The documentation is organized as following:

General presentation

For content publishers

From a content publisher point of view, the benefits of this tool are that

  • the site structure and how it is navigable by the end-user through menus/sub-menus is easily configurable;
  • the web application also features a simple application for blog publishing;
  • the site configuration, the pages content, media files such as documents, images and video files are managed directly as files on the server;
  • the site configuration and the pages metadata are described through YAML files, a simple language to describe structured data;
  • the pages contents are described in markdown, a simple language widely used to describe web page contents;
  • the underlying single-page application architecture enables smoother pages transitions and uses less data over the network;
  • the underlying technology can provide the user with a high level of ergonomy: you may browse the collection of Quasar Vue Components for instance, to make your opinion;
  • the simple publication application can be extended to provide dedicated features through rapid development.

Uploading YAML and markdown source files along with media files is an efficient way of working in organizations where the site publisher and the site administrator are the same person.

As mentioned above, there is no GUI for editing content. The content publisher must have direct or indirect access to the content files on the server. An example of indirect access is the use of git along with triggers to upload files after commit.

There is yet no access control on the published content either.

For developers

From a developer point of view, the benefits of this tool are that

  • the front-end is developped with Vue.js so the site general look-and-feel may be customized and enriched efficiently;
  • on the server side, a collection of simple REST web services are developped in python, their roles being mainly to serve files to the Vue.js client, either directly or with trivial yaml-to-json conversion;
  • this simple design also enables to add specific site features through rapid development.

For operations

Concerning the deployment of the otvl_web application, single-page applications require specific configuration on the server-side to handle the URL otherwise routed on the client-side, but also to support web crawler robots.

Some questions and solutions specific to the deployment of a Vue.js single-page application are detailed in the article Deploying a Vue.js Single Page Application:

  • the application supports web crawler bots through sitemap.xml generation and server-side HTML rendering;
  • a static Vue.js site may be configured at deployment time concerning the actual DNS name of the reverse proxy.

The following topics are detailed in the developer documentation:

  • produce docker images
  • simulate deployment with docker compose
  • ansible playbooks

Current status

This application is still a work-in-progress, however it is already hosting a few web sites in production.

The first concern at this time is obviously the lack of documentation. However this gap may be filled easily, thus quickly, moreover, several samples that are used for tests and a demonstration site can help to start a new site.

Useful links

Articles and guides

References

About

License:GNU Affero General Public License v3.0


Languages

Language:Python 40.6%Language:Vue 22.4%Language:JavaScript 19.5%Language:CSS 10.2%Language:Dockerfile 2.3%Language:Jinja 2.2%Language:HTML 1.8%Language:Shell 0.9%