Just doodling around
Trying to apply best practices for later usages :)
Doodle demonstrates modern Android development with Jetpack (Compose, ViewModel, Room, Credential Manager), Coroutines, Flow, Koin and Material Design based on MVVM, Clean and Multi-Module architecture.
- Minimum SDK level 24
- Kotlin based, Compose for UI Toolkit, Coroutines + Flow for asynchronous jobs.
- Jetpack
- Compose: Android’s recommended modern toolkit for building native UI.
- Android Architecture Components: Collection of libraries that help you design robust, testable, and maintainable apps.
- Coroutines: Concurrency design pattern that you can use on Android to simplify code that executes asynchronously.
- Stateflow: StateFlow is a state-holder observable flow that emits the current and new state updates to its collectors.
- Flow: A flow is an asynchronous version of a Sequence, a type of collection whose values are lazily produced.
- Navigation with Compose: Navigation component for Compose.
- DataStore: Jetpack DataStore is a data storage solution that allows you to store key-value pairs or typed objects with protocol buffers. DataStore uses Kotlin coroutines and Flow to store data asynchronously, consistently, and transactionally.
- Firebase
- Analytics: for tracking events.
- Crashlytics: for tracking crashes.
- Performance: for tracking performance.
- Remote Config: for remote configuration.
- Authentication: for user authentication.
- Credential Manager API: Unifies the sign-in interface across authentication methods, making it clearer and easier for users to sign into apps, regardless of the method they choose.
- Architecture
- Multi-Module Architecture with lots of customized convention plugins (build_logic - app - core - feature)
- MVVM Architecture (View - DataBinding - ViewModel - Model)
- Clean Architecture approach (Data - Domain - Presentation(ui))
- Koin: for dependency injection.
- Retrofit2 & OkHttp3: Construct the REST APIs and paging network data.
- ksp: Kotlin Symbol Processing API.
- Material-Components: Material design components for building ripple animation, and CardView.
- Coil for async image loading library
- Detekt for static code analysis with compose specific rules
- Spotless and Ktlint for lint check and auto formatting
- RenovateBot for auto dependency update tool
- GitHub Actions for simple ci pipeline
- GitHooks for running static analysis and code formatters before commit and push actions
- LeakCanary for leak detection on runtime
- Chucker for network inspector on debug builds
- In order to run the app, you need to add these to your
local.properties
file in the root folder of the project.
doodle.api.url="https://api.jikan.moe/v4/"
doodle.api.key="sample api key" #Jikan API doesn't require an API key, but I'm using it as an example for later usages.
- Ktlint should be added using brew
brew install ktlint
Jikan (時間) is an open-source PHP & REST API for the “most active online anime + manga community and database” — MyAnimeList.net. It parses the website to satisfy the need for an API. Jikan is a free, open-source API.
Top Anime
Anime Details
Anime Characters
/*
* Copyright 2023
* Designed and developed by Enes Kamil Yılmaz
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/