Golden Tips for Beginners in Mobile App Development

 

1100 Users, What I Learned from My First App and More

If you are interested in mobile app development but don’t know where to start, this article is for you. It’s full of tips, examples and notes of encouragement from real life experience.



1. Look at your own life when coming up with your idea

Your app idea doesn’t have to be “brilliant”. In fact, most downloaded apps focus on very basic needs. After I became a mom, I was thinking every day during my baby’s supplementary food process, “What am I going to feed my baby today?” I got tired of my own mixed notes and I said:

“Why not a simple and reliable baby recipe app?”

Thus Minik Tarifler was born.

Maybe it’ll inspire you:

  • Breastfeeding tracker for new parents
  • Reading diary for bookworms
  • Daily coffee recipes app

If you want ideas: What is the most difficult part of your day? Try to make it easier. That’s what I did.

2. Start with a Small Version, Not Big Dreams

My first version only had the ability to list recipes and add them to favorites. No photos, no comments, no filtering. But it worked.

For Inspiration:

  • English app that shows 1 word every day
  • Simple tracker that tracks a child’s water intake
  • One-page “Quote of the Day” app

Focus on the basic function first. You can add the rest later.

3. Which Technology Should I Start With?

I started with Flutter because I could write one code for both Android and iOS, I could easily shape interfaces and get help from the community. But it’s not which language you choose, it’s what you do.

Take a look at these:

  • No-code tools (Glide, Adalo)
  • React Native → Suitable for those with web experience
  • Swift/Kotlin → For Native apps

Start where you know. You’ll learn what you don’t know on the way. That’s what I did.

4. If You Don’t Have Time, Make Time

I stole 30 minutes in some moments of the day due to motherhood, housework, lack of sleep. I woke up early in the morning, wrote in the afternoon during nap time. Sometimes I was coding at 1 a.m.

You can try the following:

  • 06:30 to 07:00 in the morning
  • Only 1 task a day (e.g. “add login button”)
  • Weekly mini task lists with Notion

It’s not about writing code, it’s about taking steps. Move forward every day, even if it’s just one line. But don’t feel guilty for the times you can’t.

5. Development without Feedback!

In the first release users said the login screen was long. It wasn’t a downer, it was a developer. The app took shape thanks to those comments.

Where Can You Get Feedback?

  • WhatsApp groups
  • Reddit (e.g. r/FlutterDev)
  • Comments under Medium posts

Feedback illuminates your path. Don’t be afraid, share. Sometimes even people you think are irrelevant can teach you something. How do I know? 🤭

6. Don’t be intimidated by the publishing part

Uploading an app to the Google Play Store was not as complicated as I thought. Within 1 day, Tiny Recipes was live. Although it is said that iOS is a bit more challenging, it will be possible somehow (One day it will be there, and soon).

To summarize, if I reached 1100 users today, it was because I published it.

I did the following:

  • Write a simple and friendly app description
  • Create 3–4 beautiful promotional visuals with Canva
  • Sign up for Google Console, install the APK

No one can hear it unless you publish it. If you’ve finished, share it. It’s not a place to test you.

7. Be Inspired, Don’t Imitate

The apps I was inspired by gave me a lot of ideas: How did they categorize, how did user comments look, what was missing? All data for improvement.

For example, an idea:

  • Houseplant watering reminder
  • Mood diary
  • Minimal personal budget tracking app
  • “What should I cook today?” list
  • “My baby is growing” development diary

Develop, not imitate. Every app can be a spark of an idea.

In a nutshell: Your Stubbornness Works Better Than Your Code Knowledge

I was not born a software developer, no one was. I am learning, and I still have a long way to go. When I first started coding, I couldn’t have guessed that I would end up here, but I had an idea. By learning a little more every day, with little sleep and a lot of persistence, I made an application that has reached 1100 people today.

You can do it too. Write your idea, lay the foundation, share it. Get feedback, improve it.

Because this path cannot be walked alone. But you get stronger with every step. We can meet in the comments if you want.

Thank you.

Selin.

