BIMS - Building Internal Monitoring System
Image representing BIMS - Building Internal Monitoring System

BIMS - Building Internal Monitoring System

Nikola Filipovski
Image of author Nikola Filipovski

Nikola Filipovski

Full-Stack Web Developer

About the Project

BIMS (Building Internal Monitoring System) is a local network monitoring application built using Node.js and EJS templating. Unlike traditional systems that rely on MySQL or cloud databases, BIMS uses Excel (.xlsx) files as its database. Each building is represented as a folder, and every folder contains dynamic Excel tables with device data.

This approach allowed the company to reuse existing documents and avoid costly migrations. Admins could upload, generate or modify Excel files directly through the user interface, and the system interpreted the data in real-time.

Architecture & Design

BIMS is a local network-only application. It is hosted on a private server and accessible exclusively within the internal LAN. The application was built to monitor every device with a static IP address, such as:

  • IP Cameras
  • Printers
  • Wi-Fi Access Points
  • Computers & Servers
  • Switches & TVs
  • Nurse Call Systems
  • Any other device with a static IP

The system periodically checks whether devices are online or offline by pinging their IP addresses, then updates the UI based on the results.

Image representing a specific building web page of BIMS

Admin Control & Role Permissions

User management inside BIMS is fully dynamic. Only administrators can create new users and assign custom roles. Permissions can restrict:

  • Which buildings a user can access
  • Which categories of devices they can view
  • Access to logs, reports, and system settings

For example, an administrator could create:

Role Building Access Level
Maintenance Building 1 All devices
Reception Building 2 TV, Wi-Fi, Phones only
Technician Building 3 Cameras and Printers

Admins can also create other administrators with full access to every building, device and action.

Image representing a device list page with admin commands/controls when logged in as admin user

Database Logic Using XLSX Files

Instead of using SQL or NoSQL databases, BIMS treats folders as buildings and .xlsx files as tables. The application can:

  • Create new building folders via the UI
  • Upload existing Excel device lists
  • Generate new files if none exist
  • Add new devices directly from the dashboard

This method allowed the company to continue using spreadsheets they were familiar with, while still benefiting from a real-time monitoring system.

β€œThe database is literally a folder. The tables are Excel files. The system is smart enough to treat them like structured data.”
Image represents the folder and file structure

Logging & Security

BIMS includes a built-in logging system for administrators, recording:

  • Failed login attempts
  • Device scan errors
  • Warning notices and system status
  • User activity when modifying files or roles

Logs store user device information and IP details, showing exactly what happened and where. All of this helps administrators maintain accountability and quickly identify misconfigurations.

Server Reliability & PM2

The application is kept running using PM2, ensuring:

  • Automatic restart on crashes
  • Automatic restart after system reboot
  • Background service management
  • Resource monitoring for Node.js
Logo image of pm2

In practice, this means the system simply keeps running. Even if the server restarts or a service crashes, PM2 brings everything back online instantly.

Responsive, Practical & Built for Real Use

The UI was made responsive so the app could be used on desktops, tablets, and mobile devices. The design focused on clarity, not complexity everything is understandable to non-technical staff.

Built to solve a real problem, using tools that already existed sometimes innovation is not about reinventing technology, but about making it work smarter.

If you’re interested in creating a similar monitoring solution for your organization, feel free to reach out to me.