Michał Grecer
Full-Stack Developer swobodnie poruszający się między aplikacjami mobilnymi, webowymi a światem IoT. Buduję kompletne systemy – od elektroniki po interfejs użytkownika.
O mnie
Nie lubię szufladkowania. Zaczynałem od prostych skryptów w Pythonie, a dziś buduję złożone ekosystemy łączące Hardware, Mobile i Web.
Moje podejście jest proste: zrozumieć problem u źródła. Niezależnie czy chodzi o automatyzację procesu B2B, czy sterowanie wentylacją w oparciu o sensory IoT – dobieram technologię do problemu, a nie odwrotnie. Cenię sobie czysty kod, ale jeszcze bardziej cenię działający, stabilny produkt.
💡 Problem Solver
Nie tylko piszę kod. Analizuję procesy, znajduję wąskie gardła i tworzę narzędzia, które realnie oszczędzają czas i pieniądze.
🔌 Hardware & Software
Rozumiem bity i bajty na poziomie rejestrów procesora, ale potrafię też ubrać to w nowoczesny interfejs.
Najnowsze realizacje
Zobacz wszystkie (11)
MultiTool
2026O 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
2026Status 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
2026O 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
2025O 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
2025O 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
2025O 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
2025O 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
MMM-ButtonListener
2025O 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ę PythonShell do uruchomienia skryptu Pythona w tle. Skrypt używa biblioteki gpiozero do 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
2025O 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.regon do komunikacji z API oraz lxml do parsowania złożonych odpowiedzi XML zwracanych przez serwery rządowe. Całość zamknięta w intuicyjnym interfejsie graficznym.
Galeria
MMM-HomeAssistant
2025O 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
2025O 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
Status
Independent Software & Hardware Developer
2024 — Obecnie · Freelance / R&D
Projektowanie i wdrażanie rozwiązań end-to-end: aplikacje mobilne (React Native), systemy desktopowe i integracje hardware'owe.
Independent Software & Hardware Developer
2026 — Obecnie · Cewe Sp. z.o.o
Tworzenie skryptów automatyzujących zadania administracyjne w Pythonie i PowerShellu. Administracja serwerami Proxmox, w tym zarządzanie maszynami wirtualnymi i kontenerami LXC. Budowa i utrzymanie infrastruktury IT, w tym konfiguracja sieci, zarządzanie użytkownikami i monitorowanie systemów.