Skip to content

Junior Backend Developer · Python & TypeScript

Hi, I’m Kacper.
I build backends
that actually work.

Computer Science student in Gdańsk looking for a junior backend role or internship. I build self-hosted apps on Node.js and PostgreSQL, Python tools for computer vision, and ship them with Docker.

about_me.py
me = Developer(
  role="backend",
  level="junior",
  stack=[
    "Python", "TypeScript",
    "PostgreSQL", "Docker",
  ],
  city="Gdańsk, PL",
  open_to="junior roles",
)
Kacper, in one object
based in Gdańsk, PolandNode.js • PostgreSQL • Python • Docker

01 · About

Quick facts

  • Based in

    Gdańsk, Poland

  • Focus

    Web, backend, AI and homelab infrastructure

  • Learning style

    Build → break → fix → deploy

  • Outside code

    Gym, cars, fishing and hands-on projects

02 · Toolbox

What I build

Web apps

React, TypeScript and modern interfaces

Backend

Node.js, Fastify, Python, PostgreSQL and REST APIs

AI experiments

CNNs, computer vision and local LLMs

Homelab

Linux, Docker, Proxmox, self-hosting and networking

03 · Work

Selected work

Self-hosted apps, a bit of machine learning and a website for a local company. Explore case studies, visuals and links to available source code below.

Fishing Forecast dashboard with the score, factor breakdown and 3-day trend
Status: Ongoing

Fishing Forecast

Purpose

A self-hosted fishing planner for Koszalin: a 0–100 score for each spot and species, built from weather data with every factor explained, plus the best time windows and a 7-day outlook.

  • Fastify + PostgreSQL API: accounts, sessions, synced spots and a shared weather cache
  • Deterministic scoring: 8 weighted factors, species rules capped at ±12 points
  • 70 Vitest tests; CI runs lint, typecheck, tests and a Docker build
  • TypeScript
  • Fastify
  • PostgreSQL
  • React
  • Vitest
  • Docker
Status: Ongoing

GymTracker

Purpose

A private, mobile-first app for workouts, training plans, body measurements, goals and supplements, built to self-host with Docker and use over Tailscale.

  • Fastify 5 + Zod + Prisma API on PostgreSQL 17: 13 models, 4 migrations
  • npm-workspaces monorepo: API, React client and a shared package
  • Docker Compose with Nginx, built to run on a home server
  • TypeScript
  • Fastify
  • Prisma
  • PostgreSQL
  • Zod
  • React
  • Docker
GymTracker on a phone: today's plan
GymTracker on a phone: an active workout with the rest timer
Blockout website with printing and signage services and a request-a-quote button
Status: In progress

Blockout Website

Purpose

A marketing site for a large-format print and signage company in Koszalin, built to turn visits into quote requests.

  • React 19 + TypeScript with a plain-CSS, token-based design system
  • Build-time SEO: meta, Open Graph, schema.org LocalBusiness and FAQPage
  • Contact form with Zod validation and two anti-spam checks; Docker + Nginx
  • TypeScript
  • React
  • Vite
  • Zod
  • CSS
  • Docker
  • Nginx

65%test accuracy · 7 classes

Status: In progress

Facial Expression Recognition

Purpose

A CNN trained from scratch to classify seven facial expressions, served through a FastAPI web app with live webcam input.

  • 65% accuracy on 7,178 held-out 48×48 test images
  • One OpenCV preprocessing path shared by training, evaluation and inference
  • Classification report, confusion matrix and training curves in the repo
  • Python
  • Keras
  • OpenCV
  • FastAPI

Code review · process diagram

  1. GitHub API: student's repos
  2. fetch the source code
  3. Ollama (local LLM) review
  4. parse JSON: line, severity
  5. save to student history
Status: In progress

Student Progress Analyzer

Purpose

A desktop app for teachers: groups, tasks and attendance, automatic grading on the Polish 2.0–5.0 scale, and AI review of students' GitHub code with a local LLM.

  • JWT-protected Express + MongoDB API with about 30 endpoints
  • AI code review of students' GitHub repositories with a local model (Ollama)
  • Automatic grading on the Polish scale; CSV import, CSV and Excel export
  • TypeScript
  • Node.js
  • Express
  • MongoDB
  • React
  • Electron
  • Ollama
Source code is not publicly availableCase study: Student Progress Analyzer

Image processing · process diagram

  1. load image
  2. resize (OpenCV)
  3. remove background (optional)
  4. Real-ESRGAN x4 · CUDA/CPU
  5. unsharp mask
  6. save result
Status: Finished

AI Upscaler

Purpose

A desktop app that upscales photos 4× with Real-ESRGAN, with optional background removal, running on the GPU when one is available.

  • Real-ESRGAN x4 on CUDA with FP16, CPU fallback
  • Optional background removal with rembg before upscaling
  • CustomTkinter GUI with a worker thread; packaged as an .exe with PyInstaller
  • Python
  • PyTorch
  • Real-ESRGAN
  • rembg
  • OpenCV
  • CustomTkinter

04 · Repositories

Code lives here.

Visit my GitHub

Fetching public metadata from GitHub…

05 · Personal note

Outside the terminal

I enjoy strength training, cars, fishing and building things outside of software too. I like projects that start as an idea, turn into a problem, and eventually become something useful.

06 · FAQ

A few more answers.

What kind of role are you looking for?

I am looking for a junior backend developer role or an internship. I study Computer Science in Gdańsk and want to develop my skills building APIs, server applications and integrations.

Which technologies do you work with?

I mainly use TypeScript, Node.js, Python and PostgreSQL. My projects also use Fastify, Express, FastAPI and Docker. I choose tools for the problem; each case study explains the stack.

Where can I explore your projects?

Selected work includes descriptions, technology choices, screenshots or diagrams, and setup instructions. Public repositories are linked on GitHub. Not every project has an online demo.

Can I download your CV?

Yes. The Download CV button at the top of the page opens a PDF. Get in touch if you would like more information about my projects or experience.

What is the best way to contact you?

Email kacper.blok@gmail.com or contact me on LinkedIn using the links in the contact section. I am happy to discuss junior roles, internships or a specific collaboration.

07 · Contact

Let’s build something useful.

I am open to junior roles, internships, collaborations and interesting technical conversations.