Project List
- Unimage Photo Viewer
- BNCC x Go-Academy: Siaga Corona App
- Code Reengineering (Forked from mrp130/smell)
- BNCC Training: Java Ebanking App
- JSON Currency
Unimage Photo Viewer
Category: Android App, Internship Project
Github repos: akmalrusli363/Unimage-Photo-Viewer
Unimage Photo Viewer is a personal project which provides photos from Unsplash using Unsplash API (The documentation). The Unsplash API itself have many common API endpoints such as:
- Search image
- Show user profile
- List user photos
- Get a photo
- Get a photo’s statistics
- Get random photos
- Search for user
- Search for collections
- and many more…
To be noted, the Unsplash API uses OAuth 2.0 Authentication (Bearer) where the user can obtain the OAuth’s access token by taking the app’s Access Key, Secret Key, and Redirect URI from Unsplash Developer App’s page. You also need to be registered on Unsplash to create your application first before proceeding OAuth access authentication on your HTTP Client.
Features
This application has 3 activities: photo search, photo detail, and user’s profile. Each activities has it’s own ViewModel and access to libraries using Dagger’s dependency injection.
For main Unsplash API URL, the link of https://api.unsplash.com
is the main API’s URL that refers to each endpoint. Please refer to the documentation for detailed documentation.
Photo Search (MainActivity)
API URL Endpoint: https://api.unsplash.com/search/photos
API Parameters:
query
: Query to searchpage
: Page number to displayper_page
: Number of items to display for a page
This activity consists of a SearchView
and a RecyclerView
which displays photo grid using StaggeredGridLayoutManager
which display photos according to their dimension and orientation. Basically, each photo represents photo’s URL (thumbnail) which loaded using Picasso through Picasso.get().load(imageUrl).into(imageView)
.
When the app launches, the activity shows only search bar and a blank view where it displays search photo result based on your search query.
Photo Detail (PhotoDetailActivity)
API URL Endpoint: https://api.unsplash.com/photos/{photoId}
API Parameters:
{photoId}
: The photo ID
This activity consists of a photo picture, like count, view in browser button, full view, user profile, and descriptions in general.
While user access the profile of the photo owner, they’ll redirected to Profile Activity which displays user’s bio data and photo collections. Also, the user can download the photo through download icon which redirects user to show full size of photo, or view more information or related images through “view in web” button.
Because this activity only provides basic information of the photo, user need to be access on browser using “view in web” button to choose photo size to download, like, share, or view EXIF information of that photo.
EXIF
The feature was added in new version of Unimage App which displays EXIF information (eg. camera brand/model, focal length, exposure time, aperture, ISO) for the photo. This field is hidden if no fields were present for that photo.
Profile (ProfileActivity)
API URL Endpoint: https://api.unsplash.com/users/{userName}
API Parameters:
{userName}
: Username to search
The profile activity consists of user bio data consists of username, full name, and user statistics. Also, this activity provides user photos through secondary link /photos
which provides set of images through RecyclerView
photo grid using StaggeredGridLayoutManager
(display photo grid according to their dimension and orientation).
Same as photo search activity, user can access their photo which redirects to photo detail. Even with same user, the activity shown through user photo are redirects back to user profile if the owner of the photo are equal to previous photos.
Scenario: Offline
For additional information how the offline image caching works, see repository’s README.md for more details.
While offline, if user have already searched for photos using a query, the photos will stored into database though Room which stored on 3 different tables:
Not all images are shown because the image fetched separately by image loader, Picasso, which has it’s own caching system to store cached image and fetched the cached images while offline as possible.
Libraries
Essentials
- Kotlin & AndroidX Core
- AppCompat (
androidx.appcompat:appcompat
) - Google Material Design (
com.google.android.material:material
)
AndroidX
- AndroidX Preferences (
androidx.preference:preference-ktx
) - AndroidX Multidex (
androidx.multidex:multidex
) - AndroidX Room (
androidx.room
)- Room Runtime
- Room RxJava2 Adapter
Testing Libraries
- AndroidX Test (
androidx.test
) - Android Architecture Test (
androidx.arch.core:core-testing
) - Android Fragment Test (
androidx.fragment:fragment-testing
) - Espresso (
androidx.test.espresso
)espresso-core
espresso-contrib
espresso-intents
- Mockito (
org.mockito
)- Mockito Core
- Mockito Kotlin
- Mockito Android
External Libraries
- Retrofit (
com.squareup.retrofit2
):- Retrofit
- GSON Converter
- Adapter RxJava2
- RxJava (
io.reactivex.rxjava2
):- RxJava
- RxAndroid
- Picasso (
com.squareup.picasso:picasso
) - Dagger (
com.google.dagger
):- Dagger Android
- Dagger Android Processor (Annotator)
- Dagger Compiler (Annotator)
BNCC x Go-Academy: Siaga Corona App
Category: Educational/Team Project, Mobile App
Personal Github repos: akmalrusli363/BNCC-Academy-Kotlin-Demo | Team Project’s Github repos: SteveWKurnia/BNCCAcademy—CoronaApp
Siaga Corona is a BNCC x Go-Academy (Gojek Academy) collaborative application where through this project, the BNCC boards and praetorians were encouraged to create an Android App for COVID-19 Mitigation in Indonesia using Kotlin programming language which was a popular programming language for mobile and server-side developments and used by lot of IT Ventures and startups (including Square, Pinterest, Google, Gojek, DANA, and many more).
Not only developing Android app based on Kotlin, the BNCC Academy members are also taught to design a good user interface, obtained COVID-19 case statistics through API REST call, and apply App Architecture as a foundation for developing quality software.
This app serves COVID-19 statistical data overview, regional cases overview, and Hotline for emergency phone number services while you’re experiencing some minor or major COVID-19 symptoms (e.g. fever, dry cough, tiredness, heavy breathes, etc.)
Dalam project Siaga Corona App, saya terlibat dalam pengerjaan final project dengan masing-masing anggotanya:
- Stephen William
- Annetta Carolina
- Diaz
- Akmal
- Juan Sebastian
For further information about the team’s project, visit our team project’s Github repos (Team 2) below:
SteveWKurnia/BNCCAcademy---CoronaApp
Or while you need to sneak peek with my experiments project for COVID-19 mitigation app, visit my personal app project’s Github repos below:
akmalrusli363/BNCC-Academy-Kotlin-Demo
Code Reengineering (Forked from mrp130/smell)
Category: Refactoring
Github repos: akmalrusli363/smell | wiki | Github Pages
Repository tersebut pada aslinya dibuatkan oleh dosen Code Reengineering, Michael Reynaldo Phangtriastu untuk keperluan materi online class COMP6106 - Code Reengineering, kelas LE01 semester genap tahun 2019-2020.
Repository ini kemudian ditambahkan dengan wiki dan github-pages oleh saya sendiri untuk memperlengkap materi baik secara literal maupun naratif terhadap materi mata kuliah COMP6106 - Code Reengineering dengan tambahan teks narasi, ilustrasi, dan referensi terhadap sumber luar.
Repository ini terdiri atas banyak jenis-jenis smell yang dibahas secara literatur oleh Martin Fowler dan Girish Suryanaryana dkk.
Jika anda ingin melihat sekilas dan lebih detail mengenai materi Code Reengineering yang dibuatkan oleh dosen Michael Reynaldo Phangtriastu (mrp130), dapat mengunjungi link repository asli Code Reengineering - mrp130.
mrp130/smell
Atau bila anda ingin melihat informasi yang lebih afirmatif, menarik, dan lebih lengkap silahkan kunjungi GitHub wiki saya dan GitHub Pages Code Reengineering di bawah:
akmalrusli363/smell
CATATAN
Code pada materi ini masih menggunakan bahasa pemrograman Java!
Bagi anda yang ingin menyumbangkan code dalam bahasa pemrograman favorit kalian (C++, C#, Python, Ruby, Go, PHP, dan lain-lain):
- Silahkan fork repository ini
- Kreasikan dengan versi code kalian (dalam bahasa pemrograman favorit kalian)
- Manfaatkan/gunakan issue dan pull request pada repository di atas.
Referensi
- Fowler, Martin. Refactoring: improving the design of existing code. Addison-Wesley Professional, 2018.
- Suryanarayana, Girish, Ganesh Samarthyam, and Tushar Sharma. Refactoring for software design smells: managing technical debt. Morgan Kaufmann, 2014.
- Sourcemaking (kompilasi dari refactoring.guru & sumber tambahan)
- refactoring.guru (sumber asli dari sourcemaking)
BNCC Training: Java Ebanking App
Category: Educational Project, Java
Github repos: akmalrusli363/ebankingku-java
ebankingku-java merupakan sebuah Java demo project untuk mendemonstrasikan cara menghubungkan Java GUI project ke MySQL melalui JDBC connection.
Project ini dibuat saat mengikuti BNCC Praetorian Training sebagai project demonstrasi cara menghubungkan Java GUI ke MySQL dengan MySQL JDBC Connector.
Requirement / Hal-hal yang diperlukan
- JDK 8 or newer - Diperlukan dalam menjalankan project
- MySQL - Untuk database server (manually atau via XAMPP)
- MySQL JDBC Connector - Connector dari MySQL ke Java Project
Untuk melakukan demonstrasi pada project ini, anda memerlukan MySQL dan MySQL JDBC Connector versi terbaru dimana anda dapat download Java Connector melalui (https://dev.mysql.com/downloads/connector/j/).
Untuk MySQL Database, anda dapat menggunakan XAMPP versi apa saja atau install MySQL secara manual melalui (https://dev.mysql.com/downloads/)
JSON Currency
Github repos: akmalrusli363/JSON-Currency
json-currency is a JSON Currency command line to obtain currency exchange table and rates from JSON currency exchange site.
NOTICE: json-currency is under work-in-progress project, so you can contribute for extra things or corrections related for the project repository.
Go to the Home Page