# Creating your project

### Get Started with entering your project name

You will see this on terminal:

```
Enter your project name
```

### Enter the number of features for your flutter application.

Provide in integer value

```
Enter the number of features required in your $projectName
5
```

> Suppose if you are creating an e-commerce application using quickfire, then you may want these features:
>
> \[Home,  Wishlist, Cart, Orders, Admin]
>
> as you can see there are total of 5 features that you may require.

{% hint style="info" %}
Do not count or provide any 'auth' feature on your own, If you will choose an authencation service later on, as quickfire will automatically create an 'auth' feature
{% endhint %}

Quickfire works on a feature driven development (FDD) with Bloc State management.

### Enter each feature one-by-one

example :

```
Enter the name of feature 1 :
home
```

```
Enter the name of feature 2 :
wishlist
```

```
Enter the name of feature 3 :
cart
```

```
Enter the name of feature 4 :
orders
```

```
Enter the name of feature 5 :
admin
```

### [On-boarding](https://utkarshs-organization-1.gitbook.io/quickfire/understanding-your-project#understanding-the-onboarding-feature)

This creates a three-page onboarding screen which is shown only on the first launch of the application.

```
Do you want an on-boarding feature? 
* Yes
  No

```

{% hint style="info" %}
Along with onboarding you also get a global method to get the width and height of your screen without defining it everytime on each page.

`getScreenWidth(context)` and `getScreenHeight(context)` you can use these methods anywhere you want.
{% endhint %}

### Choose your backend service

Till now quickfire supports two backends&#x20;

* [Firebase](https://utkarshs-organization-1.gitbook.io/quickfire/understanding-your-project#setting-up-firebase)
* [Appwrite](https://utkarshs-organization-1.gitbook.io/quickfire/understanding-your-project#setting-up-appwrite)

Choosing any of this creates an `auth` feature inside `lib/features/` with working Authentication Screens, APIs, Auth State management, all of this without writing a single line of code.

You Basically get a working authentication system for your app in no-time.

### [Firebase Cloud Messaging with Flutter Local Notification](https://utkarshs-organization-1.gitbook.io/quickfire/understanding-your-project#setting-up-fcm)

If you have selected Firebase as your backend then Quickfire provides a way to implement Notification system using [Firebase Messaging](https://firebase.google.com/docs/cloud-messaging), both for foreground and background using [Flutter Local Notification](https://pub.dev/packages/flutter_local_notifications), all without writing any single line of code.

> This creates a `notification` feature inside `lib/features/`  folder.&#x20;

### Stripe Payment Integration

Quickfire Setups your project for Stripe Payment Gateway, so that you don't need to do it by yourself :smile:.

```
Do you want to integrate Stripe payment? 
* Yes
  No

```
