Skip to content

Challenge IWF

Roland Brand edited this page Oct 21, 2022 · 4 revisions

Background

At IWF Web Solutions, we are building enterprise grade administrative software with PHP/Symfony. 
Customers are expecting some document management functionality: E.g. attach word files to business cases, and update them under certain conditions. Our current solution for this recurring requirement is a document entity that we store in the database, which allows to track different versions of a file and also have a "current" version, pointing to the actual files on the filesystem. 
This functionality is showcased in isolation in a simple demo repository: https://github.com/iwf-web/webdavdemo/ 

The drawback is that you have to download, edit and reupload, if you want to change a file.
A better solution would enable editing the file directly. For MS Office, this is supported over WebDAV.

Mission: Build a service that can be run in isolation, which can serve office documents via WebDAV, and showcase the usage from front end within the demo app (or something equivalent).

Your mission

  • Free choice of platform and components, but the proposed solution should work within our docker stack for the demo repository.
  • Files should not be generally exposed, but access should be authorized via the demo app, which still "owns" all files.
    • The filesystem contents should not be accessible through WebDAV links in general, but only the specific file requested over API
    • Shared storage is possible, but it should not imply general access (which WebDAV servers provide out of the box)
  • Versioning of demo app should be updated after a successful edit.
  • Provide an example Edit functionality in frontend of the demo app.
  • Don't build WebDAV INTO the demo app, but build a separate service that communicates with the demo app via REST API
  • During edit, file should be locked
  • Should run for MS Office documents on major browsers on win and mac without plugins.

Expected output

  • Server app as a container, which is called from the demo app e.g. to expose a certain file
  • Modification of the demo app for API calls and frontend code for edit functionality
  • showcase how the containers interact

Similar solutions

Online Demo of IT Hit WebDAV AJAX Library (https://www.webdavsystem.com/ajax/) // this could be used as part of the solution too

Clone this wiki locally