Mobil Uygulama Geliştirmeye Yeni Başlayanlara Altın Tavsiyeler

 

1100 Kullanıcıya Ulaşan İlk Uygulamamdan Öğrendiklerim ve Daha Fazlası

Mobil uygulama geliştirmeye hevesliysen ama nereden başlayacağını bilmiyorsan, bu yazı tam sana göre. Gerçek bir deneyimden doğan ipuçları, örnekler ve cesaret verecek notlarla dolu bir içerik seni bekliyor.




1. Fikrini Bulurken Kendi Hayatına Bak

Uygulama fikriniz çok “parlak” olmak zorunda değil. Hatta en çok indirilen uygulamalar çok temel ihtiyaçlara odaklanır. Ben anne olduktan sonra bebeğimin ek gıda sürecinde her gün “Bugün ne yedireceğim?” diye düşünüyordum. Kendi karışık notlarımdan bıktım ve dedim ki:

“Neden sade ve güvenilir bir bebek tarif uygulaması olmasın?”

Böylece Minik Tarifler doğdu.

Belki İlham Olur:

  • Yeni ebeveynler için emzirme takibi
  • Kitap kurtları için okuma günlüğü
  • Günlük kahve tarifleri uygulaması

Fikir bulmak istiyorsan: Günde seni en çok ne zorluyor? Onu kolaylaştırmaya çalış. Ben öyle yaptım.

2. Büyük Hayallerle Değil, Küçük Sürümle Başla

İlk sürümümde yalnızca tarif listeleme ve favorilere ekleme özelliği vardı. Fotoğraf yoktu, yorum yoktu, filtreleme yoktu. Ama işe yaradı.

Belki İlham Olur:

  • Her gün 1 kelime gösteren İngilizce uygulama
  • Çocuğun su içmesini takip eden sade takipçi
  • Tek sayfalık “Günün Sözü” uygulaması

Önce temel işleve odaklan. Kalanı sonra eklersin.

3. Hangi Teknolojiyle Başlamalıyım?

Ben Flutter ile başladım çünkü hem Android hem iOS için tek kod yazabiliyordum. Arayüzleri kolayca şekillendirebiliyor ve topluluktan yardım alabiliyordum. Ama hangi dili seçtiğin değil, ne yaptığın daha önemli.

Bunlara da bi bak:

  • No-code araçlarla sıfır kodla uygulama yapmak (Glide, Adalo)
  • React Native → Web deneyimi olanlar için uygun
  • Swift/Kotlin → Native uygulamalar için

Bildiğin yerden başla. Bilmediklerini yol üstünde öğrenirsin. Ben öyle yaptım.

4. Zamanın Yoksa Zaman Yarat

Ben annelik, ev işleri, uykusuzluk derken günün bazı anlarında 30 dakikalar çaldım. Sabah erken kalktım, öğlen uyku saatinde yazdım. Bazen gece 1’de kod yazıyordum.

Şunları deneyebilirsin:

  • Sabah 06:30–07:00 arası
  • Günde sadece 1 görev (örneğin “login butonunu ekle”)
  • Notion ile haftalık mini görev listeleri

Kod yazmak değil, adım atmak önemli. Her gün bir satır bile olsa ilerle. Ama yapamadığın zamanlar için de suçluluk duyma.

5. Geri Bildirim Almadan Geliştirme!

İlk sürümde kullanıcılar giriş ekranının uzun olduğunu söyledi. Moral bozucu değil, geliştirici oldu. O yorumlar sayesinde uygulama şekillendi.

Nereden Geri Bildirim Alabilirsin?

  • WhatsApp gruplarından
  • Reddit (örneğin r/FlutterDev)
  • Medium yazısı altı yorumlar

Geri bildirim, yolunu aydınlatır. Korkma, paylaş. Bazen konuyla ilgisi olmadığını düşündüğün insanlar bile sana birşeyler öğretebilir. Nereden mi biliyorum? 🤭

6. Yayınlama Kısmı Gözünü Korkutmasın

