BizList.gr - Greek Business Directory
side 2025-04 → 2025-05
I scraped the entire official public Greek business directory and created a MySQL database with the data. I created a backend and frontend using Node.js with fastify and Svelte(Kit) with JavaScript that allows searching companies by activity and export to CSV. It allows searching by people and find associated companies based on connections.
YAATD - Yet Another AI Tool Directory
side 2025-01 → 2025-02
I have created an AI tool directory, mainly to provide SEO for my own products and also to learn about embeddings and search. It is a simple web application that allows users to submit and search for AI tools using natural language. The backend is written in Node.js with fastify, the database is MySQL, and the frontend is in Svelte(Kit) with JavaScript. The search functionality is powered by a locally hosted embeddings model. It is a personal project that I worked on during my free time.
GreeNest
work GreeNest is an Europe Horizon project focused on creating an ecosystem for zero emission buildings. For our contribution we have created several new IoT devices in order to measure energy consumption, heating and other environmental parameters, including a weather station.
AppManager
work Integrated applications into the platform. Provided solutions to improve performance. Backend is written in Django and Python, frontend is written in ReactJS and TypeScript. Agent software running on appliances is written in Golang. Frontend is written in ReactJS and TypeScript.
Tracking System - Crystal
work Developed a manufacturing tracking system for a refrigerator factory as a contract project. It consists of a web service running on-premises to minimize latency, a MySQL database and a hybrid app used to scan barcodes.
Elevator IoT Gateway - Doppler
work Developed an IoT gateway device for an elevator manufacturing company using ESP32 and supporting Ethernet, WiFi and SIM communication. The project was separate from our platform and we provided source code, schematics and gerber files.
Amazon Alexa Smart Home Skill
work Created an Alexa Smart Home Skill for controlling the smart devices of the company.
Temperature Map GL
work Created a javascript library that allows to create fast temperature map overlays using WebGL by leveraging a custom shader to do the calculations.
Facebook Messenger Bot
work Created a Facebook Messenger Bot for controlling the smart devices of the company. Eventually we retired it due to restrictions from Facebook and the fact that it was not used much.
App Frontend
work The frontend is written in Javascipt with no framework (not counting jQuery as a framework). It is written as a single page application (SPA). It has the ability to connect to the Node Cloud service and subscribe to devices and data streams. It can also send commands to devices, setup rules, manage users and more. The frontend is designed to be responsive and work on both desktop and mobile browsers. It is also used as a template for the mobile apps. It can show graphs using the datalogs from users devices and can support a big number of different kinds of products, all of which can be specified directly in JavaScript. New products can be added within days, asumming most of the product features were already implemented in the past.
Mobile Apps
work The mobile apps were written as hybrid apps using originally Cordova and later Capacitor. That way we can share the code between Android, iOS and Web. The apps have some extra features compared to the web version of the app, like the ability to setup devices using WiFi and Bluetooth.
IoT Node Service
work Node Service is where all the devices connect and keep an open network connection. Through that connection, they can send data and receive commands. Clients connect to the service using WebSocket and can subscribe to specific devices or data streams. The service is written in Node.js. It is similar to a MQTT broker but tailored to our specific needs. In addition to receiving the data and feeding commands, the service saves the data in a time-series custom datalog system. The data is eventually compressed with brotli for fast web serving. The sensor data is also used to run user specified If-This-Then-That style rules to trigger notifications, activate other devices and more. It is designed with horizontal scaling in mind
IoT Device Firmware
work Since the beginning we have been using Espressif's ESP8266 and ESP32 microcontrollers for our products. I have architected the firmware in such a way so most of the code is shared among devices. Only product specific aspects, like sensor readings, outputs and settings need to be developed. I have written drivers many sensors like temperature, humidity, pressure, gas, light, motion and more. These drivers can be reused among products to further reduce the development work needed. It is highly modular system that allows new product firmware to be developed within days. The firmware is written in C using ESP-IDF. For the ESP8266 products, we used the Non-OS SDK provided by Espressif.
API Backend
work The API backend is responsible mostly for the non-device / CRUD operations, like user management, permissions, rules setup etc. It is written in PHP and the database is MySQL. The API is consumed by the mobile apps and the web frontend
Company Website
work The original website was written in PHP and eventually we have added eshop features written from scratch. We used braintree for payments. We have since migrated to a new shopify website for easier management from non-developers and better user experience.
Hamtool - Manufacturing Utility
work In order to allow manufacturing staff to flash and test the products, I have written a GUI utility in Python using Tkinter. The GUI connects to the serial port of the device and can generate authentication keys using our backend API. In addition, it can communicate with test equipment over the network to perform calibration in specific energy related products. It can generate device labels and interface with our label printer(s). Was originally written for Linux, but later adjusted to work on Windows also.
Sea Space Pirates
side 2013-01 → 2016-06
I was working on a 2D space pirates game written from scratch in C++ with a fellow student from engineering school. It featured sophisticated simulation for planetary movement, skeletal animations, procedural generation, script support with Lua. We were using SDL as the abstraction layer and OpenGL for rendering, initially immediate mode with fixed pipeline and later switched to programmable pipeline with shaders. It was multiplatform working both on Windows and Linux machines, while in theory it could run anywhere SDL was available including mobile devices. The gameplay and engine were pretty good but the art was lacking. We didn't try to commercialize it but it was great experience at the time.
TichuIQ - Online Card Game
side 2012-01 → 2012-12
I have created a web version of the popular Tichu Card Game with a fellow student while I was in engineering school. At the peak it had 200 people online, and 50k registered users. The backend was written in PHP and the frontend in jQuery and JavaScript. It had a custom game engine to handle the game logic and a matchmaking system to pair players. It also had a chat system and user profiles.