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 (9)
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
Full-Stack Software Engineer
2024 — Obecnie · Freelance / R&D
Projektowanie i wdrażanie rozwiązań end-to-end: aplikacje mobilne (React Native), systemy desktopowe i integracje hardware'owe.