{"id":49540258,"url":"https://github.com/ztacole/dicoding-event","last_synced_at":"2026-05-02T15:04:06.126Z","repository":{"id":353270842,"uuid":"1202081304","full_name":"ztacole/dicoding-event","owner":"ztacole","description":"Final project of Dicoding 'Belajar Fundamental Android' course","archived":false,"fork":false,"pushed_at":"2026-04-23T06:09:44.000Z","size":12737,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-04-23T08:14:52.585Z","etag":null,"topics":["android","jetpack-compose","koin-kotlin","kotlin","kotlin-coroutines","ktor-client","mvi-android","navigation-3","room-database"],"latest_commit_sha":null,"homepage":"","language":"Kotlin","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/ztacole.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-04-05T15:15:34.000Z","updated_at":"2026-04-23T06:13:55.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/ztacole/dicoding-event","commit_stats":null,"previous_names":["ztacole/dicoding-event"],"tags_count":1,"template":false,"template_full_name":null,"purl":"pkg:github/ztacole/dicoding-event","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ztacole%2Fdicoding-event","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ztacole%2Fdicoding-event/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ztacole%2Fdicoding-event/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ztacole%2Fdicoding-event/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ztacole","download_url":"https://codeload.github.com/ztacole/dicoding-event/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ztacole%2Fdicoding-event/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32538269,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-02T12:25:33.646Z","status":"ssl_error","status_checked_at":"2026-05-02T12:24:51.733Z","response_time":132,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["android","jetpack-compose","koin-kotlin","kotlin","kotlin-coroutines","ktor-client","mvi-android","navigation-3","room-database"],"created_at":"2026-05-02T15:04:00.651Z","updated_at":"2026-05-02T15:04:06.121Z","avatar_url":"https://github.com/ztacole.png","language":"Kotlin","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Dicoding Event App\n\nA modern Android application designed to browse, manage, and track upcoming and past events. This project serves as a showcase for implementing high-performance, reactive UI and modular architecture in a native Android environment.\n\n## 🚀 Tech Stack\n\nThe project is built using the latest industry-standard libraries and tools:\n\n* **UI Framework:** [Jetpack Compose](https://developer.android.com/jetpack/compose) for a fully declarative and reactive user interface.\n* **Navigation:** [Navigation 3 (Nav3)](https://developer.android.com/guide/navigation/navigation-kotlin-dsl) for type-safe and efficient screen transitions.\n* **Networking:** [Ktor Client](https://ktor.io/docs/client-dependencies.html) for lightweight and asynchronous API requests.\n* **Dependency Injection:** [Koin](https://insert-koin.io/) for pragmatic and developer-friendly DI.\n* **Local Database:** [Room Persistence](https://developer.android.com/training/data-storage/room) for caching event data and managing favorites.\n* **Image Loading:** [Coil](https://coil-kt.github.io/coil/) for fast and memory-efficient image processing.\n\n## 🏗️ Architecture\n\nThis project follows the **MVI (Model-View-Intent)** architectural pattern to ensure a unidirectional data flow and predictable state management.\n\n\n* **Model:** Represents the single source of truth (State) for the UI.\n* **View:** Listens to state changes and renders the UI accordingly.\n* **Intent:** Captures user actions and dispatches them to be processed, ensuring clear separation of concerns.\n\n## ✨ Features\n\n* **Event Listing:** Browse through upcoming and past events fetched from the Dicoding API.\n* **Detailed View:** Comprehensive information about each event, including schedules and descriptions.\n* **Search \u0026 Filtering:** Quickly find events based on specific keywords.\n* **Local Persistence:** Access previously loaded events offline and save your favorite events via Room database.\n* **Responsive Design:** Optimized for various screen sizes and orientations.\n\n## 🛠️ Project Structure\n\n```text\napp/\n├── data/\n│   ├── local/          # Room DB, DAOs, and Entities\n│   ├── remote/         # Ktor API Service and DTOs\n│   └── repository/     # Data source coordination\n├── di/                 # Koin modules configuration\n├── ui/\n│   ├── components/     # Reusable Compose widgets\n│   ├── navigation/     # Nav3 route definitions\n│   └── screen/         # UI Screens and MVI ViewModels\n└── util/               # Extension functions and constants\n```\n\n## ⚙️ Installation\n\n1. Clone the repository:\n   ```bash\n   git clone https://github.com/ztacole/dicoding-event.git\n   ```\n2. Open the project in **Android Studio (Ladybug or newer)**.\n3. Sync the project with Gradle files.\n4. Run the application on an emulator or physical device.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fztacole%2Fdicoding-event","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fztacole%2Fdicoding-event","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fztacole%2Fdicoding-event/lists"}