Projects

Nine projects, sized honestly. Enterprise systems read like enterprise systems, weekend experiments read like weekend experiments. The three flagship entries have full case studies; the rest are described here in full because they are short, and padding them out would be dishonest.

Machine-readable index: https://charisnikolaidis.com/projects/index.json

Enterprise systems

Maritime supply chain platform

2025 to now · Enterprise system · FastAPI, PostgreSQL, Redis, Celery, React, Azure, Bicep

A maritime CRM and ERP for a ship-supply operation, built from an empty repo and owned end to end, with a Celery pipeline over AIS positions from 20,000+ vessels. Procurement is one Job aggregate committed atomically in a single PATCH, because per-document REST endpoints cannot hold the cross-document invariants. The Azure environment underneath it is Bicep: private endpoints only, deterministic egress, no stored cloud secret anywhere in the pipeline.

Full case study: https://charisnikolaidis.com/projects/maritime-supply-platform/

Marine catering system rescue

2025 to now · Enterprise system · C#, ASP.NET Core, EF Core, SQL Server, Angular 19, Azure

A shipping company's entire catering department as software: the catering contract on a vessel, the victualling rate it is judged against, menu planning, the galley, buying, stock counts and the invoices at both ends, with its own purchasing, invoicing and accounting modules. It arrived mid-build and stalled, with more ambition than sequence. The requirements got put in an order somebody could ship against, then the call was to stabilise rather than rewrite: the schema and its 70+ stored procedures stayed, isolated behind a second database context, with a service layer added as the only write path and the front end rebuilt to Angular 19 in place. In production in about three months.

Full case study: https://charisnikolaidis.com/projects/marine-catering-system/

Get Paid On Time

2026 to now · SaaS, live · FastAPI, React, PostgreSQL, Celery, Stripe, myDATA, .NET connector

Credit control for Greek businesses, live at https://gpot.gr. Reconciles myDATA, the customer's ERP and manual entry. On conflict it flags the differing field and holds, because quietly picking a winner is how you chase someone for money they already paid.

Full case study: https://charisnikolaidis.com/projects/gpot/

Side projects and AI

Greek web scraper

2024 · Published package · Python, Scrapy, spaCy, JSONL

A Scrapy crawler for Greek-language web content, with NLP filtering to drop the junk and clean JSONL on the way out. Built for a data collection job, then packaged and pushed to PyPI in case anybody else needs a pile of Greek text.

  • Concurrent crawling on Scrapy.
  • NLP filtering to keep Greek content and drop boilerplate.
  • Clean JSONL output for downstream training.
  • Retry and encoding handling for messy pages.
  • Published on PyPI with docs.

GitHub: https://github.com/Charisn/Greek-web-scraper · PyPI: https://pypi.org/project/greek-web-crawler/ · Markdown: https://charisnikolaidis.com/projects/greek-web-scraper.md

sarcastic_ai_agent

2025 · Weekend experiment · PyTorch, Transformers, QLoRA, Gemma 3 1B

It started as a chat for this site. Gemma 3 1B, QLoRA, a sarcastic persona on a synthetic JSONL dataset, meant to sit here and answer visitors. It never shipped. I kept it as a pet: terminal chat on one GPU, adapters on disk, no public demo.

  • QLoRA on Gemma 3 1B, 4-bit, one GPU.
  • Synthetic sarcastic chat dataset in JSONL, generated locally.
  • LoRA adapters across the projection layers.
  • Stateless terminal chat. No memory between turns.
  • Adapters stay on disk. No public demo.

Markdown: https://charisnikolaidis.com/projects/sarcastic-ai-agent.md

Image recognition

2024 · Learning project · Python, Flask, OpenCV

A small Flask app that recognises objects in uploaded images using OpenCV and a pretrained model. Nothing clever. I built it to learn the shape of a vision pipeline, upload then infer then return a label, rather than to chase a benchmark.

  • Upload an image, get classified objects back.
  • Uses a pretrained model through transfer learning.
  • A simple Flask interface.
  • Built to learn the pipeline, kept small on purpose.

GitHub: https://github.com/Charisn/Image_recognition · Markdown: https://charisnikolaidis.com/projects/image-recognition.md

Earlier work and homelab

FuelStation ERP

2022 · Where it started · C#, .NET, Blazor, WinForms, SQL Server

My first real system. An ERP for running a fuel station. It's not how I'd build it today, and that's the point: it's where I learned what a data model wants, what happens when you skip validation, and why the boring parts matter.

  • Stock, sales and pricing for a fuel station.
  • Both a desktop and a web front end.
  • My first proper data model and the lessons that came with it.
  • Two GitHub stars, which I'm unreasonably fond of.

GitHub: https://github.com/Charisn/FuelStation-ERP · Markdown: https://charisnikolaidis.com/projects/fuelstation-erp.md

MSc security capstone

2024 · Academic · PHP, MySQL, OWASP

The build for my MSc in Computing (Internet Technology & Security) at the University of Northampton. A web application in PHP where the security work was the actual subject: input handling, authentication, the common web vulnerabilities and how not to ship them.

  • Threat modelling and the OWASP top ten in practice.
  • Authentication and access control done deliberately.
  • Written up as the MSc dissertation project.
  • Formal grounding for the security habits I still use.
  • University of Northampton, 2023 to 2025.

GitHub: https://github.com/Charisn/Msc-Internet-Security · Markdown: https://charisnikolaidis.com/projects/msc-security-capstone.md

Homelab network segmentation

2025 · Homelab · VLANs, firewall policy, IDS/IPS, VPN

A lab network segmented considerably more carefully than a home network needs to be. Separate VLANs for servers, admin, IoT and guests, with firewall policy between them so the smart plug can't reach anything that matters. Specific hardware and topology stay off the internet.

  • VLAN isolation for servers, admin, IoT and guest.
  • Firewall policies controlling traffic between segments.
  • IDS/IPS and traffic logging.
  • Grew out of Cisco Packet Tracer coursework and two years of network experience.
  • The same instinct shows up in the cloud work: private endpoints instead of public databases, and egress through one known address rather than whatever the platform hands out.

Markdown: https://charisnikolaidis.com/projects/homelab-network-segmentation.md