Inventory Manager

I created an inventory tracking system for a credit union to track IT assets for the entire organization.

Overview

There are a lot of off-the-shelf solutions available for tracking IT assets. Most of them are cumbersome to use and have more features than you would ever need.

This solution I created made it as simple as possible to track inventory while also adding some unique features that were necessary for the organization.

Features

Track Inventory

Create, edit, and update inventory assets. Assign them to locations, departments, and employees.

Location History

View a history of the asset including the locations it has been assigned to, the employees who have handled the asset, and more.

Posession Tracking

View an entire list of who had possession of the asset from the time it was entered in the system.

Bulk Import

Import new assets via spreadsheet.

Transfer Requests

Request that an asset be transferred to a new location. Then see a list of pickup and drop off requests by location. So when an employee goes to a location, he/she can see what needs to be picked up and/or dropped off there.

Location Management

Create and edit locations in the system.

IP Address Blocks

Assign IP address blocks to locations and then manage the devices that are assigned to those IP addresses. Lookup a device by IP address.

Console Number Blocks

Assign console number blocks to a location and then manage the devices that are assigned to those console number blocks. Easily see which console numbers are available for that location.

Asset Disposal

Add assets to be disposed of and track how they are disposed. View previous disposals to see where and how an asset was disposed.

Reporting

View reports for IP addresses and console number blocks. More reports could be added in the future.

Intranet Integration

Integrates with the company's intranet to obtain current lists of employees without needing to enter them manually in the system. It is also used to determine which employees are the managers over departments.

Active Directory Integration

Integrates with Active Directory for single sign on.

Dashboard

At login, a dashboard is displayed showing each asset category with the total number of assets in the system, the number of devices that are deployed, the number in transit, and the number available for each category.

Search

The search feature can search every field available for an asset to find it including tag number, serial number, description, IP address, console number, and many more.

My Involvement

I was the only developer on this project. I worked with several IT employees to determine requirements and features. Then I developed the entire application myself including database, back end, and front end. I also created the staging and production environments on the servers and deployed the solution to each of those environments. I also worked with the end users directly to make sure everything met their needs and added additional features as they were requested.

Process

After gathering requirements, I created a new repository on the internal Git server. Then started working on the database schema by creating a new database on my local SQL server.

Once the database schema was created, I created a new empty solution for the project in Visual Studio. Inside that solution, I created three data layer projects. One is a base project where an interface for the Entity Framework context can live. The second contains the concrete implementation of the Entity Framework context. The third contains the models for each database table. The context and models I initially generated using Entity Framework’s scaffold-dbcontext command.

For the service layer, I created a base project that contains the interfaces that define each service. Then I created a project for the concrete implementation of those services. Another project was added for the service layer models. Finally, I added a WebAPI web service project with the controllers that handle the HTTP actions and pass them to the services using dependency injection.

The front end was created as an ASP.NET MVC project. It utilizes another project I created to handle the http communication (HttpClient) between the controllers and the backend WebAPI project. The front end uses Bootstrap, some custom Javascript and CSS I created, and jQuery mostly.

I created the HTML and the layout myself. I used chart.js for the charts on the dashboard and zxing.js as a barcode scanner.

Results

After I created the initial project, I wrote user documentation to show the end users how to use it. I trained them and had them test it thoroughly. I fixed issues that they noticed and they started loading data into the system.

At the time of writing, the system now tracks over 6,800 assets at nearly 70 locations.

Technologies Used

C# ASP.NET MVC SQL Entity Framework WebAPI Visual Studio Git Bootstrap CSS jQuery JavaScript AutoMapper chart.js zxing.js Windows Server