Sebastian Klimas

Backend Developer

Przez całe życie pasjonowałem się informatyką, a w szczególności programowaniem. Zacząłem naukę w technikum informatycznym w Krakowie z zamiarem zdawania rozszerzonej informatyki na maturze. W przygotowaniach do niej przez pierwsze 3 lata nauki korzystaliśmy z języka C++, a w ostatni rok poznaliśmy także język Java. Po zetknięciu z nowym językiem, szybko opanowałem go. Doszedłem do wniosku, że uważam Javę za przyjemniejszy język do programowania i podjąłem decyzję by na ostatni rok zmienić język, w którym będę pisał maturę na Javę pomimo większego doświadczenia w C++. Uważam to za dobrą decyzję, ponieważ maturę zdałem z wysokim poziomem i dostałem się na wymarzone wtedy studia na Politechnice Krakowskiej. W trakcie swojej edukacji poznałem także inne języki takie jak PHP oraz Python, które do lepszego zrozumienia porównywałem z Javą oraz elementami w niej zawartymi. Do poznania komercyjnej strony programowania także wykorzystałem Javę i wykonałem kursy takie jak Kurs Spring, jednak nie wykluczam pracy w innym języku, ponieważ umiem się dostosować, tak jak zrobiłem to w start-upie, w którym pisaliśmy stronę internetową z wykorzystaniem PHP oraz frameworka Laravel. W życiu prywatnym interesuję się polityką w aspekcie społeczno-gospodarczym, przez co lubię współpracę oraz kooperację z innymi. Przez większość swojego życia uważałem się za introwertyka, jednak na przestrzeni ostatnich lat, po lepszym poznaniu siebie uważam, że jestem połączeniem jego z ekstrawertykiem.

Sebastian

Umiejętności i kursy

Skills & Courses

Programowanie

  • Java 8, 12
  • JavaFX
  • Spring
  • JPA standards
  • Hibernate
  • Liquibase
  • Thymeleaf
  • JUnit 5
  • AssertJ
  • Mockito
  • MySQL
  • C++
  • PHP
  • Laravel
  • Python
  • HTML + CSS (with Bootstrap)
  • JavaScript

Narzędzia programistyczne

  • IntelliJ
  • PhpStorm
  • PyCharm
  • SceneBuilder
  • GitHub
  • GitLab
  • Docker
  • Mockaroo
  • Postman
  • Mailtrap
  • Sendgrid
  • Jira
  • Firebase
  • ChatGPT
  • Dora AI

Projekty

Projects

Wyszukaj projekty na podstawie technologii:
Search for projects by technology:

Streams

Opis

Description

W pogoni za rozwojem postanowiłem lepiej poznać Java Stream API i doszkolić się z jego zakresu. Aby tego dokonać podjąłem się wykonania serii zadań, które udało mi się znaleźć w internecie. Projekt podzielony jest na 3 repozytoria zawierające kilkadziesiąt zadań, w których zagłębiam się w strumieniach. Czytaj więcej, jeżeli jesteś zainteresowany poszczególnymi zadaniami.

In the pursuit of development, I decided to become better acquainted with the Java Stream API and get some training on it. To do this, I undertook a series of tasks that I managed to find on the Internet. The project is divided into 3 repositories containing dozens of tasks in which I delve into streams. Read more if you are interested in the individual tasks.

Technologie wykorzystane w projekcie:
Technologies used in the project:
  • Java
  • Streams
  • Spring
  • Liquibase
  • OOP

Portfolio

Opis
Description

Mimo zainteresowania backendem zawsze chciałem mieć własną stronę internetową, gdzie mogę napisać parę zdań o sobie oraz opisać projekty które wykonałem, ponieważ sam kod na portalu GitHub nie zawsze wystarcza. Uważam, że pomimo zainteresowania backendem znajomość, chociaż podstawowego frontu jest pomocna, dlatego projekt ten ma zapoznać mnie z nim bardziej oraz zaprezentować moje umiejętności w deploymencie przy którym wykorzystuje Dockera. Serwer strony napisany jest w Javie w frameworku Spring z wykorzystaniem Thymeleafa.

Despite my interest in the backend, I always wanted to have my own website, where I can write a few sentences about myself and describe the projects I have done, because the code alone on the GitHub portal is not always enough. I believe that despite my interest in the backend knowledge, at least of the basic frontend is helpful, so this project is intended to familiarize me more with it, and to present my skills in deployment at which I use Docker. The website server is written in Java in the Spring framework with the using Thymeleaf.

Technologie wykorzystane w projekcie:
Technologies used in the project:
  • Java
  • Spring
  • HTML + CSS z Bootstrap
  • Thymeleaf
  • Docker

RecipesManager

Opis
Description

