Skip to content

🎲 BoardGameGeek collections explorer application using Compose, Koin, Flow, Room, Work Manager based on MVVM architecture.

License

BSD-3-Clause, BSD-3-Clause licenses found

Licenses found

BSD-3-Clause
LICENSE.md
BSD-3-Clause
copyright.txt
Notifications You must be signed in to change notification settings

boitakub/Bogadex

Bogadex

Bogadex

License API Kotlin Build Status Last edition date
Sonar quality gate Sonar bugs Sonar code smells

Bogadex is a minimalist yet functional Android application showcasing modern development standards with a focus on clean architecture, code quality, and progressive enhancements. It uses the BoardGameGeek API to explore, filter, and present board game collections elegantly.

Bogadex - Screenshot

✨ Overview

Bogadex is a side project crafted with passion. It aims to demonstrate modern Android practices using Jetpack Compose, Material 3, and a scalable architecture. The app is a playground for exploring new concepts while keeping things simple, robust, and open.

πŸ”§ Key Features

  • Browse your BoardGameGeek collection
  • Sort and filter your games with Compose UI
  • Background data refresh & sync with Work Manager
  • Dark mode with Material 3 dynamic theming
  • Offline access via Room & caching
  • Android & Community best practices oriented
  • Full MVVM with a modular, scalable structure
  • Built-in CI/CD with quality gates (lint, test, sonar)

🧬 Stack & Practices

Area Tools & Libraries
Language Kotlin (100%)
UI Jetpack Compose, Material 3
Architecture MVVM β†’ MVI, Repository, UseCases
Dependency DI Koin
Data Layer Room, Retrofit (soon Ktor), DataStore
Asynchronous Kotlin Flow, Coroutines, Work Manager
Image Loading Coil
Build Tools Gradle (optimized), GitHub Actions
Quality KtLint, Spotless, Unit & Instrumentation Tests, Kover, SonarCloud

πŸ“¦ Code Standards

Bogadex adheres to:

  • Conventional Commits for clarity and semantic versioning.
  • SemVer for meaningful releases.
  • CI-enforced formatting via Spotless/KtLint.
  • Clear module boundaries by feature and responsibility.

πŸ§ͺ Testing & Quality

The project embraces automated testing and code quality:

  • Unit & instrumentation tests
  • Linting on commit
  • SonarCloud coverage & code smell detection
  • GitHub Actions for validation pipelines
  • Code coverage with Kover

🚧 Roadmap & Ideas

This project evolves gradually in spare time. Here are upcoming explorations:

  • 🧩 Widgets (Glance + Compose) β€” guide
  • 🌐 Retrofit β†’ Ktor β€” migration article
  • πŸ–ŒοΈοΈ UI/UX improvements β€” cookbook
  • 🧭 Navigation - Migrate to jetpack navigation 3
  • πŸ“ˆ Performance improvements β€” video
  • πŸ” Rewrite test structure & introduce test automation
  • 🧨 Global error handling with local logs technical and use friendly message overridable
  • β™Ώ Accessibility optimisations

🧭 Architecture

Bogadex follows a Clean Architecture and modular approach:

  • MVVM + MVI for UI logic
  • UseCases as business logic orchestration
  • Modular structure per feature
  • Repository pattern for separation of concerns

Design by feature Clean architecture

🎲 BoardGameGeek API

Bogadex uses the BoardGameGeek XML API to query data from the largest board game database.

The API provides rich details (titles, thumbnails, stats, etc.) through REST-like XML endpoints.

🀝 Credits & Thanks

Bogadex is inspired by many developers, creators, and open-source projects that share knowledge generously:

πŸ‘¨β€πŸ’» Developers

πŸ“¦ Projects

β˜• Support

Bogadex is a personal project made with ❀️ on personal time. If you find it useful, feel free to support via Ko-Fi. It helps with tools, hosting, and motivation!

πŸ“œ License

This project is licensed under the terms of the BSD 3-Clause.

About

🎲 BoardGameGeek collections explorer application using Compose, Koin, Flow, Room, Work Manager based on MVVM architecture.

Topics

Resources

License

BSD-3-Clause, BSD-3-Clause licenses found

Licenses found

BSD-3-Clause
LICENSE.md
BSD-3-Clause
copyright.txt

Code of conduct

Contributing

Stars

Watchers

Forks

Languages