Django is a MVT (Model View Template) framework used for building web applications. It is simple, powerful, and have many built in features. Django is the first framework that I use to build a website. With Gitlab CI/CD, we can deploy our website with just pushing a git branch.

In this article, we will learn how to automate deployment to Heroku with Gitlab CI/CD. So here are the steps.

Step 1: Create Heroku app

To create a Heroku app, login to Heroku. If you don’t have an account, you need to create it first.

Create your app from Heroku dashboard. Your app-name determines your host…

Last year when I was coding back-end server for a website, I want to try to run the back-end server as close how it actually run in the production server. But to run it like that, I need to install docker. The question “Why do I need Docker?” and “Why in every CI/CD use Docker?” pop-up in my mind multiple times. To answer these questions, first we need to understand Docker.

What is Docker?

Docker is an open platform for developing, shipping, and running applications. Docker enables you to separate your applications from your infrastructure so you can deliver software quickly. With Docker…

In software engineering, design pattern is a reusable solution to a general problem in software design. The repository pattern is one of the most popular design patterns at the moment. If you know Erich Gamma’s book about design pattern, you should know about creational, structural, and behavioral design pattern types, but repository pattern is not listed in any of those. Then what is repository pattern?

Currently, I’m working on a Flutter project. It requires back-end API calls and should also work when it is offline. …

You’ve certainly heard the term “User Persona” before, especially if you have experience in UX design. Personas are a tool you certainly need to create a more user-centered product.

In this article, what is persona, Why do you need them, and how to create them.

What is persona?

A persona is a fictional character that represents the target user. Personas are commonly created for websites, applications, or products to help understand the audience they are targeting. Personas are mostly created from interview with the target audience. With this information, companies can create a fictional group of users that most accurately reflects their target…

In this story I’m gonna tell you my experience implementing offline database in my Flutter project.

To add SQLite into your app, you need to install sqflite library. It’s a third party library that has SQLite in it.

To install SQFlite, I type into the terminal:

flutter pub add sqflite

Writing that in the terminal is way faster than to search the latest version of sqflite in the website and add it to pubspec.yaml file. In your pubspec.yaml , a new line that contains sqflite should be automatically added inside dependencies: that looks something like this:

Database Helper

The first…

Sometimes, there are classes that can’t be tested normally. Maybe it’s because there’s not many public methods, there’s an instance that can only run in the production code, or some other reasons. In this short article I want to share with you my experience writing tests with a powerful testing tool called Mockito.

Currently I’m working on a flutter project, and I have this ActivityItemHelper class that I want to test.

ActivityItemHelper before

the DatabaseProvider is a service to create, configure, and get the database. …

Photo from Unsplash

In software development, clean code is very important. To write a clean, understandable, and maintainable is an important skill for any software developer. It is frustrating to continue someone else’s code but you cannot understand what it’s doing. In this article, I’ve list some of my tips to make your code a bit cleaner and easier to understand for everyone.

Meaningful Variable Names

You don’t need to write comments on the variable if you name your variable correctly. Don’t use letters like x, y, z for a variable (for loop variables are an exception).

int x = 1; // period number


In this article, I’m sharing with you my experience with Test-Driven Development on a new environment. But first, we must understand Test-Driven Development.

What Is Test-Driven Development?

Test-Driven Development (TDD) is a technique to create tests before the implementation code. Writing the test first reduces errors that can occur during development. Test cases make sure that the code remains functional even when other people try to modify your code.

Steps on how to code with TDD:

  1. Write a Failing Test [RED]: Create failing test. Understand the user story enough so that you know what to expect in your implementation. …

In this article, I will share with you some of Git’s commands that I often use and my experience applying Git Flow in one of my projects.

More Git Commands

Here are my most used git command other than the basics. To view all the commands, run: git --help or git <command> --help .

git branch

git branch is a command to create a new branch or manage created branch.

  • git branch <branch_name> to create a new branch with <branch_name> as the name.
  • git branch -d <branch_name> to delete a branch.
  • git branch -m <old_branch> <new_branch> to rename a branch

git checkout

git checkout is a…


In the past few days, my team have been creating our mobile application for Badan Pengelola Keuangan Haji or BPKH in short. BPKH is an institution that manages Hajj Finance in Indonesia. BPKH needs a mobile application to track monitoring of projects they have. Our goal is to simplify project monitoring anywhere and anytime. We use Scrum to help us achieve our goal and create a working software that meet BPKH needs. But what is Scrum?

Scrum is a lightweight framework that helps people, teams and organizations generate value through adaptive solutions for complex problems.


A framework doesn’t…

Muhammad Oktoluqman Fakhrianto

Computer Science Student

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