Myśl, aby napisać aplikację internetową do przechowywania przepisów kuchennych zrodziła się w mojej głowie, gdy byłem w sklepie spożywczym. Nie mając domowej książki kuchennej pod ręką, potrzebowałem sprawdzić co dokładnie potrzebuję do upieczenia ciasta. Z czasem wykiełkowała ona do pomysłu, aby napisać projekt z wykorzystaniem technologii, które już znam, oraz z tymi z którymi jeszcze nie było dane mi się zetknąć. Projekt oparłem o najlepiej znaną mi Javę oraz framework Spring. Do zarządzania schematami bazy danych wykorzystałem Liquibase, a do mapowania ich w kodzie skorzystałem z frameworku Hibernate. Backend aplikacji połączyłem z frontendem za pomocą Thymeleafa. Do wygodnego pisania strony internetowej skorzystałem z nowego dla mnie Bootstrapa. Na koniec projekt połączyłem z platformą dostarczania wiadomości email (Mailtrap), co wymagało ode mnie zapoznania się z dokumentacją ich API. Projekt napisałem w celu utrwalenia wiedzy i wystawienia się na nowe wyzwania, aby poszerzyć swoje kompetencje.

The thought of writing a web application to store kitchen recipes arose in my mind when I was at the grocery store. With no home cookbook on hand, I needed to see exactly what I needed to bake a cake. Over time, it germinated into an idea to write a project using technologies I was already familiar with and those I hadn't yet encountered. I based the project on the Java I was most familiar with and the Spring framework. To manage the database schemas I used Liquibase, and to map them in the code I used the Hibernate framework. I connected the backend of the application to the frontend using Thymeleaf. I used Bootstrap, which is new to me, to conveniently write the website. Finally, I connected the project to an email delivery platform (Mailtrap), which required me to read their API documentation. I wrote the project to consolidate my knowledge and expose myself to new challenges to broaden my competence.

Technologie wykorzystane w projekcie:
Technologies used in the project:

MinesweeperServer

Opis
Description

Ta aplikacja to pierwsza część większego projektu, w których chcę zaprezentować m.in. swoje umiejętności z łączeniem się z API. Jest ona serwerem postawionym na springu, z wystawionym 1 endpointem. Na zapytanie GET z parametrami: length, height oraz mines (gdzie wszystkie są intami) zwraca wygenerowaną na ich podstawie mapę do grania w Sapera. Dla zwiększenia ciekawości projektu i zaawansowania go algorytmicznie wykorzystuje w nim tablicę 1-wymiarową, w której kolejne wiersze układają się jeden za drugim. Ponadto w tym projekcie nauczyłem się jak powinno się prawidłowo obsługiwać wyjątki w Springu, za pomocą @ExceptionHandler. Do testów aplikacji wykorzystałem bibliotekę JUnit 5 oraz AssertJ.

This application is the first part of a larger project, in which I want to demonstrate, among other things, my skills with connecting to the API. It is a server set up on spring, with 1 endpoint exposed. On a GET request with parameters: length, height and mines (where all are ints) it returns a map generated from them to play Saper. To make the project more interesting and algorithmically advanced, it uses a 1-dimensional array in which successive rows are arranged one after another. In addition, in this project I learned how exceptions should be handled properly in Spring, using @ExceptionHandler. For testing the application, I used the JUnit 5 library and AssertJ.

Technologie wykorzystane w projekcie:
Technologies used in the project:
  • Java
  • Spring
  • API
  • AssertJ
  • JUnit 5

Java Spring Course Project

Opis
Description

Aplikacja webowa napisana podczas wykonywania kursu Spring. Projekt był wykonywany i rozbudowywany w każdym kolejnym etapie kursu. Nauczył mnie on wykorzystywania wiedzy teoretycznej poznanej na lekcjach w większym projekcie, a nie tylko na odrębnych zadaniach. Dzięki niemu poznałem komercyjną stronę projektów pisanych w Java Spring. W projekcie zetknąłem się z wieloma nowymi dla mnie elementami programowania jak m.in. standard JPA, Hibernate, Liquibase, CrudRepository, API a także elementami Spring Security. Aplikacja, którą napisałem jest serwisem filmowym, w którym możemy logować się do kont z różnymi rolami. Rola ADMIN bądź EDITOR pozwala nam na dodawanie gatunków filmowych a także same filmy. Będąc zwykłym użytkownikiem z rolą USER nasze uprawnienia są ograniczone i nie możemy dostać się do panelu z obsługą serwisu. Jednak zalogowany klient może wciąż oceniać filmy poprzez dawanie im odpowiedniej ilości gwiazdek.

