Creating Your First Ionic App
Kicking Things Off — Alright! Now that you’ve got the basic tools installed and you’re all set up, it’s time to start building. In this tutorial, we’ll get our hands dirty by creating your first actual Ionic app from scratch. Don’t worry, I’m going to walk you through each step, making it as simple as possible. By the end, you’ll have a working app, styled, with some basic interaction, navigation, and a little bit of backend magic using Node.js.
The good news is, Ionic takes care of a lot of the heavy lifting for you, so you don’t have to write tons of custom code to make your app look good and work smoothly. We’re also going to touch on navigation (because what’s a mobile app if you can’t move between screens?) and how to connect it to a basic Node.js backend for handling data.
So, let’s jump in!
The Anatomy of an Ionic App: Taking a Quick Tour
Before we start building anything, it helps to get a feel for how Ionic apps are structured. Think of this as taking a quick tour of the blueprint before we start hammering away. When you generate a new Ionic project, you’re given a bunch of files and folders that might seem overwhelming at first, but they’re all organized logically.
Let’s break it down:
Key Folders and Files in an Ionic Project
-
src/
: This is the main folder where all your app code lives. Inside, you’ll find subfolders for your pages, components, and other important app features. -
src/app/
: Theapp
folder is where the bulk of your work will happen. It contains the main app module, which brings all your pages and services together. -
src/app/pages/
: This folder holds all the individual pages of your app. Each page is a combination of three files: an HTML file for the layout, a TypeScript file for logic, and a CSS file for styling. -
src/assets/
: If you have any static files like images, fonts, or icons, they’ll go here. -
src/environments/
: This folder contains configuration files for different environments (like development or production).
At the heart of your app are Angular components, which are made up of three parts:
- HTML: Defines the structure of your page (the layout).
- CSS: Handles the look and feel (styling).
- TypeScript: Contains the logic (what your app actually does).
Now that you’ve got a sense of where everything lives, we can move on to building your first page.
Building the First Page: Getting Your Hands Dirty
Let’s start by building a simple page. This will be our Home Page, and we’ll add some basic styling and interactivity to make it look and feel like a real mobile app. Trust me, this is going to be more fun than it sounds.
Step 1: Creating the Home Page
To create a new page in Ionic, run the following command in your terminal:
ionic generate page Home
This command generates the necessary files for a new page, which you can find under the src/app/pages/home
folder. You’ll see three files:
home.page.html
: This is where we’ll write the layout (the look) of the page.home.page.scss
: This is where we’ll write the styling.home.page.ts
: This is where we’ll handle the logic (what the page does).
Step 2: Designing the Home Page
Let’s make your page look like an actual mobile app. Open up home.page.html
and add the following code:
<ion-header>
<ion-toolbar>
<ion-title>
Welcome to My App
</ion-title>
</ion-toolbar>
</ion-header>
<ion-content class="ion-padding">
<h1>Hello, World!</h1>
<p>Let’s build something amazing together.</p>
<ion-button expand="block" (click)="showMessage()">Click Me</ion-button>
</ion-content>
Here’s what’s happening in this code:
-
ion-header
: This is the top bar of your app, where you’ll usually find the page title or navigation buttons. -
ion-toolbar
: This is the toolbar within the header. In this case, we’re just adding a title that says “Welcome to My App.” -
ion-content
: This is where the main content of your page lives. We’ve added a simple heading, a paragraph, and a button. -
ion-button
: Ionic buttons are styled to look and feel like native mobile buttons. We’ve added a click event that triggers a method calledshowMessage()
(don’t worry, we’ll get to that next).
Step 3: Adding Interactivity
Now that we’ve got the layout sorted, let’s add a little bit of interactivity. Open up home.page.ts
and add the following code:
import { Component } from '@angular/core';
import { ToastController } from '@ionic/angular';
@Component({
selector: 'app-home',
templateUrl: './home.page.html',
styleUrls: ['./home.page.scss'],
})
export class HomePage {
constructor(private toastController: ToastController) {}
async showMessage() {
const toast = await this.toastController.create({
message: 'Hello from Ionic!',
duration: 2000,
position: 'bottom',
});
toast.present();
}
}
Let’s break it down:
-
ToastController
: This is a built-in Ionic service that allows us to display a message (called a toast) at the bottom of the screen. It’s perfect for simple notifications or alerts. -
showMessage()
: This is the method we’re calling when the user clicks the button. It creates a toast with the message “Hello from Ionic!” and shows it for 2 seconds.
Step 4: Running the App
To see your page in action, run:
ionic serve
This will open your app in the browser. Go ahead and click the button—you should see the toast message pop up at the bottom of the screen. Congrats, you’ve just created a basic page with interactivity!
Handling Navigation: Moving Between Pages
One page is cool, but most apps have multiple screens. In this section, we’ll cover how to add more pages and navigate between them. Ionic makes navigation pretty straightforward with its built-in router.
Step 1: Creating a Second Page
Let’s create a second page called About. Run the following command:
ionic generate page About
This will generate the necessary files for your About page. You’ll find them under the src/app/pages/about
folder.
Step 2: Adding a Navigation Button
Now, let’s add a button on the Home page that takes us to the About page. Open up home.page.html
and add this code below the button you already have:
<ion-button expand="block" routerLink="/about">Go to About Page</ion-button>
Here, we’re using routerLink
to navigate to the About page when the button is clicked.
Step 3: Configuring the Routes
To make sure Ionic knows how to handle navigation, we need to define the routes in our app. Open up src/app/app-routing.module.ts
and add the following code inside the routes
array:
{
path: 'about',
loadChildren: () => import('./pages/about/about.module').then(m => m.AboutPageModule)
}
This tells Ionic that when the user navigates to /about
, it should load the About page.
Step 4: Testing Navigation
Now, go back to your app (you can just reload the browser if ionic serve
is still running) and try clicking the "Go to About Page" button. You should be taken to the About page.
Adding Some Backend Magic with Node.js
Now that we’ve got our basic Ionic app up and running, let’s take things up a notch by adding a simple Node.js backend. This will allow your app to pull data from a server, which is something you’ll need for most apps.
Step 1: Setting Up a Simple Node.js Server
First, we need to create a basic Node.js server. If you haven’t already, navigate to your project’s root folder (where your Ionic app lives) and create a new folder called backend. Inside that folder, create a file called server.js
and add the following code:
const express = require('express');
const cors = require('cors');
const app = express();
const port = 3000;
app.use(cors());
app.get('/api/message', (req, res) => {
res.json({ message: 'Hello from Node.js!' });
});
app.listen(port, () => {
console.log(`Server is running on http://localhost:${port}`);
});
This creates a simple Express server that listens on port 3000 and has one route (/api/message
) that returns a JSON response.
Step 2: Installing Dependencies
Before we can run the server, we need to install the necessary dependencies. Open your terminal, navigate to the backend
folder, and run the following command:
npm init -y
npm install express cors
Step 3: Running the Server
Now, start the server by running:
node server.js
You should see a message saying that the server is running on http://localhost:3000
.
Step 4: Connecting the Ionic App to the Backend
Now that the server is up and running, let’s connect your Ionic app to it. Open up home.page.ts
and modify the showMessage()
method to fetch data from the Node.js server:
async showMessage() {
const response = await fetch('http://localhost:3000/api/message');
const data = await response.json();
const toast = await this.toastController.create({
message: data.message,
duration: 2000,
position: 'bottom',
});
toast.present();
}
This code makes an HTTP request to the Node.js server and displays the message it gets back.
Step 5: Testing It Out
Go ahead and test your app by clicking the button again. This time, you should see the message “Hello from Node.js!” instead of the default text.
Wrapping Up
Congratulations! You’ve just built your first Ionic app with basic styling, interactivity, and navigation. You’ve also connected it to a simple Node.js backend, which is a big step toward building more complex, data-driven apps.
For now, take a moment to appreciate what you’ve accomplished—you’re well on your way to becoming a pro at building cross-platform apps!