Google Play Store’a uygulama yüklemek düşündüğüm kadar karmaşık değildi. 1 gün içinde Minik Tarifler yayındaydı. iOS’un biraz daha uğraştırdığı söylense de o da bir şekilde mümkün olacak (Bir gün oraya da sıra gelecek, hem de yakın bir zamanda).

Özetle, bugün 1100 kullanıcıya ulaştıysam, yayınladığım içindi.

Ben şunları yaptım:

  • Uygulama açıklamasını sade ve samimi yaz
  • Canva ile 3–4 güzel tanıtım görseli hazırla
  • Google Console’a kaydol, APK’yı yükle

Yayınlamadan kimse duyamaz. Bitirdiysen, paylaş. Orası seni test eden bir yer değil.

7. İlham Al, Taklit Etme

İlham aldığım uygulamalar bana çok fikir verdi: Nasıl kategori yapmışlar, kullanıcı yorumu nasıl görünmüş, ne eksik kalmış? Hepsi gelişim için veri.

Mesela, bir fikir:

  • Ev bitkisi sulama hatırlatıcısı
  • Ruh hali günlüğü
  • Minimal kişisel bütçe takibi uygulaması
  • “Bugün ne pişirsem?” listesi
  • “Bebeğim büyüyor” gelişim günlüğü

Taklit değil, geliştirme yap. Her uygulama bir fikir kıvılcımı olabilir.

Özetle: Kod Bilginden Çok, İnatçılığın İşe Yarıyor

Yazılımcı olarak doğmadım, hiç kimse doğmadı. Öğreniyorum, daha da yolum çok uzun. Kodlamaya ilk başladığımda da buralara geleceğimi tahmin edemezdim. Ama bir fikrim vardı. Her gün biraz daha öğrenerek, az uykuyla, bol inatla bugün 1100 kişiye ulaşan bir uygulama yaptım.

Sen de yapabilirsin. Fikrini yaz, temelini at, paylaş. Geri bildirim al, geliştir.

Çünkü bu yol yalnız yürünmüyor. Ama her adımda güçleniyorsun. Yorumlarda buluşabiliriz.

Teşekkürler.

Selin.


How to Create Custom Bottom Navigation Bar in Flutter?

 

Step-by-Step Explanation from Scratch



Where does a user who opens your app look first? Usually at the bottom of the screen. That’s why the Bottom Navigation Bar is at the heart of the user experience. But the default bar is not enough. If you want an experience that’s unique, memorable and your own, a custom bar is a must.

In this article, I’ll explain in plain and simple language how you can write your own custom bottom navigation bar in Flutter from scratch. Let’s get started if you’re ready.

1. Preparation: What will we do?

  • An application with four tabs
  • Each tab will have its own screen

Buttons in the submenu:

  • Will be shown in a different color if selected
  • Will change the page when clicked
  • Will be animated

2. Project Structure

Our home page file:

main.dart

Our page files:

screens/
home_screen.dart
search_screen.dart
profile_screen.dart
settings_screen.dart
widgets/
custom_nav_bar.dart

3. Main Structure: Page Switching with Stateful Widget

First, let’s set up the basic structure in main.dart that will manage the switching of tabs:

import 'package:custom_nav_bar/widgets/custom_nav_bar.dart';
import 'package:flutter/material.dart';
import 'screens/home_screen.dart';
import 'screens/search_screen.dart';
import 'screens/profile_screen.dart';
import 'screens/settings_screen.dart';

void main() {
runApp(MyApp());
}

class MyApp extends StatelessWidget {
const MyApp({super.key});

@override
Widget build(BuildContext context) {
return MaterialApp(
title: 'Custom BottomNav Demo',
debugShowCheckedModeBanner: false,
home: MainScreen(),
);
}
}

class MainScreen extends StatefulWidget {
const MainScreen({super.key});

@override
State<MainScreen> createState() => _MainScreenState();
}