A web application written during the execution of the Spring course. The project was performed and expanded in each successive stage of the course. It taught me to apply the theoretical knowledge learned in the lessons to a larger project, not just to separate assignments. Thanks to it, I learned the commercial side of projects written in Java Spring. In the project I came across many programming elements that were new to me, such as the JPA standard, Hibernate, Liquibase, CrudRepository, APIs and also elements of Spring Security, among others. The application I wrote is a movie service where we can log into accounts with different roles. The ADMIN or EDITOR role allows us to add movie genres and also the movies themselves. Being an ordinary user with the USER role, our privileges are limited and we can't access the panel with the service. However, a logged-in customer can still rate movies by giving them the appropriate number of stars.

Technologie wykorzystane w projekcie:
Technologies used in the project:
  • Java
  • Spring
  • Hibernate
  • Liquibase
  • Database H2 & MySQL
  • Thymeleaf
  • HTML, CSS & JavaScript
  • JUnit 5
  • AssertJ
  • Mockito

ChatGPTGuesser

Opis
Description

Każdy z nas grał kiedyś w 20 pytań, chęć odwzorowania tej gry zrodziła się u mnie już dawno temu ze względu na to, że strasznie lubiłem tą grę. Problemem na jaki się zetknąłem przy pierwszych próbach zaimplementowania tej gry w kodzie to nieprzewidywalność użytkownika i jakie pytania może zadać. Jednak, gdy AI zaczęło się rozwijać, a ChatGPT podbił internet zrozumiałem, że ten problem właśnie został rozwiązany. Program wykorzystuje API oprogramowania firmy OpenAI i wysyła zapytania do ich sztucznej inteligencji, z którą możemy podtrzymywać konwersację oraz zagrać w zgadywanie. Jednak sama sztuczna inteligencja nie jest idealna i czasem uniemożliwia grę. Projekt wystawił mnie na kolejne doświadczenie pracowania z dokumentacją techniczną innych aplikacji oraz integrowania swojego oprogramowania z zewnętrznym API.

Everyone has played 20 Questions at some point, the desire to replicate this game came to me a long time ago due to the fact that I liked the game terribly. The problem I encountered in my first attempts to implement this game in code was the unpredictability of the user and what questions he might ask. However, when AI started to develop and ChatGPT conquered the Internet I realized that this problem had just been solved. The program uses OpenAI's software API and sends queries to their artificial intelligence, with which we can maintain a conversation and play a guessing game. However, the artificial intelligence itself is not perfect and sometimes makes the game impossible. The project exposed me to another experience of working with the technical documentation of other applications and integrating my software with an external API.

Technologie wykorzystane w projekcie:
Technologies used in the project:
  • Java
  • API
  • AI
  • OOP

API GitHub

Opis
Description

Projekt API, który korzystający z zewnętrznego API GitHuba. Dostępny mamy tylko jeden endpoint GET /github/{username}, który po wywołaniu łączy się z GitHubem i pobiera z serwera dane na temat repozytoriów użytkownika. Tworzy kolekcję z ich nazw, loginów właścicieli oraz dla każdego brancha jego nazwę oraz SHA ostatniego commita. Wymaga posiadania w headerze requesta własności „Accept” ustawionej na „Application/Json” aby poprawnie działać. W projekcie po raz pierwszy operowałem w Javie z zewnętrznym API oraz jak się z nim łączyć i obsługiwać odpowiedzi. A także było to moje pierwsze komercyjne zetknięcie się z pisaniem własnego API i operowanie wyjątkami. Jednak nie byłem zadowolony z obu tych rzeczy. Dlatego w ramach nauki obsługiwania zewnętrznego API poszerzyłem wiedzę na ten temat i stworzyłem projekt ChatGPTGuesser. Pisanie własnego API i operowanie w nim wyjątków zostawiłem sobie na później i opanowałem ten element w projekcie MinesweeperServer.

An API project that uses GitHub's external API. We only have one endpoint available, GET /github/{username}, which, when called, connects to GitHub and retrieves data about the user's repositories from the server. It creates a collection from their names, owner logins and for each branch its name and the SHA of the last commit. Requires having the "Accept" property set to "Application/Json" in the request header to work properly. The project was the first time I operated in Java with an external API and how to connect to it and handle responses. And it was also my first commercial exposure to writing my own API and handling exceptions. However, I was not satisfied with both. Therefore, as part of learning how to handle an external API, I expanded my knowledge on the subject and created the ChatGPTGuesser project. I left writing my own API and operating exceptions in it for later and mastered this element in the MinesweeperServer project.

Technologie wykorzystane w projekcie:
Technologies used in the project:
  • Java
  • Spring
  • API

Kraje JavaFX

Opis
Description

