An open API service indexing awesome lists of open source software.

https://github.com/marcinwitnik/tasks-compose-app

Aplikacja do zarządzania notatkami stworzona w architekturze MVVM, z wykorzystaniem Jetpack Compose, Room i Kotlin Coroutines. Przejrzysty interfejs, łatwa obsługa, lokalna baza danych i tryb ciemny.
https://github.com/marcinwitnik/tasks-compose-app

android dark-theme jetpack-compose kotlin note-taking notes notes-app room

Last synced: 7 days ago
JSON representation

Aplikacja do zarządzania notatkami stworzona w architekturze MVVM, z wykorzystaniem Jetpack Compose, Room i Kotlin Coroutines. Przejrzysty interfejs, łatwa obsługa, lokalna baza danych i tryb ciemny.

Awesome Lists containing this project

README

          


Aplikacja Mobilna: Lista Zadań w Kotlin

Ten projekt to **prosta i funkcjonalna aplikacja mobilna do zarządzania listą zadań (TODO)**, stworzona w języku Kotlin z wykorzystaniem Android Studio. Pozwala użytkownikowi na dodawanie i edytowanie notatek. Dane przechowywane są lokalnie za pomocą **Room Database**. Aplikacja została stworzona z wykorzystaniem wzorca architektonicznego **MVVM**, co zapewnia przejrzystość i łatwość w rozbudowie projektu.

---

## Technologie i środowisko

- **Język:** [![Kotlin](https://img.shields.io/badge/Kotlin-7F52FF?style=flat&logo=kotlin&logoColor=white)](https://kotlinlang.org/docs/home.html)
- **Środowisko IDE:** [![Android Studio](https://img.shields.io/badge/Android%20Studio-3DDC84?style=flat&logo=android-studio&logoColor=white)](https://developer.android.com/studio)
- **Running devices:** samsung SM-A346B •
- **Biblioteki:**
- Room – lokalna baza danych do przechowywania zadań
- LiveData – obserwowalność zmian danych
- ViewModel – logika biznesowa oddzielona od widoku
- RecyclerView – efektywne renderowanie listy zadań
- Material Components – stylizacja aplikacji
- Navigation Component – zarządzanie nawigacją między ekranami

---

Funkcje programu (kliknij, aby rozwinąć)

---

📄 MainActivity.kt – główna aktywność (kliknij, aby rozwinąć)

- Inicjalizuje całą aplikację Compose.
- Ustawia motyw (jasny/ciemny) z możliwością przełączania.
- Obsługuje nawigację pomiędzy ekranami listy i edycji notatek.
- Inicjalizuje bazę danych i ViewModel z repozytorium.
- Przykładowo usuwa wszystkie notatki przy starcie (do testów).

---

📄 Note.kt – model danych (kliknij, aby rozwinąć)

- Klasa danych reprezentująca notatkę.
- Oznaczona jako `@Entity` dla Room Database.
- Pola: `id`, `title`, `content`.

---

📄 NoteDao.kt – interfejs DAO (kliknij, aby rozwinąć)

- Udostępnia operacje na bazie danych:
- `getAllNotes()`: zwraca wszystkie notatki jako `Flow>`
- `getNoteById(id)`: pobiera notatkę po ID
- `addNote(note)`: dodaje lub aktualizuje notatkę
- `deleteNote(note)`: usuwa notatkę
- `deleteAllNotes()`: usuwa wszystkie notatki

---

📄 NoteDatabase.kt – konfiguracja bazy danych (kliknij, aby rozwinąć)

- Tworzy bazę danych Room z encją `Note` i DAO `NoteDao`.
- Zawiera mechanizm singletonowy dla jednej instancji bazy.

---

📄 NoteRepository.kt – warstwa pośrednia (kliknij, aby rozwinąć)

- Oddziela logikę bazodanową od ViewModelu.
- Udostępnia metody `addNote`, `getNoteById`, `deleteNote`, `deleteAllNotes`.
- `notes`: przepływ wszystkich notatek jako `Flow>`.

---

📄 NoteViewModel.kt – logika widoku (kliknij, aby rozwinąć)

- Łączy repozytorium z interfejsem UI.
- Przechowuje i aktualizuje listę notatek oraz notatkę aktualnie edytowaną.
- Udostępnia metody: `addNote`, `updateNote`, `deleteNote`, `loadNote`, `clearCurrentNote`.

---

📄 AddEditNoteScreen.kt – ekran dodawania/edycji notatki (kliknij, aby rozwinąć)

- Dynamiczny ekran służący do dodawania lub edytowania notatki.
- Obsługuje wprowadzenie tytułu i treści notatki.
- Używa ViewModelu do załadowania notatki i zapisania zmian.
- Zawiera przyciski: „Zapisz” i „Anuluj”.

---

📄 NoteListScreen.kt – ekran listy notatek (kliknij, aby rozwinąć)

- Wyświetla listę wszystkich notatek.
- Umożliwia przejście do ekranu edycji po kliknięciu na notatkę.
- Zawiera przycisk do przełączenia motywu (jasny/ciemny).
- Posiada `FloatingActionButton` do dodawania nowych notatek.

---

📄 NoteCard.kt – komponent UI notatki (kliknij, aby rozwinąć)

- Komponent wyświetlający pojedynczą notatkę w formie karty.
- Umożliwia kliknięcie i przejście do edycji notatki.
- Styl oparty na Material3 z tytułem i treścią.

---

Podgląd działania (kliknij, aby rozwinąć)

Poniżej przykładowe wyniki działania aplikacji: