Zaprojektuj i zbuduj aplikację , która rozpoznaje przedmioty w świecie rzeczywistym (poprzez kamerę i AR), a następnie prezentuje ich nazwę oraz wymowę w wybranym języku. Użytkownik może zapisać dane słowo jako fiszkę do późniejszej nauki, z systemem powtórek opartym o reakcje użytkownika.
Tryb AR rozpoznawania obiektów:
Użytkownik uruchamia kamerę.
Po skierowaniu na przedmiot aplikacja rozpoznaje go (np. "krzesło") i wyświetla jego nazwę w języku polskim oraz tłumaczenie w wybranym języku (np. angielski: chair).
Automatycznie odtwarza nagranie wymowy słowa.
Dodawanie fiszek:
Każde słowo może być dodane do zestawu fiszek.
Fiszka zawiera: słowo po polsku, słowo po obcym języku, nagranie dźwięku.
Tryb nauki fiszek:
Fiszki mają formę kart do przewracania (polski → obcy język + wymowa).
Użytkownik po każdej fiszce wybiera:
✅ Umiem – fiszka wraca po dłuższym czasie.
🤔 Długo się zastanawiałem – średnia przerwa.
❌ Nie umiem – fiszka wraca szybciej.
System powtórek (SRS – Spaced Repetition System):
Aplikacja ustala harmonogram powrotu fiszek w zależności od reakcji użytkownika.
Każda fiszka ma przypisaną datę najbliższej powtórki.
Ustawienia językowe i profil użytkownika:
Wybór języka docelowego (np. angielski, hiszpański, niemiecki).
Przegląd zapisanych fiszek i historii nauki.
Obraz w kamerze: filiżanka
Rozpoznany obiekt: “filiżanka”
Tłumaczenie (angielski): “cup”
Dźwięk: “cup.mp3” (wygenerowany automatycznie przez Text-to-Speech)
Fiszka dodana do zestawu: [PL: filiżanka | EN: cup | wymowa: ✔️]
Użytkownik rozpoznał 5 przedmiotów, dodał je do zestawu fiszek.
Uczy się poprzez odwracane karty – po “filiżanka” widzi “cup” i słyszy wymowę.
Zaznaczył “Umiem” → fiszka zaplanowana na za 3 dni.
Fiszka “nie umiem” wraca do powtórki już za 10 minut.
Rozpoznawanie przedmiotów i tłumaczenie słów.
Generowanie i odsłuchiwanie wymowy.
Dodawanie słów jako fiszki.
Tryb nauki fiszek z prostym wyborem „umiem / nie umiem / zastanawiałem się”.
Harmonogram powtórek oparty o lokalny czas.
Zaprojektuj i zbuduj aplikację, która umożliwia użytkownikom tworzenie i oglądanie wirtualnych graffiti nanoszonych na rzeczywiste budynki lub przestrzeń miejską za pomocą technologii AR. Dzieła są przypisane do konkretnych współrzędnych GPS i są widoczne dla innych użytkowników w tym samym miejscu.
Tryb AR malowania graffiti:
Użytkownik wchodzi w widok kamery.
Może malować graffiti w 3D/2D na ścianach lub płaskich powierzchniach wykrywanych przez system AR (np. ARCore Plane Detection).
Graffiti zostaje zapisane względem lokalizacji GPS i powierzchni wykrytej przez AR.
Współdzielenie graffiti:
Graffiti przypisane jest do lokalizacji.
Inni użytkownicy mogą zobaczyć graffiti pozostawione w danym miejscu, gdy są fizycznie w jego pobliżu.
Przeglądarka graffiti:
Mapa z pinezkami – miejsca z graffiti.
Po kliknięciu można przejść do widoku AR i zobaczyć graffiti w rzeczywistej przestrzeni.
Profil użytkownika:
Lista stworzonych graffiti.
Możliwość edycji, usuwania, nadawania tytułów, tagów.
Lokalna baza danych lub Firebase (opcjonalnie):
Lokalna baza do cache danych o graffiti.
Możesz użyć Firebase Realtime DB lub Firestore do synchronizacji między użytkownikami (jeśli chcesz rozszerzyć projekt).
Miejsce: Plac Zamkowy, Warszawa
Pozycja GPS: 52.2475° N, 21.0132° E
Graffiti: “Free the Art”, wykonane jako czerwony napis + tag autora
Typ powierzchni: pionowa (ściana)
Użytkownik "Anna" stworzyła graffiti na ścianie budynku przy ul. Marszałkowskiej 10.
Użytkownik "Tomek" zbliża się do tej lokalizacji, otwiera aplikację i widzi dzieło Anny na tej samej ścianie, dokładnie w tym samym miejscu dzięki AR.
Może je polubić, oznaczyć lub dodać własne graffiti obok.
Do malowania użyj prostych narzędzi rysowania 2D lub gotowych zasobów tekstur/szablonów (np. spray, pędzel).
Skoncentruj się na dokładnym przymocowaniu graffiti do wykrytej płaszczyzny + zapisaniu jego pozycji GPS i orientacji.
Możesz zaimplementować prosty system synchronizacji danych (np. eksport/import danych lub Firebase Firestore).
Rysowanie i zapisanie graffiti w AR w konkretnej lokalizacji.
Przeglądanie swoich graffiti.
Inni użytkownicy mogą zobaczyć graffiti w tym samym miejscu.
Zbuduj aplikację, która automatycznie synchronizuje się z narzędziami używanymi przez freelancera: śledzenie czasu, zarządzanie projektami, fakturowanie i kalendarz. Gdy użytkownik oznaczy zadanie jako ukończone w narzędziu typu Trello/Asana, aplikacja automatycznie pobiera dane o czasie pracy (np. z Clockify), generuje roboczą fakturę w systemie (np. InvoiceNinja) oraz ustawia przypomnienie w kalendarzu o konieczności jej wysłania.
Integracja z API:
Pobieranie listy zadań z Trello/Asana i obserwacja zmian statusu.
Pobieranie danych o czasie pracy z Toggl lub Clockify.
Tworzenie roboczej faktury w InvoiceNinja/FreshBooks (symulowane).
Dodanie wydarzenia do kalendarza użytkownika.
Zarządzanie zadaniami:
Lista zadań z projektu z oznaczeniem stanu (np. "Nowe", "W trakcie", "Ukończone").
Detale zadania: tytuł, opis, czas pracy (pobrany z narzędzia śledzenia czasu), data ukończenia.
Automatyczne generowanie faktur:
Pobranie danych o kliencie (mockowane).
Wyliczenie kwoty na podstawie stawek godzinowych.
Generowanie widoku faktury do podglądu (PDF lub ekran w aplikacji).
Dodawanie przypomnienia:
Historia synchronizacji i faktur:
Zadanie z Asana: "Landing page redesign"
Status: ukończone
Klient: "Acme Inc."
Czas pracy (z Clockify): 5h 30min
Stawka: 120 zł/h
Wygenerowana faktura:
Kwota: 660 zł
Termin płatności: 7 dni
Przypomnienie w kalendarzu: 18.04.2025 – „Wyślij fakturę do Acme Inc.”
Użytkownik oznaczył zadanie jako „ukończone” w Asana.
Aplikacja pobiera czas z Clockify: 5,5h.
Generuje roboczą fakturę na 660 zł.
Dodaje przypomnienie do systemowego kalendarza na kolejny dzień.
Wpis do historii: „Landing page redesign – faktura utworzona, przypomnienie dodane”
Stwórz aplikację, która codziennie pozwala użytkownikowi zarejestrować swoje samopoczucie w formie krótkiej ankiety i selfie. Aplikacja analizuje nastrój użytkownika (na podstawie tekstu i zdjęcia) i automatycznie dobiera utwór muzyczny pasujący do emocji. Utwór jest uruchamiany za pomocą aplikacji Spotify (API).
Codzienny wpis do dziennika nastroju:
Krótka ankieta z pytaniami (np. Jak się dziś czujesz? Co u Ciebie słychać?).
Opcjonalne dodanie zdjęcia twarzy (selfie).
Analiza nastroju:
Na podstawie odpowiedzi i zdjęcia określany jest nastrój (np. smutny, wesoły, zestresowany, spokojny).
Wersja lokalna może korzystać z prostego dopasowania tekstu i mockowanej analizy obrazu (np. „smutna mina” → smutek).
Dobór muzyki:
Na podstawie nastroju dobierany jest gatunek muzyki (np. wesoły → pop, spokojny → ambient, smutny → piano).
Generowanie URI do utworu z użyciem Spotify Web API lub otwarcie odpowiedniego linku Spotify w aplikacji.
Historia nastrojów i muzyki:
Baza Danych:
Odpowiedzi w ankiecie: "Czuję się przytłoczony, zmęczony po pracy"
Selfie: Zdjęcie twarzy z neutralnym wyrazem (symulowane)
Nastrój wykryty: "zmęczenie/smutek"
Wybrany gatunek: "lo-fi chill"
Utwór: „Chillhop Essentials – Fall 2022” (Spotify URI)
Użytkownik wypełnia ankietę i dodaje selfie.
Aplikacja przypisuje nastrój: "nostalgia"
Odtwarza utwór z Spotify: „Deep Focus”
Zapisuje wpis w historii: 15.04.2025 – nastrój: nostalgia – utwór: „Deep Focus” – selfie zapisane.
Dla analizy tekstu możesz użyć prostego mapowania słów kluczowych (np. smutny, wesoły, zmęczony) do emocji.
Zaimplementuj mockowaną analizę selfie: np. losowy wybór nastroju lub wykorzystanie nazw plików z emocją.
Aplikacja powinna działać płynnie bez internetu – tylko uruchomienie Spotify wymaga połączenia.
Stwórz aplikację, która umożliwia użytkownikom wspólne pisanie opowieści w trybie asynchronicznym. Każdy użytkownik może rozpocząć nową historię od jednego zdania lub akapitu, a kolejni – zaproszeni lub losowo przydzieleni – dopisują własne fragmenty. Powstają różne wersje fabularne (rozgałęzienia), na które użytkownicy mogą głosować, wybierając najbardziej interesującą kontynuację.
Tworzenie historii:
Użytkownik zakłada nową historię, wpisując pierwsze zdanie lub akapit.
Może oznaczyć historię jako „otwartą” (dla losowych użytkowników) lub „prywatną” (dla zaproszonych).
Dopisanie fragmentu historii:
Użytkownik widzi ostatni fragment i może dopisać swój.
Możliwe jest tworzenie wielu kontynuacji (rozgałęzień) w tym samym miejscu historii.
Głosowanie na kontynuacje:
Każdy fragment może być oceniany przez innych użytkowników.
Fragment z największą liczbą głosów staje się „główną linią fabularną”.
Przeglądarka historii:
Użytkownik może przeglądać istniejące historie jako drzewo rozgałęzień.
Możliwość eksploracji alternatywnych zakończeń i gałęzi.
Profil użytkownika:
Lista utworzonych fragmentów i historii.
Liczba głosów otrzymanych i „fabularnych hitów”.
Historia: „Noc była ciemna, a w lesie słychać było tylko skrzypienie drzew…”
Dopisany fragment: „…aż nagle z krzaków wyłoniła się postać odziana w długą pelerynę.”
Alternatywny fragment: „…ale zamiast ciszy, rozległ się dźwięk startującego drona.”
Głosy: Pierwszy fragment – 18 głosów, drugi – 5.
Użytkownicy stworzyli historię z 10 fragmentami, 3 rozgałęzieniami.
Fragment z największą liczbą głosów na poziomie 3. wyznacza główną oś fabularną.
Inny użytkownik może „klonować” alternatywną wersję i stworzyć osobną historię bazującą na tym wątku.(opcjonalne)
Struktura danych może przypominać drzewo: każdy fragment posiada ID i ID rodzica (czyli poprzedniego fragmentu).
Możesz zastosować lokalną bazę z modelem Story
, StoryNode
, Vote
, User
.
Jeśli chcesz dodać synchronizację, Firebase Firestore doskonale się nadaje.
Możliwość dodania nowej historii i dopisywania kolejnych fragmentów.
Przegląd drzewa historii.
Głosowanie na kontynuacje.
Historia rozwijana w czasie rzeczywistym (lokalnie lub online).
Zbuduj aplikację, która pozwala użytkownikowi wprowadzić dane klienta (adres oraz godzinę spotkania), a następnie automatycznie przypomina mu z wyprzedzeniem (np. 15 minut wcześniej), kiedy musi wyruszyć z obecnej lokalizacji, by dotrzeć punktualnie na miejsce.
Dodawanie spotkania:
Nazwa klienta.
Adres spotkania (w formie tekstowej lub wybór na mapie).
Data i godzina spotkania.
Czas potrzebny na przygotowanie się (opcjonalnie).
Obliczanie czasu dojazdu:
Aplikacja określa aktualną lokalizację użytkownika.
Oblicza szacowany czas podróży na podstawie map (może być mockowana lub pobierana z Google Maps Directions API, jeśli API ma być używane).
Ustala, o której trzeba najpóźniej wyjechać, by dotrzeć punktualnie.
System przypomnień:
Powiadomienie pojawia się, gdy zbliża się czas wyjazdu (np. 15 minut przed).
Możliwość ustawienia własnych progów powiadomień (np. 30, 15, 5 minut przed).
Ekran listy spotkań:
Lista przyszłych spotkań z informacją o czasie do wyjazdu.
Kolorowe oznaczenia: spóźnione, dziś, jutro, zaplanowane na później.
Mapa lokalizacji klienta:
Wyświetlenie lokalizacji klienta i trasy dojazdu (opcjonalnie).
Możliwość uruchomienia nawigacji z poziomu aplikacji.
Klient: "Jan Nowak"
Adres: "ul. Kwiatowa 15, Kraków"
Data i godzina spotkania: 16.04.2025, godz. 13:00
Obecna lokalizacja użytkownika: "ul. Długa 3, Kraków"
Obliczony czas przejazdu: 20 minut
O 12:25 użytkownik otrzymuje powiadomienie:
"Czas wyruszyć na spotkanie z Janem Nowakiem przy ul. Kwiatowej 15. Zostało 15 minut do wyjazdu!"
Kliknięcie w notyfikację otwiera ekran spotkania z opcją rozpoczęcia nawigacji.
Jeżeli nie używasz Directions API, przyjmij średni czas podróży z tabeli (np. 1 km = 1,5 min dla samochodu w mieście).
Użytkownik może edytować i usuwać spotkania.
Dodawanie spotkań z nazwą, lokalizacją i godziną.
Obliczanie i zapisywanie planowanego czasu wyjazdu.
Powiadomienia z przypomnieniem.
Lista spotkań z informacją o czasie do wyjazdu.
Stwórz w pełni funkcjonalną aplikację, której głównym celem jest motywowanie użytkownika do codziennego wykonywania nawyków poprzez elementy gry RPG: zdobywanie punktów doświadczenia, złota, przedmiotów, rozwijanie postaci i walka z potworami w przypadku niewykonania zadań.
Rejestracja i logowanie użytkownika
Ekran główny z listą nawyków (questów) – każdy quest to przypisany cel do wykonania dzisiaj.
Dodawanie nowych nawyków – z nazwą, opisem, kategorią, ikoną i częstotliwością (codziennie, kilka razy w tygodniu itp.).
System RPG:
Postać użytkownika posiada: level, exp, HP, złoto, ekwipunek, statystyki (np. siła, inteligencja).
Wykonanie nawyku = exp + złoto + szansa na przedmiot.
Pominięcie nawyku = potwór atakuje postać → utrata HP.
Ekran profilu postaci – wizualna prezentacja awatara, poziomu, postępu, ekwipunku.
Ekran potworów i log walki – lista "ataków" jakie zaszły z powodu niewykonanych zadań.
System poziomowania – po zdobyciu odpowiedniego exp, użytkownik awansuje, wzrastają jego statystyki.
Baza danych do przechowywania nawyków, postępów i stanu postaci.
Nawyk: "Wypij 2 litry wody"
Typ: Zdrowie
Częstotliwość: Codziennie
Poziom postaci: 3
Exp: 250/300
HP: 80/100
Złoto: 120
Ekwipunek: [„Zbroja dyscypliny”, „Miecz skupienia”]
Użytkownik wykonał 3 z 4 nawyków → dostaje 60 exp, 30 złota, zdobywa nowy hełm.
1 nawyk pominięty → potwór "Prokrastynator" atakuje → -10 HP.
Poziom postaci wzrasta na 4, statystyki się zwiększają.
Ustal jasno, jak liczysz punkty, jakie są szanse na przedmiot, jak działają walki – mogą to być proste algorytmy lub tabele.
Możesz zastosować podstawowy system losowości
System awatara może być prosty – np. zmienne ikony lub obrazki.
Zaprojektuj aplikację, która automatycznie pobiera historię transakcji z kont bankowych użytkownika (poprzez API PSD2), klasyfikuje je wg ustalonych reguł, porównuje z miesięcznym budżetem, przypomina o zbliżających się płatnościach (np. rachunki, subskrypcje), i wysyła ostrzeżenia o przekroczeniu wydatków w poszczególnych kategoriach.
Integracja z bankiem przez API (np. PSD2):
Użytkownik loguje się przez zewnętrzne autoryzowane połączenie.
Historia transakcji (ostatnie np. 30 dni) jest synchronizowana i zapisywana lokalnie.
Automatyczna kategoryzacja wydatków:
Aplikacja klasyfikuje transakcje wg kategorii: jedzenie, transport, zakupy, rachunki, rozrywka itd.
Reguły oparte na nazwie odbiorcy, opisie transakcji lub ręczne przez użytkownika.
Użytkownik może tworzyć własne reguły (np. każda transakcja zawierająca "Netflix" = Rozrywka).
Budżetowanie i analiza:
Użytkownik ustala miesięczne limity dla każdej kategorii.
System porównuje wydatki z budżetem.
Na ekranie widoczny jest procent zużycia budżetu w każdej kategorii.
System przypomnień o rachunkach:
Rachunki rozpoznawane z historii transakcji (cykliczne płatności) lub wpisywane ręcznie / pobierane z kalendarza.
Przypomnienie na dzień/dwa przed terminem.
Możliwość oznaczenia rachunku jako opłacony.
Powiadomienia i alerty:
Alert: „Wydatki na rozrywkę przekroczyły 90% limitu budżetowego!”
Alert: „Zbliża się płatność za prąd – 2 dni do terminu.”
Transakcja: “Biedronka Kraków”, -48.76 zł, 12.04.2025
System przypisuje: Kategoria: “Jedzenie”
Budżet na jedzenie: 600 zł
Wydano: 570 zł → 95% → Alert!
Aplikacja wykrywa, że 14.04. ma być płatność za Internet (z historii – płacona co miesiąc 14.)
Użytkownik otrzymuje 12.04 powiadomienie:
"Zbliża się płatność: Internet – 79.99 zł"
System informuje, że wydatki na transport przekroczyły już limit, mimo że miesiąc się nie skończył.
Użytkownik modyfikuje budżet i dostaje zalecenie ograniczenia zakupów w tej kategorii.
Kategoryzacja może być oparta na słownikach fraz kluczowych lub ML modelu.
API sandboxowe (np. Nordigen, TrueLayer w trybie testowym) może być wykorzystane do symulacji bankowego połączenia.
Obsługuj sytuacje braku Internetu (cache transakcji i późniejsza synchronizacja).
Ręczne dodawanie transakcji + podstawowe kategorie.
Ustawianie budżetu na kategorie.
Alerty przy przekroczeniu limitu.
Ręczne dodawanie rachunków + przypomnienia.
Zbuduj aplikację, która w czasie rzeczywistym (lub z ustaloną częstotliwością) śledzi lokalizację znajomego oraz przedstawia ją na mapie. Użytkownik może zobaczyć, gdzie aktualnie przebywa jego kolega, jak długo w danym miejscu się zatrzymał oraz jaka była jego dzienna trasa.
Zgoda i dostęp do lokalizacji:
Aplikacja pyta o pozwolenie na dostęp do lokalizacji w tle i w czasie rzeczywistym.
Lokalizacja użytkownika jest zapisywana lokalnie lub (opcjonalnie) udostępniana innym użytkownikom (np. przez współdzielenie danych z pliku/serwera w przyszłości).
Mapa z lokalizacją kolegi:
Na mapie (Google Maps) widoczna jest aktualna pozycja kolegi.
Dodatkowe informacje: od jak dawna się tam znajduje (czas postoju).
Zapis i prezentacja dziennej trasy:
Śledzenie ruchu kolegi przez cały dzień – zapis kolejnych punktów GPS z godziną.
Wizualizacja przebytej trasy na mapie jako linia Polyline
.
Ekran historii lokalizacji:
Baza danych:
Zapis punktów GPS (czas, długość/szerokość geograficzna).
Obliczanie czasu spędzonego w jednym miejscu na podstawie niezmieniającej się lokalizacji.
Punkty GPS (symulacja trasy):
10:00 – 50.061, 19.938 → Rynek Główny
10:15 – 50.061, 19.938 → brak ruchu
11:00 – 50.067, 19.944 → Wawel
11:30 – 50.072, 19.950 → Błonia
Obliczenie:
Postój: Rynek Główny – 45 min
Całkowita trasa: 4 punkty, 2,3 km
Na mapie widoczna ostatnia lokalizacja znajomego – Wawel.
W dymku nad pinezką: „Ostatnio widziany: 11:30, czas postoju: 30 min”
Trasa z całego dnia narysowana linią Polyline
, możliwa do kliknięcia punkt po punkcie.
Możliwość przeglądania dnia wczorajszego – inna trasa.
Lokalizacje zapisywane mogą zawierać pola: timestamp
, latitude
, longitude
.
Czas postoju obliczysz jako różnicę czasu przy niezmienionych koordynatach.
Wykorzystaj Google Maps SDK
do oznaczania punktów (Marker
) oraz rysowania trasy (Polyline
).
Wprowadź tryb dwóch użytkowników w jednej aplikacji – jeden śledzi, drugi udostępnia.
Zbuduj aplikację, która pozwala użytkownikowi nagrywać polecenia głosowe typu „Muszę kupić mleko na jutro”, rozpoznaje mowę i przekształca je w tekst, a następnie tworzy z tego zadanie z określoną datą. Zadanie zostaje dodane do listy zadań w aplikacji lub – opcjonalnie – przesłane do zewnętrznego systemu zarządzania zadaniami (np. mock Asana lub Trello).
Rejestrator głosowy z rozpoznawaniem mowy:
Użytkownik naciska przycisk i wypowiada polecenie.
Aplikacja wykorzystuje systemowe API rozpoznawania mowy np. dla Androida (SpeechRecognizer
) do konwersji audio na tekst.
Analiza treści wypowiedzi:
Aplikacja wykrywa treść zadania i przybliżoną datę (np. "jutro", "za dwa dni").
Jeśli data jest niejasna, użytkownik może ją wybrać ręcznie w kalendarzu.
Tworzenie zadania:
Po analizie tekstu, aplikacja automatycznie uzupełnia formularz zadania.
Użytkownik może go zatwierdzić lub edytować.
Lista zadań:
Widok wszystkich zadań z datami, filtrowanie po dacie.
Możliwość oznaczenia zadania jako wykonane lub usunięcia.
Baza danych:
Nagranie użytkownika: „Muszę zapłacić rachunek za prąd w piątek”
Rozpoznany tekst: „Muszę zapłacić rachunek za prąd w piątek”
Wydobyte zadanie: „Zapłacić rachunek za prąd”
Ustalona data: najbliższy piątek (na podstawie dzisiejszej daty)
Dodane zadanie:
Treść: „Zapłacić rachunek za prąd”
Data: 19.04.2025
Status: otwarte
Użytkownik mówi: „Kupić mleko jutro rano”
Aplikacja rozpoznaje: Treść → „Kupić mleko”, Data → „jutro”
Użytkownik zatwierdza → zadanie pojawia się w liście zadań
Ekran pokazuje: „Kupić mleko – 17.04.2025 – status: do zrobienia”
Do wykrycia daty możesz użyć prostego parsera tekstu lub warunków if–else (np. „jutro”, „w poniedziałek”).
Obsłuż przypadki niejednoznaczne – zaproponuj datę ręcznie.
Baza danych powinna zawierać: id
, content
, date
, created_at
, status
.
Możesz rozbudować system o powiadomienia przypominające o zadaniu.
Stwórz aplikację, która automatycznie uruchamia skonfigurowane środowisko pracy głębokiej (deep work) na podstawie zaplanowanego bloku w kalendarzu. Aplikacja wycisza powiadomienia, aktywuje tryb "Nie przeszkadzać", odtwarza playlistę wspierającą skupienie oraz blokuje dostęp do funkcji telefonu lub systemu na czas sesji. Odblokowanie możliwe tylko po wpisaniu złożonego hasła. Po zakończeniu sesji – wszystkie ustawienia wracają do stanu pierwotnego.
Integracja z kalendarzem systemowym:
Wyszukiwanie zdarzeń zawierających słowa kluczowe (np. „Głęboka praca”, „Deep Work”).
Rozpoznanie rozpoczęcia i zakończenia bloku.
Automatyczne ustawienia środowiska:
Wyciszenie powiadomień.
Aktywacja trybu "Nie przeszkadzać".
Uruchomienie playlisty Spotify.
Blokada funkcji telefonu:
Na czas sesji zablokowany dostęp do:
Ekranu głównego
Przeglądarki
Aplikacji komunikacyjnych (np. SMS, dzwonienie, Messenger)
Odblokowanie tylko przez podanie ustalonego przez użytkownika złożonego hasła.
Zakończenie bloku:
Automatyczne przywrócenie wcześniejszych ustawień po zakończeniu wydarzenia.
Możliwość zapisania notatki podsumowującej sesję (opcjonalnie).
Lokalna konfiguracja:
Użytkownik może ustawić:
Słowa kluczowe dla kalendarza
Playlistę Spotify
Złożone hasło blokady
Aplikacje objęte blokadą
W kalendarzu:
Ustawienia użytkownika:
Hasło: Q9&xZ!k*20
Blokowane aplikacje: np. Chrome, Wiadomości, Telefon
Playlista: „Lo-Fi Focus Beats” (Spotify URI)
09:59 – aplikacja wykrywa start bloku.
Automatycznie:
Tryb "Nie przeszkadzać" aktywowany
Playlista startuje w Spotify
Przeglądarka i inne wybrane aplikacje stają się niedostępne
Użytkownik próbuje otworzyć Chrome – pojawia się ekran z prośbą o hasło.
11:30 – aplikacja przywraca dźwięki, dezaktywuje blokadę, zatrzymuje Spotify.
Pamiętaj o zarządzaniu dostępem do kalendarza.
Hasło powinno być zaszyfrowane lokalnie
Stwórz dynamiczną grę, w której gracz steruje kolorową platformą na dole ekranu i musi dopasować jej kolor do spadających obiektów. Jeśli kolory się nie zgadzają – gra się kończy. Wraz z upływem czasu, tempo spadania obiektów rośnie, a na ekranie pojawiają się specjalne elementy – bomby (natychmiastowa porażka) lub bonusy (spowolnienie, punkty, dodatkowe życie).
Platforma gracza (sterowanie):
Umieszczona na dole ekranu, zmienia kolor na czerwony / zielony / niebieski / żółty itp.
Zmiana koloru następuje po naciśnięciu odpowiedniego przycisku.
Spadające obiekty:
Losowo generowane obiekty w różnych kolorach, które spadają z góry ekranu.
Każdy obiekt ma przypisany kolor oraz typ: normalny, bomba, bonus.
Logika kolizji:
Jeśli kolor obiektu ≠ kolor platformy → koniec gry.
Jeśli kolor pasuje → gracz zdobywa punkt.
Bonusy: np. „+1 punkt”, „spowolnienie na 5 sekund”.
Bomby: natychmiastowy game over (nawet przy dobrym kolorze).
Zarządzanie tempem gry:
Tempo spadania obiektów zwiększa się co X sekund lub po zdobyciu X punktów.
Gra kończy się tylko w przypadku błędu – nie ma maksymalnego poziomu.
Ekrany gry:
Menu startowe z przyciskiem "Graj"
Ekran gry z platformą, przyciskami zmiany koloru i spadającymi obiektami
Ekran „Game Over” z wynikiem i możliwością restartu
Czas gry: 35 sekund
Spadające obiekty:
3x czerwony → poprawnie trafione
1x bomba → trafiona przy dopasowaniu → koniec gry
1x żółty → platforma miała inny kolor → koniec gry
Obiekty bonusowe: 1x „+2 punkty”
Gracz zmienia kolory platformy klikając przyciski.
Trafia 8 obiektów poprawnie, po czym źle dopasowuje kolor – gra kończy się.
Na ekranie końcowym pojawia się:
„Wynik: 8 – Spróbuj ponownie?”
Rysuj obiekty za pomocą Canvas
Do zarządzania stanem gry użyj klas GameManager
, ScoreManager
, ObjectSpawner
.
Kolizje możesz sprawdzać przez porównanie pozycji obiektu i platformy w danym momencie.
Tempo kontroluj z modyfikowanym interwałem.
Zbuduj aplikację głosowania, w której moderatorzy tworzą "pokoje" z tematami do głosowania, a użytkownicy dołączają za pomocą unikalnego kodu. Głosowania odbywają się w czasie rzeczywistym. Każde głosowanie może być zakończone przez moderatora, a na koniec cała sesja (pokój) kończy się automatycznie generowanym podsumowaniem PDF.
Role:
Moderator – tworzy pokój, dodaje pytania, kończy głosowania, zamyka pokój.
Użytkownik – dołącza do pokoju wpisując kod, głosuje na podane opcje.
Pokoje głosowań:
Moderator tworzy pokój (np. "Wycieczka szkolna") – generowany jest kod dostępu (np. 6 cyfr).
Pokoje mają unikalny identyfikator i są aktywne, dopóki moderator ich nie zamknie.
Głosowania w pokoju:
Moderator dodaje pytanie i opcje odpowiedzi (np. "Gdzie ma odbyć się wycieczka?", opcje: Zakopane, Kraków, Gdańsk).
Użytkownicy widzą pytanie w czasie rzeczywistym i mogą głosować na jedną z opcji.
Wyniki głosowania:
Dynamiczna aktualizacja liczby głosów i procentowego rozkładu.
Po zakończeniu głosowania przez moderatora – prezentacja wyników (wykres słupkowy / lista).
Zamknięcie pokoju:
Moderator może zakończyć cały pokój.
Aplikacja generuje PDF zawierający wszystkie pytania, opcje, wyniki i liczbę głosujących.
PDF zapisany lokalnie lub dostępny do udostępnienia.
Pokój: „Wycieczka szkolna”, kod: 394817
Głosowanie 1: „Czy chcesz, aby wycieczka była w Zakopanem?”
Opcje: Zakopane, Gdańsk, Kraków
Głosy: 10 (Zakopane – 6, Gdańsk – 3, Kraków – 1)
Głosowanie 2: „Czy ma być 2-dniowa?”
Opcje: Tak, Nie
Głosy: 8 (Tak – 7, Nie – 1)
Moderator tworzy pokój i udostępnia kod 394817
.
12 użytkowników dołącza i oddaje głosy.
Po zakończeniu głosowania wyniki wyświetlają się w formie:
Zakopane – 60% (6 głosów)
Gdańsk – 30% (3 głosy)
Kraków – 10% (1 głos)
Po zamknięciu pokoju – aplikacja generuje PDF z podsumowaniem i zapisuje go w bazie danych.
Kod pokoju może być generowany losowo jako 6-cyfrowy numer.
Głosowania mogą być reprezentowane jako encje: Room
, Vote
, Question
, Option
, Result
.
Dynamiczne przeliczanie wyników.
Do PDF możesz zastosować Canvas
w PdfDocument
, narysuj wyniki tekstowo lub graficznie.
Interfejs dla użytkownika i moderatora może być różny.
Zbuduj aplikację, która analizuje sylwetkę użytkownika siedzącego przed kamerą telefonu, ocenia jego postawę oraz udziela głosowych wskazówek korekcyjnych w czasie rzeczywistym. Aplikacja powinna także rejestrować historię błędnych i prawidłowych pozycji oraz dostosowywać komunikaty na podstawie trendów użytkownika.
Detekcja postawy siedzącej:
Kamera analizuje użytkownika siedzącego przed telefonem (np. na laptopie, telefon na statywie).
Wykrywanie pozycji głowy, pleców, ramion i kręgosłupa (np. pochylona głowa, garbienie się, opadnięte ramiona).
Wskazówki korekcyjne w czasie rzeczywistym:
Głosowe komunikaty: „Usiądź prosto”, „Unieś brodę”, „Cofnij ramiona”.
Wydawane, gdy pozycja niepoprawna przez dłużej niż 10 sekund.
Tryb pracy przy biurku:
Sesje 20–60 min, w których aplikacja stale monitoruje postawę.
Możliwość ustawienia przypomnień np. co 30 min: „Zrób krótką przerwę”.
Statystyki i historia:
Wykresy przedstawiające czas w prawidłowej postawie vs. zgarbienie.
Powtarzające się błędy i rekomendacje korekty na przyszłość.
System personalizacji ML (Opcjonalnie):
Aplikacja uczy się, które elementy postawy użytkownik najczęściej psuje.
Dopasowuje częstotliwość i typ komunikatów oraz buduje „profil ergonomii”.
Użytkownik siedzi z głową pochyloną 20 stopni w przód, plecy zaokrąglone.
Aplikacja wykrywa przez 15 sekund błędną pozycję.
Komunikat: „Wyprostuj plecy i trzymaj głowę prosto”.
Sesja 30 minut.
Użytkownik był w prawidłowej pozycji przez 19 minut, 11 minut zgarbiony.
Najczęstszy błąd: pochylona głowa (67% przypadków).
Rekomendacja: ustawić monitor wyżej, przypomnienia co 15 minut.
Użyj MediaPipe Pose do detekcji punktów: nose
, shoulders
, hips
, ears
.
Oblicz kąty (np. linia od bioder do barków) – odchylenie od pionu > 15° = niepoprawna postawa.
Głosowe komunikaty inicjuj po czasie > 10s nieprawidłowej pozycji.
Zbieraj dane lokalnie: czas poprawnej postawy, typy błędów, czas trwania sesji.
Tryb monitorowania postawy podczas siedzenia.
Wykrywanie zgarbionej sylwetki.
Proste komunikaty głosowe.
Historia sesji i statystyki poprawności.
Stwórz aplikację, której zadaniem jest monitorowanie cen produktów z listy życzeń użytkownika w wielu sklepach internetowych, analizowanie dostępnych kodów rabatowych oraz ocen i recenzji. Gdy pojawi się korzystna oferta lub cena spadnie poniżej ustalonego progu, użytkownik otrzyma powiadomienie.
Ekran powitalny i rejestracja/logowanie użytkownika
Ekran główny: Lista życzeń użytkownika (wishlist) – możliwość dodania produktu z nazwą, linkiem, kategorią, zdjęciem, progiem cenowym i opisem.
System monitorowania cen:
Symulowany fetch cen z kilku sklepów (np. Amazon, Ceneo, Allegro – dane mogą być w formie statycznych JSONów lub mockowanych obiektów).
Porównanie aktualnej ceny z progiem ustawionym przez użytkownika.
System kodów rabatowych i opinii(opcjonalne):
Generowanie losowego „znalezionego” kodu rabatowego do testu (można zasymulować).
Wczytanie recenzji (symulowane opinie z pliku JSON) i analiza, czy są pozytywne.
Powiadomienia:
Historia okazji – zapis kiedy produkt był "na promocji", kiedy użytkownik został powiadomiony.
Baza danych – do przechowywania listy produktów, stanu powiadomień, historii.
Produkt: "Słuchawki Bose QuietComfort 45"
Kategoria: Elektronika
Cena docelowa: 999 zł
Aktualna cena w sklepach (symulacja):
Amazon: 1199 zł
Ceneo: 999 zł
Allegro: 1040 zł
Opinie (JSON): ["Super jakość dźwięku!", "Trochę drogie, ale warto", "Najlepsze słuchawki jakie miałem"]
Aplikacja wykrywa, że na Ceneo cena spadła do 999 zł (próg osiągnięty).
Sprawdza opinie – 80% pozytywnych.
Powiadomienie: „🔥 Okazja! Twoje słuchawki są dostępne za 999 zł z pozytywnymi opiniami! Sprawdź teraz.”
Zapis do historii okazji.
Zbuduj struktury danych tak, jakbyś miał kiedyś podpiąć prawdziwe API (np. Retrofit, Volley).
Przechowuj informacje w bazie danych (wishlist, historia).
Dodaj personalizację w UI (np. kategorie ikon).
Powiadomienia mogą działać na bazie harmonogramu (np. WorkManager
codziennie o 9:00 sprawdza ceny).