Introduction: TIM [Tag Based Inventory Management System]

About: Trust me I'm an engineer


Over the years I collected a lot of stuff in my workshop.... and after a lot of project I'm losing the overview :-(

I needed a solution for that problem. I wanted to know what I have, where it is and I wanted to access this information on the go from my smartphone, with as least effort as possible to set it up.

I was looking for an inventory management system. There are a lot off different systems out there. Some are excel/access based, some for windows and some web based. As I want to access the data on the go only the web based solutions were useful for me. But I could not find anything that was easy to use. Most were based on sals systems and were not easy to manage.

What I really wanted was to just add parts and find them again. Therefore I got the idea of building a "tag" based system.

Every entry needs at least 3 Tags. This forces one to think about the properties for ones item and to create new tags if necessary, but in the end it pays off. If one searches for an object just entering 2 or 3 tags will normally yield a result.

I also implement a full text search if one knows exactly what they are searching for ...

Now I think it's it is ready to share it with you. It can be a helpful tool to manage your labor equipment or book collection or other stufe ....Ideas for feature you need? Tell me! and I will try to add them ;-)

How does it work?

The system is based on JavaScript, PHP and MYSQL. On the server side all data are stored in a SQL database. The PHP backend loads that date and sends it to the browser. All communication between the server and the client are JSON based. Therefore, the page is only loaded once and everything else is done client side in JavaScript. The JavaScript environment is loading all data dynamically from the PHP backend. This is handelt over AJAX requests and the server answers with JSON data.

For every entry a log is stored. So if one does something wrong they can also go back and restore an older version. Each entry is linked to tags. The minimum number can be set in the settings, 3 turned out to be ok for me. It forces me to think about some tags but it's not too high to be annoying.

Whats do you need:

A webserver with PHP 7 and MYSQL 5.7. Earlier versions might possible work but were not tested.

Step 1: Web Server?

Web server!

To run TIM a web-server is needed. I would recommend to to buy an online web hoster. They will manage the server for you and you don't have to worry about much.

Local web server

This means the website is hosted by your local computer and can only be used there. It's also possible to make the side reachable from the internet but i would not recommend it (it can be a security risk)!

To host a website locally you can install XAMPP. You can follow this tutorial to install everything.

Dedicated Web server

Use a separated Computer. A RPI for example is cheap and up for the task to host a website. This tutorial can help you with that. Or you can use an old computer. Then you need to forward your port to be reachable form the internet. Check out this tutorial to do so. But be careful if you can reach your web server over the internet every one else can too. So you need to keep everything up to date.


You can host your website in the cloud. There are a lot of free web hosting services. But I would recommend to use a paid one. There will be no advertisement and you can get help if something goes wrong, especially when you don't want to lose your data. I can recommend I use them for years and did not have any problems and roughly 5€/month is a good price.

Step 2: Setup

Step 1: Download files

Download the files from github. Use the latest release and download "Source code (zip)".

Step 2: Copy files to the server

Upload the files to your webserver. This is normally done by FTP. Some web hosters also have tools like webftp. There you can use a website to upload the files. I personally use WinSCP.

The files must be in the root directory of you website.

Step 3: Create a database

Create a MYSQL database and make a note of the servername, username, password and database name.

Step 4: Settings.php

You need to create a Settings.php file in the root directory. Use the template file "Settings.php.templet", rename it to "Settings.php" and fill in the database login information:

//MYSQL settings<br>define('server_sql',"SERVER-NAME");

You can also provide an email-address to get error reports if something goes wrong.


You can edit the file on your computer and just upload it again.

Step 5: First use

When you open the website for the first time you should get the following message:

Database was initialized!

If not you can check the javascript console of your browser for more information about the problem.

Step 5: Change password

Your administrator account password must be changed! For that click on the face icon and type in "admin" as username and "admin" as password and click on "Change Password". Don't forget your new password. You need it for backups or to add new users.

Step 3: Location

We need a system to store all the different items. In TIM the file called "Location" stores where everything is. So we need to find a system for location names.

My system

As seen in the photos I only have one shelf. If I would need another one in the future I will just add new compartment numbers on the new shelf. In each compartment I have some boxes labeled with letters and in each box I have slots labeled with numbers again.

Therefore the location "7A51" is in shelf "7" box "A" in the slot "51".

If I have different Items in one slot I can simply market them with letters so the location name will be still unique.

Generalised system


The Idea is to switch between numbers and letters. You can also start with Letters for the room names: LR for living room, or KI for kitchen ... then use number for the shelfs and so on. Take some time to plan your location naming. Think about making it expandable. Later it will take quite some effort to extend it ...

Step 4: Add New Entries

Now the real work begins. You need to add all stuff you want to track.

I did this incremental. Whenever I had some time I sorted some parts into marked locations and added them to TIM.

Mandatory fields

The following fields need to be filled. I tried to reduce the number as much as possible. The effort to add new parts should be as little as possible.

  • Title

Name of the part. It should be as descriptive as possible. It will also be showed in the search results.

  • Location

An unique name of the location where the part is stored. We discussed this already.

  • Tags

Add as many tags as possible to describe the item. This will help you later to find the part again. If the tag you need does not exists yet you can add it with "Create new Tag". Be careful not to introduce tags with the same meaning.

Optional fieldsl

This fields are optional and can be let empty.

  • Count

If you want to keep track of the number of stored parts just add the count here. When you order new parts or use some its easy to track the changes.

  • Description

Add as much information about the part as possible. That can later be useful when you try to search for the part.

  • Link1-3

Add some links. For example to the shop where you normally buy the part or to a data sheet ...

  • Price

You can also add the price of the part if you wish.

Step 5: Search

TIM has two ways to search for entries:

Tag search

You can use tags to search for entries. If you add a "-" in front of the tag name you can exclude all entries with this tag.

Full text search

If you know exactly what you are searching for you can use the full text search. Just type in your keywords and click search. You can also add a "-" in front of a name to exclude it from the search and "*" can be used as a wildcard.

To see all information about an entry just click on the entry in the result list.

Step 6: Admin Console

Only the user with the username admin can use the admin console!

To open the admin console login as admin and click on the logo in the right upper corner.

Here you can add new users, remove users, undo changes, edit tags, create backups and restore backups.

Step 7: Backups

From time to time I would recommend to make a backup. The backup can be used to restore everything in case of a problem with the database or the server.

It's always a good idea to do regular backups of all your data. Especially when you put a lot of effort into building a database like this one. It is even a better idea to automate the backup process.

Backup link

TIM provides a direct link to download a backup. So it should be really easy to automate the process.

In Settings.php you can define a KEY that allows you do download the backup (use only letters and numbers):


Then you can download your backup under:


Classroom Organization Challenge

Participated in the
Classroom Organization Challenge