Ministry Of FinanceWebsite for Ministry of Finance of Singapore
This project is a revamped website for Ministry of Finance of Singapore. The website is built on Sitefinity CMS with various customisations that extend the basic out-of-the-box functions.
This project is currently under development.
Document ControllerA Windows desktop application that manages company documents
This project is a document control system designed for Curtin Singapore to ensure existence of controlled processes and practices for the creation, review, modification, issuance, distribution, and accessibility of documents. It is an improvement project to replace the existing manual process.
The following table shows the improvement this project can bring to the existing manual document control system processes.
|Old System||The New Document Controller|
|Users submit request forms in hard-copy to managers. Upon approval, managers enter the document information into Excel spreadsheet and duplicate the documents in respective folders in shared drive.||Users submit request forms in soft-copy to managers. Upon approval, managers enter the document information into the Document Controller. The Document Controller will then copy the document to proper location in shared drive automatically, saving time and resources while minimising human error.|
The project consists of both front and back ends in a multi-layer architecture. Due to the restriction of company policy, both project front and back ends were combined into one WPF application. The MVVM (model-view-view model) pattern is adopted.
|Presentation layer, front-end||C#, XAML||They are the views in the MVVM pattern. Data binding is used to bind the displayed data with view models.|
|Business logic layer, front-end||C#, AutoMapper||They are the view models in the MVVM pattern. AutoMapper is used to convert domain model objects to view model objects that are suitable for display to users.|
|Service layer, front-end||C#||They are the models in the MVVM pattern. The service classes are used to interact with data from back ends|
|Data access layer, back-end||C#, .NET Framework Data Provider for OLE DB||The NET Framework Data Provider for OLE DB for Microsoft Access is used to access data from .mdb file.|
|Database layer, back-end||Microsoft Access database (.mdb)||There is no plan to have a dedicated server, therefore the viable option is to use the Microsoft Access which is placed and shared in company shared drive. Migration to use SQL Server or PostgreSQL can be easy done as the layers are dependent on abstraction.|
Coffee Shop TalkA web real-time text-based chat application
This project is created as a simple real-time chat application that allows users to sign up and chat with each other. The intention is to build a chat application that does not require friends adding - chat is public, like in a coffee shop.
Vue is used as the front-end component of the application because single page application is fast and more suitable for web applications. The back-end component is build with ASP.NET Core Web API, which uses SignalR to achieve real-time data transfering.
Auth0 is used as identity service provider for user authentication and authorisation.
Docker, combined with Github Actions, is used to achieve continuous integration and continuous deployment (CICD). With the process set up, upon receiving new commits on certain branch, Github builds the code, prepares docker image, pushes the docker image to Docker Hub, accesses to server through SSH, pulls the Docker image, and finally runs it. This allows my changes are seen immediately.
The application is hosted on my server using NGINX as reverse proxy.
Design PatternsShowcasing design patterns in C#
Design patterns are typical solutions to common problems in software design. Each of these used as a blueprint or base that can be further customised to suit unique requirement.
This project consists of examples of the most popular design patterns and is written in C#. It is usually used as my reference point or source of inspiration.