Wszystkie projekty
Kompletna lista moich prac. Kliknij w projekt, aby zobaczyć szczegóły.
-
MultiTool
2026Python PyQt6 FFmpeg Tesseract macOS APIO projekcie
MultiTool to natywna aplikacja dla macOS, która rozwiązuje problem nieefektywnego zarządzania plikami. Program działa jako lekki proces w tle, oferując użytkownikowi “Stos” (Stack) na pliki, na których można wykonywać seryjne operacje za pomocą jednego kliknięcia.
Zaawansowane Funkcje Techniczne
🖱️ Niskopoziomowa Interakcja (Quartz API)
Unikalną cechą projektu jest autorski Shake Detector. Przy użyciu biblioteki
Quartz, aplikacja monitoruje zdarzenia systemowe kursora i wykrywa gest potrząśnięcia, co wywołuje okno programu w miejscu wskaźnika. Alternatywnie użytkownik może zdefiniować globalny skrót klawiszowy w panelu ustawień.🤖 Przetwarzanie Mediów i Dokumentów
- OCR Engine: Wykorzystanie Tesseract OCR do ekstrakcji tekstu z obrazów bezpośrednio do schowka systemowego.
- Video/Image Processing: Automatyzacja kompresji z wykorzystaniem FFmpeg (kodek x264) oraz biblioteki Pillow, pozwalająca na szybkie przygotowanie ciężkich materiałów do wysyłki.
- PDF & System Tools: Moduły do łączenia plików PDF (PyPDF2) oraz inteligentnego sortowania plików (Scatter) do folderów na podstawie zdefiniowanych reguł regex/ext.
⚙️ Architektura i Wydajność
Aplikacja została zaprojektowana w modelu asynchronicznym. Wszystkie długotrwałe procesy (upload, kompresja, OCR) są delegowane do osobnych wątków roboczych (QThread), co gwarantuje pełną responsywność interfejsu zbudowanego w PyQt6. Dane konfiguracyjne oraz reguły sortowania są trwale przechowywane w formacie JSON.
Wyzwania Inżynierskie
Kluczowym wyzwaniem była implementacja stabilnego wykrywania gestów kursora na macOS bez nadmiernego obciążenia CPU oraz zapewnienie bezpieczeństwa przy operacjach przenoszenia plików (
shutil.move) w różnych lokalizacjach systemowych.Galeria
-
BandMate
2026React Socket.io Prisma PostgreSQL Node.js Express.js TypeScript TailwindStatus Projektu: W trakcie realizacji
BandMate to ambitny projekt mający na celu rozwiązanie problemów z komunikacją i networkingiem w środowisku muzycznym. Obecnie platforma posiada w pełni funkcjonalny rdzeń komunikacyjny i geolokalizacyjny, a prace koncentrują się na modułach zarządzania wspólną pracą zespołów.
Dostępne Funkcjonalności
System Geolokalizacji i Map (Discover)
- Wyszukiwanie na mapie: Integracja z Leaflet pozwala na wizualne odnalezienie muzyków w określonym promieniu od Twojej lokalizacji.
- Klastrowanie markerów: Czytelny interfejs nawet przy dużej liczbie użytkowników dzięki automatycznemu grupowaniu punktów na mapie.
- Zaawansowane filtry: Możliwość filtrowania bazy użytkowników po instrumentach, gatunkach muzycznych oraz poziomie zaawansowania.
Zaawansowany Komunikator (Messages)
- Real-time Engine: Czat oparty na Socket.io zapewniający natychmiastowe dostarczanie wiadomości.
- Multimedia: Obsługa przesyłania i pobierania obrazów, wideo oraz plików audio bezpośrednio w rozmowach.
- Interakcje: System reakcji emoji pod wiadomościami, wskaźniki pisania (typing status) oraz funkcje edycji i usuwania wiadomości (dla siebie lub wszystkich).
Tablica Ogłoszeń i Feed Społecznościowy
- Marketplace: Tablica ogłoszeń z kategoriami (Szukam muzyka, Sprzęt, Sala prób) zintegrowana z API miast dla precyzyjnej lokalizacji.
- Interaktywny Feed: Strona główna z postami, systemem polubień oraz wątkowanymi komentarzami (wsparcie dla odpowiedzi na komentarze).
- Repostiwanie: Funkcja udostępniania postów innych użytkowników z własnym komentarzem (tzw. Quote Posts).
Powiadomienia i Profile
- System Notyfikacji: Powiadomienia w czasie rzeczywistym o nowych obserwujących, polubieniach, komentarzach oraz zaproszeniach do zespołów.
- Publiczne Profile: Rozbudowane wizytówki muzyków zintegrowane z odtwarzaczem YouTube API dla prezentacji demo.
Warstwa Techniczna
- Backend: Express.js z Prisma ORM dla PostgreSQL. Schemat bazy danych obsługuje złożone relacje wiele-do-wielu (np. członkostwo w zespołach, ukrywanie wiadomości).
- Przechowywanie danych: Wykorzystanie Multer do zarządzania wieloma strumieniami zapisu plików (avatary, posty, wiadomości).
- Frontend: React z Tailwind CSS, wykorzystujący architekturę komponentową i wzorce Optimistic UI.
Dalsze plany
- Rozbudowa Band Space: Wprowadzenie wspólnego repozytorium plików (nuty, dema) oraz kalendarza prób dla członków zespołów.
- System Zaproszeń: Finalizacja modułu rekrutacyjnego pozwalającego liderom na formalne zarządzanie składem zespołu.
- Powiadomienia Push: Integracja z Service Workers dla powiadomień poza otwartą kartą przeglądarki.
- Weryfikacja Kont: System odznak dla zweryfikowanych muzyków i profesjonalnych studiów nagraniowych.
Wyzwania rozwojowe
Głównym wyzwaniem jest synchronizacja stanów aplikacji przy tak dużej liczbie zdarzeń czasu rzeczywistego oraz optymalizacja zapytań do bazy danych PostgreSQL przy głęboko zagnieżdżonych strukturach komentarzy i odpowiedzi.
Galeria
-
Portfolio
2026Astro Tailwind TypeScript JavaScript GitO projekcie
Strona, którą aktualnie przeglądasz, jest wynikiem dążenia do stworzenia idealnego balansu między estetyką a technologią. Głównym wyzwaniem było zapewnienie płynnego działania interaktywnych elementów, takich jak modale projektów i galerie, na wymagających przeglądarkach mobilnych (szczególnie Safari na iOS).
Kluczowe cechy:
- Astro Framework: Wykorzystanie architektury wyspowej (Islands Architecture) dla błyskawicznego ładowania strony.
- Mobile First: Specjalne poprawki dla urządzeń mobilnych, w tym obsługa Dynamic Viewport Height (dvh) i Safe Areas.
- Custom UI: Autorski system filtrowania umiejętności oraz interaktywny modal projektów zintegrowany z centralną mapą technologii.
- Dark Mode: Pełna obsługa motywów z płynnymi przejściami kolorystycznymi.
Wykorzystane technologie:
Projekt opiera się na Astro, co pozwala na serwowanie zerowej ilości JavaScriptu do klienta tam, gdzie nie jest on potrzebny. Stylizacja została wykonana w Tailwind CSS, a logika filtrowania i interakcji w czystym TypeScript.
Galeria
-
IoT Activity Tracker
2025C++ ESP32 React Native PlatformIO TypeScriptO projekcie
Projekt polegał na stworzeniu autorskiego rejestratora aktywności fizycznej (typu Holter), który nie tylko zbiera surowe dane z akcelerometru, ale przetwarza je w czasie rzeczywistym na urządzeniu i klasyfikuje rodzaj aktywności (Spoczynek, Chód, Bieg). System składa się z urządzenia ubieralnego oraz aplikacji sterującej.
Warstwa Hardware & Firmware (C++)
Sercem urządzenia jest mikrokontroler ESP32 oprogramowany w C++ (PlatformIO/Arduino).
- Sensoryka: Integracja akcelerometru/żyroskopu MPU-9250 (komunikacja I2C) oraz precyzyjnego zegara czasu rzeczywistego RTC DS3231.
- Algorytmika: Zaimplementowałem autorski algorytm obliczający wektor SVM (Signal Vector Magnitude) z filtracją dolnoprzepustową (
alpha = 0.05). Urządzenie analizuje dynamikę ruchu i liczbę pików (kroków) w oknach czasowych, aby klasyfikować stan użytkownika. - Pamięć: Obsługa karty SD przez magistralę SPI do logowania danych w formacie CSV (Data, SVM, Stan) w celu późniejszej analizy.
- Komunikacja BLE: Urządzenie działa jako serwer GATT, wystawiając charakterystyki do:
- Streamingu danych na żywo (Notify).
- Synchronizacji historii (autorski protokół przesyłania plików z SD).
- Przyjmowania komend sterujących.
Aplikacja Mobilna (React Native)
Dedykowana aplikacja na Androida służąca do wizualizacji pracy urządzenia.
- Bluetooth Low Energy: Wykorzystanie biblioteki
react-native-ble-plxdo skanowania, łączenia i obsługi strumieni danych. - Dashboard Live: Prezentacja aktualnego przeciążenia (g) oraz wykrytego stanu (Spoczynek/Chód/Bieg) w czasie rzeczywistym.
- Analiza Historii: Funkcja pobierania logów z karty SD urządzenia przez BLE. Aplikacja rysuje interaktywne wykresy (
react-native-chart-kit) i pozwala na eksport raportów (zrzuty ekranu).
Wyzwania
Największym wyzwaniem była optymalizacja transferu dużej ilości danych historycznych przez interfejs BLE (Low Energy) oraz synchronizacja wątków pomiarowych (50ms) z zapisem na kartę SD, aby nie utracić próbek danych.
Galeria
-
MMM-LiveCamera
2025Node.js JavaScript Raspberry Pi HTML5 CSS3O projekcie
Kompleksowy moduł zamieniający lustro w interaktywną fotobudkę. Obsługuje pełny cykl: od podglądu, przez odliczanie, wykonanie zdjęcia, aż po upload i wydruk.
Kluczowe funkcje
- Google Drive Upload: Autoryzacja OAuth2 i automatyczne wysyłanie zdjęć do chmury.
- Przetwarzanie Obrazu: Wykorzystanie
ImageMagickdo dynamicznego nakładania ramek, logotypów i efektów na surowe zdjęcia z kamery RPi. - Obsługa Hardware: Sterowanie kamerą przez
rpicam-stilloraz integracja z systemem druku CUPS (komendalp).
Galeria
-
B2B Lead Generator
2025Python Pandas Google API NumPyO projekcie
Aplikacja desktopowa zaprojektowana w celu automatyzacji żmudnego procesu wyszukiwania potencjalnych klientów biznesowych. Narzędzie łączy oficjalne API Google z technikami web scrapingu, aby dostarczać gotowe listy kontaktowe w formacie Excel.
Główne funkcjonalności
- Integracja z Google API: Wykorzystanie Custom Search JSON API do precyzyjnego wyszukiwania firm w określonych lokalizacjach (obsługa wielu krajów).
- Inteligentny Scraping: Autorski algorytm ekstrahujący adresy e-mail i numery telefonów ze stron docelowych, z wbudowanym filtrowaniem błędnych danych (np. kodów pocztowych mylonych z telefonami).
- Wielowątkowość: Zastosowanie modułu
threadingdo równoległego przetwarzania zapytań bez blokowania interfejsu użytkownika (GUI). - Zarządzanie Limitami: System monitorowania dziennego limitu zapytań API z automatycznym resetem.
Wyzwania techniczne
Kluczowym wyzwaniem było ominięcie blokad anty-botowych oraz obsługa różnorodnych struktur HTML na stronach firmowych. Zastosowałem losowe opóźnienia (
random.uniform) oraz zaawansowane wyrażenia regularne (Regex) do precyzyjnej ekstrakcji danych kontaktowych.Galeria
-
MMM-WeightTrigger
2025Node.js JavaScript Raspberry Pi HTML5 CSS3O projekcie
Moduł przekształcający zwykłą półkę pod lustrem w inteligentny sensor. Wykorzystuje tensometry i sterownik HX711 do wykrywania obecności przedmiotów (np. kluczy, telefonu).
Technologia
- Low-Level Backend (C++): Napisałem dedykowany program w C++ wykorzystujący bibliotekę
wiringPi, aby uzyskać stabilne i szybkie odczyty z pinów GPIO, co było niemożliwe do osiągnięcia w czystym JavaScript. - Integracja: Node.js (
node_helper) komunikuje się z procesem C++ poprzez standardowe wyjście (stdout), przekazując zdarzeniaWEIGHT_LOW/WEIGHT_HIGHdo frontendu lustra.
Galeria
- Low-Level Backend (C++): Napisałem dedykowany program w C++ wykorzystujący bibliotekę
-
MMM-ButtonListener
2025Node.js JavaScript Raspberry Pi HTML5 CSS3O projekcie
Moduł służący do fizycznej interakcji z lustrem. Pozwala na wyzwalanie cyfrowych zdarzeń (np. zrobienie zdjęcia) za pomocą hardware’owego przycisku arcade.
Architektura
Wykorzystałem bibliotekę
PythonShelldo uruchomienia skryptu Pythona w tle. Skrypt używa bibliotekigpiozerodo nasłuchiwania przerwań na pinach GPIO, co jest znacznie wydajniejsze niż ciągłe odpytywanie (polling). Po wykryciu wciśnięcia, sygnał jest wysyłany do głównego procesu MagicMirror.Galeria
-
GUS REGON Integrator
2025Python FastAPI Docker GitO projekcie
Narzędzie służące do szybkiej weryfikacji danych podmiotów gospodarczych w Polsce. Aplikacja łączy się bezpośrednio z usługą sieciową GUS (BIR), pobiera pełne dane o firmie na podstawie NIP i pozwala na generowanie oficjalnych raportów.
Kluczowe funkcjonalności
- Komunikacja z BIR: Obsługa logowania i sesji w systemie REGON przy użyciu klucza API użytkownika.
- Dynamiczny Raport PDF: Generowanie czytelnych dokumentów PDF z wykorzystaniem biblioteki
FPDFi własnych czcionek (obsługa polskich znaków). - Interfejs “Drag & Drop”: Implementacja mechanizmu przeciągnij-i-upuść w
Tkinter, pozwalająca użytkownikowi na budowanie niestandardowych raportów z wybranych pól danych. - Historia Wyszukiwania: Lokalny system cache’owania ostatnich zapytań w plikach tekstowych.
Stack Technologiczny
Projekt wykorzystuje bibliotekę
litex.regondo komunikacji z API orazlxmldo parsowania złożonych odpowiedzi XML zwracanych przez serwery rządowe. Całość zamknięta w intuicyjnym interfejsie graficznym.Galeria
-
MMM-HomeAssistant
2025Node.js JavaScript Raspberry Pi HTML5 CSS3O projekcie
Lekki wrapper umożliwiający osadzenie panelu sterowania Home Assistant wewnątrz interfejsu MagicMirror.
Rozwiązanie
Zamiast budować interfejs od zera, moduł tworzy responsywną ramkę (
iframe), która bezpiecznie renderuje panel HA. Pozwala to na zachowanie pełnej funkcjonalności Home Assistanta (przełączniki, wykresy, kamery) przy minimalnym narzucie kodu po stronie lustra.Galeria
-
MMM-CpuFanControl
2025Node.js JavaScript Raspberry Pi HTML5 CSS3O projekcie
Rozwiązanie hardware’owe dbające o kulturę pracy urządzenia. Moduł monitoruje temperaturę procesora i dynamicznie steruje tranzystorem załączającym wentylator.
Jak to działa
- Monitoring: Node.js cyklicznie wykonuje komendę systemową
vcgencmd measure_temp. - Logika: Histereza temperatury (włącz przy 65°C, wyłącz przy 55°C) zapobiega ciągłemu włączaniu i wyłączaniu wiatraka.
- Sterowanie: Bezpośrednie zarządzanie pinami GPIO poprzez narzędzie
pinctrl.
Galeria
- Monitoring: Node.js cyklicznie wykonuje komendę systemową