Jest to druga odsłona aplikacji edukacyjnej przeze mnie stworzonej do nauki nazw państw. Zdecydowałem się na stworzenie jej, ponieważ nie mogłem znaleźć na internecie gry, która spełniałaby moje oczekiwania względem listy państw. W grze znajdują się państwa uznawane na arenie międzynarodowej, jednak stworzyłem osobną kategorię z państwami, które są tylko częściowo uznawane. Mapa nie jest odzwierciedleniem moich przekonań politycznych. W projekcie skorzystałem z technologii JavaFX aby stworzyć okienkową aplikację. Jako urozmaicenie nauki i próbę zachęty dodałem system punktów zależny od ilości odgadniętych państw oraz czasu rozgrywki. Dla graczy lubiących rywalizację jest także stworzona lista z najlepszą 10, która jest serializowana przed zamknięciem aplikacji by nie tracić wyników przy wyłączeniu aplikacji.

This is the second installment of an educational app I created for learning the names of countries. I decided to create it because I could not find a game on the Internet that met my expectations for a list of countries. The game includes internationally recognized countries, but I created a separate category with countries that are only partially recognized. The map is not a reflection of my political beliefs. In the project I used JavaFX technology to create a windowed application. As a learning enrichment and an attempt at encouragement, I added a point system that depends on the number of guessed countries and gameplay time. For players who like to compete, there is also a list created with the best 10, which is serialized before closing the application to not lose scores when the application is shut down.

Technologie wykorzystane w projekcie:
Technologies used in the project:

EDI

Opis
Description

Projekt napisany na zaliczenie zajęć na studiach. Naszym zadaniem było napisanie aplikacji korzystającej z API Mockaroo do tworzenia randomowych danych na podstawie szablonu. Po otrzymaniu ich z serwera musieliśmy je przedstawić w przyjazny dla oka sposób. Ostatecznie projekt musiał być uruchomiony za pomocą GitHub Pages. Na koniec mieliśmy rozmowy 1 na 1 z profesorem podczas której tłumaczyliśmy, dlaczego napisaliśmy ją w taki sposób i co odpowiada za co na stronie.

A project written for a college class credit. Our task was to write an application using the Mockaroo API to create random data based on a template. After receiving them from the server, we had to present them in a user-friendly way. Finally, the project had to be launched using GitHub Pages. In the end, we had 1-on-1 conversations with the professor during which we explained why we wrote it the way we did and what is responsible for what on the page.

Technologie wykorzystane w projekcie:
Technologies used in the project:
  • HTML
  • CSS
  • JavaScript
  • GitHub Pages
  • Mockaroo

Kraje konsola

Opis
Description

Pierwszy projekt związany z nauką nazw państw. Powstał, kiedy zacząłem interesować się mapą świata oraz jakie położenie geologiczne na świecie każe z państwa ma. Lista państw nie jest odzwierciedleniem moich przekonań politycznych, wybrałem państwa powszechnie uznawane na arenie międzynarodowej. Jest to prosta aplikacja konsolowa wykorzystująca elementy Javy, które poznzłem i nauczyłem się na kursie. Do projektu dodałem także system punktów oraz listę najlepszych wyników, która jest serializowana przed zamknięciem aplikacji aby nie tracić wyników przy ponownym uruchomieniu.

The first project related to learning the names of countries. It was created when I began to take an interest in the world map and what geological position in the world each country has. The list of countries is not a reflection of my political beliefs, I chose countries that are widely recognized internationally. This is a simple console application using the Java elements that I learned and learned in the course. I also added a point system to the project and a list of top scores, which is serialized before closing the application so that the scores are not lost when the application is restarted.

Technologie wykorzystane w projekcie:
Technologies used in the project:

Java Course Project

Opis
Description

Aplikacja napisana w Javie w trakcie wykonywania kursu Java. Projekt rozbudowywany o kolejne elementy w trakcje nauki nowych elementów. Mimo nauki i znajomości Javy zdecydowałem się na wykonanie tego kursu wraz z projektem, ponieważ chciałem jeszcze raz od podstaw ugruntować swoją wiedzę. Dzięki niemu poznałem elementu których w szkole ani na studiach mnie nie nauczono jak np. serializacja, która przydała mi się w innych projektach. Projekt zawiera aplikację do zarządzania biblioteką. Wykorzystuję w nim serializację danych, operowanie na plikach, obsługę wyjątków, strumienie oraz wiele innych aspektów obiektowego programowania.

An application written in Java while doing a Java course. The project expanded with more elements in the course of learning new elements. Despite learning and knowing Java, I decided to do this course along with the project because I wanted to consolidate my knowledge from scratch once again. Thanks to it, I learned elements that I wasn't taught in school or college, such as serialization, which came in handy in other projects. The project includes a library management application. In it I use data serialization, file handling, exception handling, streams and many other aspects of object-oriented programming.

Technologie wykorzystane w projekcie:
Technologies used in the project: