---
# System prepended metadata

title: Ivo Karaneshev's assignment

---

# Ivo Karaneshev's assignment

Basically it is good that we have a working application deployed in the cloud developed in 30-35 hours. The application covers most of the requirements.

Still there are some aspects which we didn't like:

## Requirements
- No option to set metadata - the idea here was to use some kind of database where to save additional deatils about the uploaded file 
- Missing content preview - different response type previews might be shown with different formatting - JSON/XML/Image, stuff like that
- The Scale point is not covered - the current implementation can scale only vertically, all the files need to go through the application server and are saved on the server's file system
- The architecture diagram could be more detailed - the current diagram is more like a class diagram, it should've included the used technologies and how they communicate
- There is just one unit test which is not not really testing the content of the HAR file, but it just checks that there's 1 record. We should better check for every property that we are binding in the UI.

## Implementation
- Everything is in a single commit - different commits with implementation of the different parts would be much better
- Empty Readme file - it is a good practice to have a Readme with istruction for building/running/deploying the project together with any specifics
- No SPA front-end technology used - with the current implementation every change of the route results in a page reload. While this was not a strict requirement a better end result could be achieved with using any SPA framework
- There is a lot of duplicate code - e.g. in FileManager for getting full path, for reating directory if not existing
- There is a try/catch in every Hime Controller method instead of using a global Error Filter which leads again to duplicated code and complicates the refactoring
- Returning JSON result in the controller methods is not good practice, the format of the data shouldn't be set in the controller methods but configurable
- There are several places where switch can be used instead of several IFs and the IFs are even without ELSEs
- In the FileManager there is no check whether the path you are trying to access is inside some allowed storage path. Without that check an attacker can get access to files that contain sensitive data(e.g. /etc/passwd) on the server if the process has enough permissions

So based on the feedback above, we think that this is not enough to cover our requirements for a Senior Full-Stack developer in our team.