class _MainScreenState extends State<MainScreen> {
int currentIndex = 0;

final screens = [
HomeScreen(),
SearchScreen(),
ProfileScreen(),
SettingsScreen(),
];

@override
Widget build(BuildContext context) {
return Scaffold(
body: screens[currentIndex],
bottomNavigationBar: CustomBottomNavBar(
currentIndex: currentIndex,
onTap: (index) {
setState(() {
currentIndex = index;
});
},
),
);
}
}

4. Let’s Write Custom BottomNavigationBar.

Let’s create a widget calledCustomBottomNavBar in the widgets folder:

import 'package:flutter/material.dart';

class CustomBottomNavBar extends StatelessWidget {
final int currentIndex;
final Function(int) onTap;

const CustomBottomNavBar({
required this.currentIndex,
required this.onTap,
});

@override
Widget build(BuildContext context) {
return Container(
padding: const EdgeInsets.symmetric(vertical: 12, horizontal: 16),
decoration: BoxDecoration(
color: Colors.white,
boxShadow: [
BoxShadow(color: Colors.black12, blurRadius: 10),
],
borderRadius: const BorderRadius.only(
topLeft: Radius.circular(16),
topRight: Radius.circular(16),
),
),
child: Row(
mainAxisAlignment: MainAxisAlignment.spaceAround,
children: [
_buildNavItem(icon: Icons.home, index: 0, label: 'Ana Sayfa'),
_buildNavItem(icon: Icons.search, index: 1, label: 'Ara'),
_buildNavItem(icon: Icons.person, index: 2, label: 'Profil'),
_buildNavItem(icon: Icons.settings, index: 3, label: 'Ayarlar'),
],
),
);
}

Widget _buildNavItem({
required IconData icon,
required int index,
required String label,
}) {
final isSelected = index == currentIndex;

return GestureDetector(
onTap: () => onTap(index),
child: Column(
mainAxisSize: MainAxisSize.min,
children: [
AnimatedContainer(
duration: Duration(milliseconds: 250),
padding: EdgeInsets.all(8),
decoration: BoxDecoration(
color: isSelected ? Colors.blue.shade100 : Colors.transparent,
shape: BoxShape.circle,
),
child: Icon(
icon,
color: isSelected ? Colors.blue : Colors.grey,
size: isSelected ? 28 : 24,
),
),
const SizedBox(height: 4),
Text(
label,
style: TextStyle(
fontSize: 12,
color: isSelected ? Colors.blue : Colors.grey,
fontWeight: isSelected ? FontWeight.bold : FontWeight.normal,
),
),
],
),
);
}
}

5. Add Page Instances

A simple scaffold structure for each screen is enough:

home_screen.dart

import 'package:flutter/material.dart';

class HomeScreen extends StatelessWidget {
@override
Widget build(BuildContext context) {
return Scaffold(
backgroundColor: Colors.grey[100],
body: Center(
child: Text('Ana Sayfa'),
),
);
}
}

search_screen.dart

import 'package:flutter/material.dart';

class SearchScreen extends StatelessWidget {
@override
Widget build(BuildContext context) {
return Scaffold(
backgroundColor: Colors.blueAccent[100],
body: Center(
child: Text('Arama Sayfası'),
),
);
}
}

profile_screen.dart

import 'package:flutter/material.dart';

class ProfileScreen extends StatelessWidget {
@override
Widget build(BuildContext context) {
return Scaffold(
backgroundColor: Colors.amber[100],
body: Center(
child: Text('Profil Sayfası'),
),
);
}
}

settings_screen.dart

import 'package:flutter/material.dart';

class SettingsScreen extends StatelessWidget {
const SettingsScreen({super.key});

@override
Widget build(BuildContext context) {
return Scaffold(
backgroundColor: Colors.purpleAccent[100],
body: Center(child: Text('Ayarlar Sayfası')),
);
}
}

And The Result

Now your app has a simple but powerful bottom navigation bar that reflects your own style.

You can color and shape it however you like, change the icons, or add notification badges to the buttons.

Writing your own custom widget is one of the most enjoyable ways to learn Flutter in depth. The look is yours and the user experience makes all the difference.



I hope it was useful.

Don’t forget to clap and subscribe for more.

Thank you.

Selin.