Jenkins and Android Logos

In this blog, we shall discuss how to prepare Jenkins and how to connect it to a git repository then how to build and publish new copies of the app for internal use.

Test Repository

For this task I shall reuse a repository I created sometime ago, which is a light pixabay client.

There a couple of gotchas though, the application have a build config that requires file that contains the API key for the API. this compares to any application that uses Google Maps API keys, or any credentials for that matter.

Installing android SDK on a server

For this example I’ll use ubuntu, a…

Photo by Luca Bravo on Unsplash

Hi there, this is a short one.

So you wanted to integrate MapBox or Google Maps API into your android application, but you don’t want to expose the API key to the pubic. You also happen to use a GitHub Action that builds the app for you. So how do you publish the app on GitHub without leaking the API key? Here is how:

  1. Add a plugin to the app build.gradle
id '' version '0.6'

all in all, your file might look like:

plugins {
id ''
id 'kotlin-android'
id 'kotlin-kapt'
id ""
id '' version '0.6'

2. Add…

android speaks gherkin

To start with, everyone nowadays are trying to go “Multi Platform”, with a separation between the view layer and the logic layer being more and more expanded.

This causes some concerns when testing stuff. using a cross-platform brings a unique challenge. How can anyone be sure that the logic layer is working correctly across all these platforms?

As a proposal, I think Gherkin can provide a solution to this problem. in the following is a proposal on how to architecture the application and do integration testing using mockito, JUnit, Cucumber without touching the view model of the app.

Enabling the support

to enable…

Fastlane + android equals like
Fastlane + android equals like

A quick way to automate gradle scripts when developing apps using android is using fastlane. while not the Most widely used tool in town it’s the new trend. With projects like flutter adopting it into their own documents and by extension Google.

Not only that, but the automation of delivery makes this tools super darn good.

in this short blog we shall create a script to build an app. And in the next one we might deliver that automatically to google play store in the form of a draft.

Preparing Fastlane

To start things off, we shall create in the root of…

Dagger Dependency Injection

This is how to setup your project with the latest and greatest to date Dagger 2.33+ (written in April 2021)

For now, we will use a single component and module, which is the AppComponent but we shall add others in next blogs. Lets get going!

New Project

We will create a new Android Project in Android Studio.

Adding Dagger Dependency

in app/build.gradle we add this into the dependencies

def dagger_version = "2.33"

// region Dagger
implementation "$dagger_version"
implementation "$dagger_version"
implementation "$dagger_version"
kapt "$dagger_version"
kapt "$dagger_version"
// endregion

And then we need to enable the kapt extenstion, using the latest gradle

Adding the app component

First we create a…

Photo by Hello I'm Nik 🎞 on Unsplash


I do not support or encourage anyone to download or stream copyright videos in violation of YouTube’s terms and conditions. Before downloading or streaming a YouTube video, you are suggested to seek permission from the video owner to download or stream videos legally. This article is for educational purposes only.

First we should have the ID of the video

in this case the id is L7T6UO

we can do that automatically using the code:

static String _getVideoId(String url) {
try {
var id = '';
id = url.substring(url.indexOf('?v=') + '?v='.length);

return '${id}&el=embedded&ps=default&eurl=&gl=US&hl=en'; …

Beim Erstellen von E-Commerce-Websites verwenden wir in der Regel einen Drittanbieter. In meinem Fall hatte ich Angst vor einer Lieferantenbindung. Aus diesem Grund haben wir uns entschieden, eine eigene Checkout-Seite zu erstellen und beim Auschecken keine Weiterleitungen weiterzuleiten.


während wir es benutzen Symfony für unsere Projekts, wie wollte ExpressJS in dieses Projekt für zwei Gründe dafür.

  1. wir experimentieren mit ExpressJS Aber in TypeScript eher, als JavaScript.
  2. wir Entwicklung der Front-End mit Angular 9. und ExpressJS in TS gibt uns voller Stapel in TS. welche machen die Projekt ein einfacher Wartungskosten für unsere Klientel. So, wir benutzen:
  • Angular 11 für Frontend

When building E-Commerce websites we use a third party payment provider. in my case I was afraid of any vendor lock-in and this is why we choose to build our own checkout page and not to relay on any redirections when it comes to checking out.

Stay tuned for Symfony Version at

The Stack

While we mainly use Symfony for most of our projects, we wanted to try to create a TS stack from the bottom up.

The Stack from Back to end is:

  • MySQL as a DB Server
  • ExpressJS as the API (With TypeORM and TypeDI, and RoutingControllers for TypeScript…

Dieses Blog ist auch in Englisch, Sie kann dieses Blog im dieser hiere finden.

  • English Article Link here

Das ist mein erste Blog im Deutsch. Also, entschuldigen Sie meine schwache Sprache, es ist eine Arbeit in Arbeit :)

UI Design

Für Einfachheit Zweck, wir haben nur 2 Seiten in unsere Website. Das ist Anmeldung seit und “Dashboard” seit.

Sie Kann dieses Repository klonen zur dieses link.

Der Start

in dies Projekt, wir haben Angular v8.3.21


Sie kann dieser Repository Klonen via:

git clone
cd angular-translation
git checkout start


wir haben ein Terminal im angular-translation, in der Terminal ausführen:

npm i

Und das ist…

in this tutorials we are going to Dockerize a Hello Word Express Application.

Preparing the project

we start by making a new folder and moving into it

mkdir dockerized_express
cd dockerized_express

now that we got this out of the way we can start by opening our code editor; i use VS Code, so, deal with it :)

we create a folder called api and in it we can create our Hello World server.

first we create a node project by using

yarn --init # I use Yarn, Just because
npm --init # You can use that, its free you know

then we add…

Mohammad Al Kalaleeb

Software Developer at

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store