DevOps Intern
Klickit is an Egyptian fintech that handles fee payments for schools and universities. I spent six weeks on its DevOps team, one of two interns working under a DevOps and Cloud Engineer, mostly on Spotlight, an internal ticketing platform with an Angular frontend and a .NET API, and its user-journey SDK. Nginx, Docker, Graylog, and GitHub Actions ran underneath both, all on a single Azure VM.

Internship evaluation with excellent ratings across every assessed area
Six weeks:
Observability and deployment
- Nginx reverse-proxy and TLS configuration in front of Spotlight's Angular frontend and .NET API
- A Filebeat pipeline shipping Nginx, backend, and systemd logs into a Dockerised Graylog stack, plus the dashboards built on top of it
- Linux administration on the Azure VM: systemd services, diagnosing memory pressure, and working through issues over SSH
- Runbooks and a technical write-up of the system for whoever picks it up next
The user-journey SDK
- klickit-user-journey-sdk, an Angular library published as an npm package that auto-captures navigation, clicks, form submissions, and unhandled errors from Spotlight
- Checking exactly what the SDK collects - its idle-session tracking only reads activity timestamps, not keystrokes or field values
- The delivery side of the pipeline: client-side batching, with retries and backoff for failed or rate-limited requests
Completed Work
Graylog observability stack
A centralised logging setup pulling Nginx, backend, and systemd logs through Filebeat into Graylog. Two real incidents came through it: a Graylog outage that took the observability tool itself offline, and a Filebeat misconfiguration that had been quietly dropping logs before they reached Graylog at all.
- Built with
- Graylog, Filebeat, MongoDB, Docker Compose
- Contribution
- Diagnosed and fixed both incidents alongside my co-intern, then wrote them up as runbooks.
- Outcome
- A logging pipeline the team can query and alert on, plus documentation for next time either error shows up.
Spotlight's deployment path
Nginx sits in front of Spotlight's Angular frontend and .NET API on a single Azure VM, with GitHub Actions handling the build-and-deploy workflow for each side.
- Built with
- Nginx, GitHub Actions, Azure, Linux
- Contribution
- Worked through the reverse-proxy configuration and traced a couple of deployment failures back to their root cause.
- Outcome
- A documented, repeatable path from a code change to a running deployment.
User-journey SDK review
klickit-user-journey-sdk auto-tracks navigation, clicks, form submissions, and errors in Spotlight, batching events client-side before sending them on to the telemetry API.
- Built with
- Angular, TypeScript, npm
- Contribution
- Read through and documented the SDK's batching, delivery, and idle-detection logic.
- Outcome
- A written reference for how user-behaviour data moves from a browser click to storage, plus confirmation the SDK doesn't read keystrokes or field values.
Technical Stack
Technical skills
Nginx, Docker, Linux administration, CI/CD
Observability
Graylog, Filebeat, MongoDB
Tools and platforms
Azure, GitHub Actions, MobaXterm
Ladder
Getting oriented
The first stretch covered Klickit's stack and Spotlight's architecture end to end, from the Angular frontend and .NET API down to the Azure VM they run on.
Working through observability
Filebeat, Graylog, and the logs already flowing through them were the way into real incidents, right from the start.
Reading through the SDK
The user-journey SDK's batching and delivery logic got documented alongside the observability work, since its telemetry ends up in the same pipeline.
Writing it all up
Runbooks and a full technical reference tied the internship's findings together for whoever works on the same systems next.
Problems & Handling
Graylog itself went down partway through, which meant the tool we relied on to debug problems had become the problem.
Nginx, the backend, and the Graylog stack all ran on the same VM, so a fault in one layer could take down the tool meant to diagnose it.
Worked backward through Nginx, the Graylog containers, and the VM's own memory and process state until the cause turned up.
Graylog came back up, and the incident became one of the runbooks I wrote for next time.
Filebeat was shipping to the wrong destination for a while, so logs that looked like they were reaching Graylog quietly weren't.
Traced the pipeline stage by stage - the source logs, the Filebeat config, the Graylog input - until the mismatch turned up.
A working log pipeline again, and a clearer mental model of where telemetry can silently go missing in a multi-hop system.
Summary
- Programme length
- 6 weeks (Jun – Aug 2026)
- Core stack
- Nginx, Docker, Graylog, GitHub Actions
- Systems covered
- Spotlight's deployment pipeline and its user-journey SDK