The Document Controller Version 1.0

Teng Wei Song
4 min readDec 30, 2018

This is the first minimal viable product that has been published and used by the company.

The first version of the Document Controller is a WPF application which can be installed and launched in any Microsoft Windows Operating Systems with .NET Framework 4.6.1 installed. This application works hand in hand with a database in Microsoft Access format which is available in the company local network drive. It was completed on 23 November 2018 with the git tag v-1.0.0 being used to label the corresponding git commit in the source code repository.

This is the main window showing the list of all documents upon launching

Among the several core features of this application are:

Feature 1: Searching for Documents

Users are able to search for any documents by the document title and document number. The search can be easily done by typing in the search bar. As the user is typing, the document list changes automatically to show the suggested documents.

The list of documents shows the suggested documents automatically as the user types

There was a little thought on user experience: it is tedious if the user has to type the search text and click the search button in order for the search results to be displayed. I have simplified the process by removing the need for unnecessary steps.

Feature 2: Displaying Quick Information

The information of selected document is displayed on the main screen for quick overview. Besides the information, it also shows the location of the document (this information is not stored in database but is calculated on the fly as the location and folder structure of how the documents are kept can be changed anytime, in fact, there has been already a plan to change it.) and provides a button for quick navigation to the corresponding location.

The document information is displayed when user selects a document in the document list

More information on the document version(s) is available by double clicking on the selected document or by clicking Document > Edit Version with the document selected. The double click is the fruit of taking extra miles in perfecting the user experience. I believed the double click is much useful than additional buttons on the screen.

A second window showing the list of all document versions and their respective information

Feature 3: Changing the Document Information

User can also add, update, or remove the document version and save the changes to the database on this second window. To add or remove the document version, the user just needs to click Version > New Version or Version > Remove respectively. To update the information of any document version, the user can just start typing in the fields or text-boxes and make sure the changes are saved by clicking Version > Save Version upon completion.

Feature 4: Upload Documents Automatically

User can upload the new document to various locations in the company local network drive by clicking the Tool > Upload document. The application is not only smart enough to determine which folders in the company network drive the document has to be uploaded to, but also know which are the obsolete documents that have to be removed from the network drive. This is the real time-saver as we are talking about multiple locations and tasks as shown below:

  1. Remove the PDF version of the document from the public folder.
  2. Remove the editable (.docx, .xlsx, etc.) version of the document from the public folder.
  3. Move the PDF version of the document from backup folder to obsolete folder.
  4. Move the editable version of the document from backup folder to obsolete folder.
  5. Copy the PDF version of the document from working folder to public folder.
  6. Copy the editable version of the document from working folder to backup folder.
  7. Copy the PDF version of the document from working folder to public folder.
  8. Copy the editable version of the document from working folder to backup folder.

The WPF application is built with MVVM design architecture in mind. The mapping of the models and view models are done using AutoMapper. Interfaces are heavily used whenever possible to ensure unit tests can be written easily.

So far the application works properly as what it is intended for. But how about the several missing features and my plan for it in the future?

Completing The Features

This version of the WPF application provides the solution to a few of the basic issues I mentioned in my previous post. Replacing the current hard-copy form with a soft-copy form is being discussed with management and hopefully can be approved and implemented as soon as possible. The feature to inform all relevant staff of the document changes will also be included in the next minor update.

Using ASP.NET Core Web API as the Back-End

In addition to this, I have also been working on using an ASP.NET Core Web API server application as backend to replace the current Microsoft Access database. With a server application at the back-end, the data can then be accessed anywhere in the world. The work is being developed separately in the develop-web-api branch for building the ASP.NET Core Web API and the feature-consume-api_end_point branch for the WPF application to consume the APIs. The details of this development work will be covered in a separate post.

P.S. There have been several small updates to the WPF application due to some bug fixes. At the time of writing this post, the current stable version is Version 1.0.2.



Teng Wei Song

My journey as a self-taught developer. Feel free to drop by my online profile at as well!