Blog

  • Angular 17 Crud Tutorial Working Example

    Angular 17 Crud Tutorial Working Example

    Hello to all, welcome to therichpost.com. In this post, I will tell you, Angular 17 Crud Tutorial Working Example.

    Guys with this we will cover below things:

    1. Angular 17 Reactive Form Implelemtnation.
    2. Angular17 Reactive Form Responsiveness with Bootstrap 5.
    3. Angular 17 with Local Storage data saving.
    Live Demo
    Angular 17 Crud Tutorial Working Example
    Angular 17 Crud Tutorial Working Example

    Angular 17 came and if you are new then you must check below link:

    1. Angular 17 Tutorials

    Here is the code snippet and please use carefully:

    1. Very first guys, here are common basics steps to add angular 17 (crud) application on your machine and also we must have latest nodejs latest version installed for angular 17:

    $ npm install -g @angular/cli
    
    $ ng new angularform // Set Angular 17 Application on your pc
    
    cd angularform // Go inside project folder

    2. Now run below commands to set bootstrap 5 modules into our angular 17 application for responsiveness (optional):

    npm install bootstrap
    
    npm i @popperjs/core

    3. Now friends we just need to add below code into angularform/angular.json file (optional):

    "styles": [
                  ...
                  "node_modules/bootstrap/dist/css/bootstrap.min.css"
              ],

    4. Now guys we will add below code into our angularform/src/app/app.component.ts file:

    import { Component } from '@angular/core';
    import { FormBuilder, FormGroup, Validators } from '@angular/forms';
    import { ReactiveFormsModule } from '@angular/forms';
    import { CommonModule } from '@angular/common';
    @Component({
      selector: 'app-root',
      standalone: true,
      templateUrl: './app.component.html',
      imports: [CommonModule, ReactiveFormsModule],
      styleUrls: ['./app.component.css']
    })
    export class AppComponent {
      title = 'angular17demos';
    
       loginForm: FormGroup;
      loginList: any[] = [];
      selectedIndex: number = -1;
      isEditMode: boolean = false;
      isSubmitMode: boolean = true;
      passwordFieldType: string = 'password'; // To toggle password field type
    
      constructor(private formBuilder: FormBuilder) {
        this.loginForm = this.formBuilder.group({
          Email: [''],
          Password: [''],
        });
      }
    
      ngOnInit(): void {
        let data = localStorage.getItem('loginList');
        this.loginList = JSON.parse(data || '[]');
      }
    
      submit() {
        console.log(this.loginForm.value);
        if (this.isEditMode) {
          this.updateData();
        } else {
          this.addNewData();
        }
        this.clear();
      }
    
      edit(i: number) {
        this.loginForm.patchValue({
          Email: this.loginList[i].Email,
          Password: this.loginList[i].Password,
        });
        this.selectedIndex = i;
        this.isEditMode = true;
        this.isSubmitMode = false;
      }
    
      updateData() {
        if (this.selectedIndex !== -1) {
          this.loginList[this.selectedIndex].Email = this.loginForm.value.Email;
          this.loginList[this.selectedIndex].Password = this.loginForm.value.Password;
          localStorage.setItem('loginList', JSON.stringify(this.loginList));
        }
        this.clearEditMode();
      }
    
      addNewData() {
        this.loginList.push(this.loginForm.value);
        localStorage.setItem('loginList', JSON.stringify(this.loginList));
      }
    
      clear() {
        this.loginForm.reset();
        this.clearEditMode();
      }
    
      clearEditMode() {
        this.selectedIndex = -1;
        this.isEditMode = false;
        this.isSubmitMode = true;
      }
    
      delete(i: number) {
        this.loginList.splice(i, 1);
        localStorage.setItem('loginList', JSON.stringify(this.loginList));
      }
    
      togglePasswordVisibility() {
        this.passwordFieldType = this.passwordFieldType === 'password' ? 'text' : 'password';
      }
    }

    5. Finally we will add below code into our angularform/src/app/app.component.html file:

    <div class="container mt-5 mb-5">
        <div class="row">
            <div class="col-lg-4">
                <form [formGroup]="loginForm" class="bg-light p-4 rounded">
                    <h3 class="mb-4">{{ isEditMode ? 'Edit' : 'Add' }} User</h3>
                    <div class="mb-3">
                        <label for="exampleInputEmail1" class="form-label">Email address</label>
                        <input class="form-control" formControlName="Email" placeholder="Enter your email">
                    </div>
    
                    <div class="mb-3">
                        <label for="exampleInputPassword1" class="form-label">Password</label>
                        <input [type]="passwordFieldType" class="form-control" formControlName="Password"
                            placeholder="Enter your password">
                    </div>
    
                    <div class="mb-3 form-check">
                        <input type="checkbox" class="form-check-input" id="showPasswordCheckbox"
                            (change)="togglePasswordVisibility()">
                        <label class="form-check-label" for="showPasswordCheckbox">Show Password</label>
                    </div>
    
                    <div class="text-center">
                        <button type="button" class="btn btn-dark me-2" (click)="clear()">Clear</button>
                        <button type="button" class="btn btn-success ml-2" (click)="submit()">{{ isEditMode ? 'Update' :
                            'Submit' }}</button>
                    </div>
                </form>
            </div>
    
            <div class="col-lg-8">
                <table class="table table-striped table-bordered">
                    <thead class="thead-dark">
                        <tr>
                            <th scope="col">#</th>
                            <th scope="col">Email</th>
                            <th scope="col">Password</th>
                            <th>Action</th>
                        </tr>
                    </thead>
                    <tbody>
                        <tr *ngFor="let l of loginList; let i = index">
                            <td>{{i + 1}}</td>
                            <td>{{l.Email}}</td>
                            <td>{{l.Password}}</td>
                            <td>
                                <button type="button" class="btn btn-primary btn-sm me-2" (click)="edit(i)">Edit</button>
                                <button type="button" class="btn btn-danger btn-sm ml-1" (click)="delete(i)">Delete</button>
                            </td>
                        </tr>
                    </tbody>
                </table>
            </div>
        </div>
    </div>

    Now we are done friends and please run ng serve command to check the output in browser(locahost:4200) and if you have any kind of query then please do comment below.

    Note: Friends, I just tell the basic setup and things, you can change the code according to your requirements. For better understanding please watch video above.

    Guys I will appreciate that if you will tell your views for this post. Nothing matters if your views will be good or bad.

    Jassa

    Thanks

  • Customized FullCalendar in Reactjs

    Customized FullCalendar in Reactjs

    Hello to all, welcome back to my blog therichpost.com. Today in this post, I am going to tell you, RCustomized FullCalendar in Reactjs.

    Key Features:

    1. Reactjs
    2. FullCalendar
    3. Drag Drop
    4. Custom button
    Reactjs full-calendar working
    Customized FullCalendar in Reactjs
    Customized FullCalendar in Reactjs

    Here you can check more posts related to fullcalendar with other programming languages and reactjs more tutorials:

    Fullcalendar Multiple Uses

    Reactjs


    Guy’s here is the working code snippet and please use carefully:

    1. Firstly, we need to get fresh react set and for this we need to run below commands into our terminal and make sure, we should have latest node installed in my our system: 

    npx create-react-app therichpost
    
    cd therichpost
    
    npm start

    2. Now we need to run below commands to get fullcalendar and bootstrap(option but I use for better looks) modules into our reactjs app:

    npm install --save @fullcalendar/react @fullcalendar/daygrid
    npm i @fullcalendar/interaction
    npm i bootstrap
    npm start //start the application

    3. Finally, we need to add below code into our src/App.js file to get fullcalendar and its events working:

    import React from 'react';
    import 'bootstrap/dist/css/bootstrap.min.css';
    //Importing Calendar Modules
    import FullCalendar from '@fullcalendar/react'
    import dayGridPlugin from '@fullcalendar/daygrid'
    import interactionPlugin from '@fullcalendar/interaction'
    
    class Home extends React.Component {
        
     
      render() {
       
        return (
         
          <div className="container p-5">
               <FullCalendar
                        plugins={[dayGridPlugin, interactionPlugin]}
                        droppable={true}
                        editable={true}
                        selectable={true}
                        initialView='dayGridMonth'
                        customButtons={{
                            myCustomButton: {
                              text: 'Custom Button!',
                              click: function() {
                                alert('clicked the custom button!');
                              },
                            },
                          }}
                        headerToolbar={{
                          start: 'title', // will normally be on the left. if RTL, will be on the right
                          center: 'today myCustomButton',
                          end: 'prev,next', // will normally be on the right. if RTL, will be on the left
                        }}
                       
                        events={[
                          { title: 'event 1', date: '2023-10-08' },
                          { title: 'event 2', date: '2023-10-10' },
                        ]}
                      />
          </div>
    )
    };
    }
    
    export default Home;

    This is it friends and if you have any kind of query then please do comment below. Also please share your views on this post.

    Guy’s after this, I will come with reactjs fullcalender more posts and if you have any kind of suggestion or requirement then can comment below.

    Jassa

    Thanks

  • Modern Ecommerce website made with Reactjs Framework

    Modern Ecommerce website made with Reactjs Framework

    Hello friends, welcome back to my blog. Today this blog post will tell you how to build Modern Ecommerce website made with Reactjs Framework.

    Key Features:

    1. React Latest Version
    2. Redux
    3. Redux-Saga
    4. Sass
    5. User Login, Sign Up
    Live Demo

    For React new comers, please check the below link:

    1. Reactjs Basic Tutorials

    Guys here is the git repo link and please follow this:

    Git Repo Link

    Now we are done friends. If you have any kind of query, suggestion and new requirement then feel free to comment below.

    Note: Friends, In this post, I just tell the basic setup and things, you can change the code according to your requirements.

    I will appreciate that if you will tell your views for this post. Nothing matters if your views will be good or bad because with your views, I will make my next posts more good and helpful.

    Jassa

    Thanks

  • Angular 16+ Data Sharing | State Management Between Components Using NGRX

    Angular 16+ Data Sharing | State Management Between Components Using NGRX

    Hello to all, welcome to therichpost.com. In this post, I will tell you, Angular 16+ Data Sharing | State Management Between Components Using NGRX.

    Live Demo

    Angular 17 came and if you are new then please check below links:

    Angular 16 Basic Tutorials


    Angular 16+ Data Sharing | State Management Between Components Using NGRX
    Angular 16+ Data Sharing | State Management Between Components Using NGRX

    Here is the code snippet and please use it carefully:

    1. Very first, you need run below commands into your terminal to get angular 17 fresh setup:

    Also you have latest nodejs installed on your system

    npm install -g @angular/cli //Setup Angular17 atmosphere
    
    ng new angularngrx //Install New Angular App
    
    /**You need to update your Nodejs also for this verison**/
    
    cd angularngrx //Go inside the Angular 17 Project

    2. Now run below commands into your terminal to get ngrx and bootstrap modules into your angular 17 application:

    I use mostly use bootstrap to make application looks good

    npm install bootstrap --save
    
    npm install @ngrx/store --save

    3. Now add below code into your angular.json file:

    "styles": [
      ...
      "node_modules/bootstrap/dist/css/bootstrap.min.css",
      
    ],
    ...

    4. Now you have to create counter.actions.ts file inside src/app folder and add below code into that file:

    import { createAction } from '@ngrx/store';
    
    export const increment = createAction('[Counter Component] Increment');
    export const decrement = createAction('[Counter Component] Decrement');
    export const reset = createAction('[Counter Component] Reset');

    5. Now create counter.reducer.ts file inside src/app folder and add below code into that file:

    import { createReducer, on } from '@ngrx/store';
    import { increment, decrement, reset } from './counter.actions';
    
    export const initialState = 0;
    
    const _counterReducer = createReducer(initialState,
      on(increment, state => state + 1),
      on(decrement, state => state - 1),
      on(reset, state => 0),
    );
    
    export function counterReducer(state:any, action:any) {
      return _counterReducer(state, action);
    }

    6. Now run below command into your terminal to create new component:

    ng g c componentsecond

    7. Now add below code into your src/app/app.module.ts file:

    ...
    import { StoreModule } from '@ngrx/store';
    import { counterReducer } from './counter.reducer';
    import { Routes, RouterModule } from '@angular/router';
    const appRoutes: Routes = [
      { path: 'secondcomponent', component: ComponentsecondComponent }
    ];
    ...
    imports: [
       ...
       StoreModule.forRoot({ count: counterReducer }),
        RouterModule.forRoot(
          appRoutes,
         { enableTracing: true } // <-- debugging purposes only
        ) 
      ],

    8. Now add below code into src/app/app/component.ts file:

    ...
    import { Store, select } from '@ngrx/store';
    import { Observable } from 'rxjs';
    import { increment, decrement, reset } from './counter.actions';
    ...
    export class AppComponent {
    ...
    count$: Observable<number>; 
    constructor( private store: Store<{ count: number }>){
        this.count$ = store.pipe(select('count'));
      }
    increment() {
        this.store.dispatch(increment());
      }
     
      decrement() {
        this.store.dispatch(decrement());
      }
     
      reset() {
        this.store.dispatch(reset());
      }
    }

    9. Now add below into src/app/app.component.html file:

    <nav class="navbar navbar-expand-sm bg-light">
    
      <!-- Links -->
      <ul class="navbar-nav">
        <li class="nav-item">
          <a class="nav-link" [routerLink]="['/']">Home</a>
        </li>
        <li class="nav-item">
          <a class="nav-link" [routerLink]="['/secondcomponent']">Second Component</a>
        </li>
      </ul>
    
    </nav>
    <div class="container text-center">
      <h1 class="mt-5 mb-5">Angular 17 NGRX Working Example with multiple Components</h1>
    
      <button class="btn btn-primary mb-5 mt-5" id="increment" (click)="increment()">Increment</button>
    
       <div>Current Count: {{ count$ | async }}</div>
    
       <button class="btn btn-primary mb-5 mt-5 mr-5" id="decrement" (click)="decrement()">Decrement</button>
    
       <button class="btn btn-primary" id="reset" (click)="reset()">Reset Counter</button>
    
    <router-outlet></router-outlet>
    </div>

    10. Now add below into your src/app/componentsecond/componentsecond.component.ts file:

    ...
    import { Store, select } from '@ngrx/store';
    import { Observable } from 'rxjs';
    
    export class ComponentsecondComponent implements OnInit {
      ...
      count$: Observable<number>; 
      constructor( private store: Store<{ count: number }>) { this.count$ = store.pipe(select('count')); }
    
      
    
    }
    

    11. Finally add below into your src/app/componentsecond/componentsecond.component.html file:

    <div>Current Count: {{ count$ | async }}</div>

    This is it and don’t forget to run ng serve command in the end. If you have any kind of query then please do comment below.

    Note:

    The main purpose of this pot is to tell you, how to easily share data between components in angular 17.

    Jassa

    Thanks

  • Vue js Vue 3 Free Admin Dashboard Template 15

    Vue js Vue 3 Free Admin Dashboard Template 15

    Hello friends, welcome back to my blog. Today this blog post will tell you Vue js Vue 3 Free Admin Dashboard Template 15.

    Guys in this project below things have been used:

    1. Vue 3(vuejs)
    2. Vite
    3. Vue Routing
    4. Responsive Pages
    5. Tailwind Css
    Live Demo

    Guys if you are new in Vue then please check the below links:

    1. Vuejs
    2. Ecommerce Vue Templates
    Vue js Vue 3 Free Admin Dashboard Template 15
    Vue js Vue 3 Free Admin Dashboard Template 15

    Guys here is the git repo link:

    Git Repo

    Now we are done friends. If you have any kind of query, suggestion and new requirement then feel free to comment below.

    Note: Friends, In this post, I just tell the basic setup and things, you can change the code according to your requirements.

    I will appreciate that if you will tell your views for this post. Nothing matters if your views will be good or bad because with your views, I will make my next posts more good and helpful.

    Jassa

    Thanks

  • Vuejs Free Admin Dashboard Template 10

    Vuejs Free Admin Dashboard Template 10

    Hello friends, welcome back to my blog. Today this blog post will tell you Vuejs Free Admin Dashboard Template 10.

    Guys in this project below things have been used:

    1. Vue 3(vuejs)
    2. Vite
    3. Vue Routing
    4. Responsive Pages
    Live Demo

    Guys if you are new in Vue then please check the below links:

    1. Vuejs
    2. Ecommerce Vue Templates
    Vuejs Free Admin Dashboard Template 10
    Vuejs Free Admin Dashboard Template 10

    Guys here is the git repo link:

    Git Repo

    Now we are done friends. If you have any kind of query, suggestion and new requirement then feel free to comment below.

    Note: Friends, In this post, I just tell the basic setup and things, you can change the code according to your requirements.

    I will appreciate that if you will tell your views for this post. Nothing matters if your views will be good or bad because with your views, I will make my next posts more good and helpful.

    Jassa

    Thanks

  • Free User Management Admin Dashboard Template 26

    Free User Management Admin Dashboard Template 26

    Hello guys how are you? Welcome back on my blog Therichpost. Today in this post I am going to share Free User Management Admin Dashboard Template 26.

    Live working demo

    1. Guys here the git repo link for Inventory Management Admin Dashboard:

    Free Admin Dashboard

    Guys for more Admin and Bootstrap 5 templates please click this link : Free Templates

    I will appreciate that if you will tell your views for this post. Nothing matters if your views will be good or bad because with your views, I will make my next posts more good and helpful.

  • Free Admin Dashboard Template 25 in HTML

    Free Admin Dashboard Template 25 in HTML

    Hello guys how are you? Welcome back on my blog Therichpost. Today in this post I am going to share Free Admin Dashboard Template 25 in HTML.

    Live working demo

    1. Guys here the git repo link for Inventory Management Admin Dashboard:

    Free Admin Dashboard

    Guys for more Admin and Bootstrap 5 templates please click this link : Free Templates

    I will appreciate that if you will tell your views for this post. Nothing matters if your views will be good or bad because with your views, I will make my next posts more good and helpful.

  • Reactjs Free Admin Dashboard using ANT Design(ANTD)

    Reactjs Free Admin Dashboard using ANT Design(ANTD)

    Hello friends, welcome back to my blog. Today in this blog post, I am going to tell you, Reactjs Free Admin Dashboard using ANT Design(ANTD).

    Live Demo

    For reactjs new comers, please check the below link:

    Reactjs Basic Tutorials

    Reactjs Free Admin Dashboard using ANT Design(ANTD)
    Reactjs Free Admin Dashboard using ANT Design(ANTD)

    Friends here is the code snippet for Reactjs Free Admin Dashboard using ANT Design(ANTD) and please use this code snippet carefully to avoid the mistakes:

    1. Firstly friends we need fresh reactjs setup and for that we need to run below commands into our terminal and also w should have latest node version installed on our system:

    npx create-react-app reactdemo
    
    cd reactdemo
    
    npm install antd --save
    
    npm start // run the project

    2. Finally friends we need to add below code into our src/App.js file to get final output on web browser:

    import React, { useState } from 'react';
    import {
      DesktopOutlined,
      FileOutlined,
      PieChartOutlined,
      TeamOutlined,
      UserOutlined,
    } from '@ant-design/icons';
    import { Breadcrumb, Layout, Menu, theme, Carousel, Table, Col, Divider, Row, Card } from 'antd';
    const { Header, Content, Footer, Sider } = Layout;
    
    //table data
    
    const columns = [
      {
        title: 'Name',
        dataIndex: 'name',
      },
      {
        title: 'Chinese Score',
        dataIndex: 'chinese',
        sorter: {
          compare: (a, b) => a.chinese - b.chinese,
          multiple: 3,
        },
      },
      {
        title: 'Math Score',
        dataIndex: 'math',
        sorter: {
          compare: (a, b) => a.math - b.math,
          multiple: 2,
        },
      },
      {
        title: 'English Score',
        dataIndex: 'english',
        sorter: {
          compare: (a, b) => a.english - b.english,
          multiple: 1,
        },
      },
    ];
    const data = [
      {
        key: '1',
        name: 'John Brown',
        chinese: 98,
        math: 60,
        english: 70,
      },
      {
        key: '2',
        name: 'Jim Green',
        chinese: 98,
        math: 66,
        english: 89,
      },
      {
        key: '3',
        name: 'Joe Black',
        chinese: 98,
        math: 90,
        english: 70,
      },
      {
        key: '4',
        name: 'Jim Red',
        chinese: 88,
        math: 99,
        english: 89,
      },
    ];
    function getItem(label, key, icon, children) {
      return {
        key,
        icon,
        children,
        label,
      };
    }
    const contentStyle = {
      margin: 0,
      height: '260px',
      color: '#fff',
      lineHeight: '160px',
      textAlign: 'center',
      background: '#364d79',
    };
    const items = [
      getItem('Option 1', '1', <PieChartOutlined />),
      getItem('Option 2', '2', <DesktopOutlined />),
      getItem('User', 'sub1', <UserOutlined />, [
        getItem('Tom', '3'),
        getItem('Bill', '4'),
        getItem('Alex', '5'),
      ]),
      getItem('Team', 'sub2', <TeamOutlined />, [getItem('Team 1', '6'), getItem('Team 2', '8')]),
      getItem('Files', '9', <FileOutlined />),
    ];
    const style: React.CSSProperties = { background: '#0092ff', padding: '8px 0' };
    const App = () => {
      const [collapsed, setCollapsed] = useState(false);
      const {
        token: { colorBgContainer },
      } = theme.useToken();
      return (
        <Layout
          style={{
            minHeight: '100vh',
          }}
        >
          
        
          <Sider collapsible collapsed={collapsed} onCollapse={(value) => setCollapsed(value)}>
            <div className="demo-logo-vertical" />
            <Menu theme="dark" defaultSelectedKeys={['1']} mode="inline" items={items} />
          </Sider>
          <Layout>
            <Header
              style={{
                padding: 0,
                background: colorBgContainer,
              }}
            />
            <Content
              style={{
                margin: '0 16px',
              }}
            >
              <Breadcrumb
                style={{
                  margin: '16px 0',
                }}
              >
                <Breadcrumb.Item>Dashboard</Breadcrumb.Item>
              </Breadcrumb>
              <div
                style={{
                  padding: 24,
                  minHeight: 360,
                  background: colorBgContainer,
                }}
              >
                  <Row justify="start" gutter={16}>
                  <Col span={8}> <Card style={{background: "#0092ff"}} title="User" bordered={false}>
                    12M
                  </Card></Col>
                  <Col span={8}> <Card style={{background: "#ffc107"}} title="Profit" bordered={false}>
                    123M$
                  </Card></Col>
                  <Col span={8}> <Card style={{background: "#e78493"}} title="Total" bordered={false}>
                    1000693M$
                  </Card></Col>
                </Row>
                <Divider orientation="left"></Divider>
                <Carousel>
                  <div>
                    <h3 style={contentStyle}>1</h3>
                  </div>
                  <div>
                    <h3 style={contentStyle}>2</h3>
                  </div>
                  <div>
                    <h3 style={contentStyle}>3</h3>
                  </div>
                  <div>
                    <h3 style={contentStyle}>4</h3>
                  </div>
                </Carousel>
              </div>
              <div  style={{
                  padding: 24,
                  minHeight: 360,
                  background: colorBgContainer,
                }}s>
              <Table columns={columns} dataSource={data} />
              </div>
            </Content>
            <Footer
              style={{
                textAlign: 'center',
              }}
            >
               ©2023 Jassa
            </Footer>
          </Layout>
        </Layout>
      );
    };
    export default App;

    Now we are done friends. If you have any kind of query or suggestion or any requirement then feel free to comment below.

    Note: Friends, I just tell the basic setup and things, you can change the code according to your requirements. For better understanding must watch video above.
    I will appreciate that if you will tell your views for this post.Nothing matters if your views will good or bad.

    Jassa

    Thanks

  • Build Foodie Restaurant Website in Angular 16 +

    Build Foodie Restaurant Website in Angular 16 +

    Hello friends, welcome back to my blog. Today this blog post will tell you Build Foodie Restaurant Website in Angular 16 +.

    Live Demo
    Build Foodie Restaurant Website in Angular 16 +
    Build Foodie Restaurant Website in Angular 16 +

    Angular 16 and Bootstrap 5 came and if you are new then you must check below two links:

    1. Angular16 Basic Tutorials
    2. Bootstrap 5
    3. Ecommerce Angular Templates

    Friends now I proceed onwards and here is the working code snippet and please use carefully this to avoid the mistakes:

    1. Firstly friends we need fresh angular 16 setup and for this we need to run below commands but if you already have angular 16 setup then you can avoid below commands. Secondly we should also have latest node version installed on our system:

    npm install -g @angular/cli 
    
    ng new angulardemo//Create new Angular Project 
    
    cd angulardemo // Go inside the Angular Project Folder

    2. Now friends we just need to add below code into angulardemo/src/app/app.component.html file to get final out on the web browser:

    <app-header></app-header>
      <!-- section-1 top-banner -->
      <section id="home" class="banner_wrapper">
    
        <div class="container">
            <div class="row align-items-center">
                <div class="col-lg-5 text-center text-lg-start order-lg-1 order-2">
                    <h1>It’s Not Just <span>Food</span>, It’s an <span>Experience</span></h1>
                    
            <div class="mt-4">
                <a href="#menu"><button class="orange-btn" >Menu</button></a>
                <a href="#contact"><button class="main-btn ms-lg-4 mt-lg-0 mt-4" href="#contact" >Visit Us</button></a>
    
            </div>
        </div>
        <div class="col-lg-7 text-center order-lg-2 order-0 ">
            <img src="assets/images/food.png" style="float:right" class="img-fluid">
        </div>
        </div>
    
      <!-- section-2 counter -->
      <section id="counter">
        <section class="counter-section">
          <div class="container">
            <div class="row text-center">
              <div class="col-md-3 mb-lg-0 mb-md-0 mb-5">
                <h2>
                  <span id="count1"></span>+
                </h2>
                <p>Happy Customers</p>
              </div>
              <div class="col-md-3 mb-lg-0 mb-md-0 mb-5">
                <h2>
                  <span id="count2"></span>+
                </h2>
                <p>PHOTOS</p>
              </div>
              <div class="col-md-3 mb-lg-0 mb-md-0 mb-5">
                <h2>
                  <span id="count3"></span>+
                </h2>
                <p>Dishes</p>
              </div>
              <div class="col-md-3 mb-lg-0 mb-md-0 mb-5">
                <h2>
                  <span id="count4"></span>+
                </h2>
                <p>Stores</p>
              </div>
            </div>
          </div>
        </section>
      </section>
    
      <!-- section-3 about-->
      <section id="story">
        <div class="about-section wrapper">
          <div class="container">
            <div class="row align-items-center">
              <div class="col-lg-7 col-md-12 mb-lg-0 mb-5">
                <div class="card border-0">
                  <img src="assets/images/About\about2.png" class="img-fluid">
                </div>
              </div>
              <div class="col-lg-5 col-md-12 text-sec">
               <h2 class="black">We pride ourselves on making real food from the best ingredients.</h2>
               <p>This prompted the burning desire for transparency in all of the ingredients we use. Everything we make is listed on the label and there’s no mystery ingredients or natural flavors to hide. We use the best of what Mother Nature has to offer.</p>
               <a href="#" target="_blank"><button class="orange-btn mt-4">Learn More</button></a>
              </div>
            </div>
          </div>
          <br><br>
          <div class="container food-type">
            <div class="row align-items-center">
              <div class="col-lg-5 col-md-12 text-sec mb-lg-0 mb-5">
               <h2 class="black">We make everything by hand with the best possible ingredients.</h2>
               <p>We believe that honesty and simplicity are the keys to meeting the challenges of everyday life. That's why we created a simple snack that we believe will help encourage you to live a healthier life. You'll be amazed at how the smallest changes can have the biggest impact. We want you to know that we promise to deliver the best we have to offer every time.</p>
               <ul class="list-unstyled py-3">
                 <li>Fresh ingredients from Farm</li>
                 <li>Quick and fast service</li>
                 <li>Hygiene and sanitized</li>
               </ul> 
               <a href="#" target="_blank"><button class="orange-btn mt-4">Learn More</button></a>
              </div>
              <div class="col-lg-7 col-md-12">
                <div class="card border-0">
                  <img src="assets/images/About\about1.png" class="img-fluid">
                </div>
              </div>
            </div>
          </div>
        </div>
      </section>
    
    
       <!-- menu section -->
      
    
    <!-- Offer Section -->
    <section id="menu" class="offers_wrapper">
        <div class="container">
            <div class="row">
                <div class="col-sm-12 text-center mb-4">
                    <h2 class="black">Our Menu</h2>
                    <p>There are many variations of food however,<br class="d-none d-md-block">
                      Tantalizing food can make a huge difference.</p>
                </div>
            </div>
            <div class="row">
                <div class="col-md-6 mb-4">
                    <div class="card rounded-0" style="background-image: url('assets/images/menu/tandoori2.png')">
                        <div class="offer-text bg-black bg-opacity-50">
                            <h3 class="text-white">Tandoori chicken</h3>
                            <h5>$8.50 <del class="fst-italic opacity-75">$10.50</del></h5>
                            <a href="#" target="_blank" class="white-btn mt-3">Add TO Cart</a>
                        </div>
                    </div>
                </div>
                <div class="col-md-6 mb-4">
                    <div class="card rounded-0" style="background-image: url('assets/images/menu/chicken-tikka2.png')">
                        <div class="offer-text bg-black bg-opacity-50">
                            <h3 class="text-white">Chicken Tikka </h3>
                            <h5>$18.50 <del class="fst-italic opacity-75">$20.50</del></h5>
                            <a href="#" target="_blank" class="white-btn mt-3">Add TO Cart</a>
                        </div>
                    </div>
                </div>
                <div class="col-md-6 mb-4">
                    <div class="card rounded-0" style="background-image: url('assets/images/menu/grilled-chicken2.png')">
                        <div class="offer-text bg-black bg-opacity-50">
                            <h3 class="text-white">Grilled Chicken</h3>
                            <h5>$15 <del class="fst-italic opacity-75">$20</del></h5>
                            <a href="#" target="_blank" class="white-btn mt-3">Add TO Cart</a>
                        </div>
                    </div>
                </div>
                <div class="col-md-6 mb-4">
                    <div class="card rounded-0" style="background-image: url('assets/images/menu/lemon-chicken2.png')">
                        <div class="offer-text bg-black bg-opacity-50">
                            <h3 class="text-white">Lemon Chicken</h3>
                            <h5>$8.50 <del class="fst-italic opacity-75">$10.50</del></h5>
                            <a href="#" target="_blank" class="white-btn mt-3">Add TO Cart</a>
                        </div>
                    </div>
                </div>
                <div class="col-md-6 mb-4">
                    <div class="card rounded-0" style="background-image: url('assets/images/menu/cajun-chicken2.png')">
                        <div class="offer-text bg-black bg-opacity-50">
                            <h3 class="text-white">Cajun Chicken</h3>
                            <h5>$12.50 <del class="fst-italic opacity-75">$20.50</del></h5>
                            <a href="#" target="_blank" class="white-btn mt-3">Add TO Cart</a>
                        </div>
                    </div>
                </div>
                <div class="col-md-6 mb-4">
                    <div class="card rounded-0" style="background-image: url('assets/images/menu/chicken-kiev2.png')">
                        <div class="offer-text bg-black bg-opacity-50">
                            <h3 class="text-white">Chicken Kiev</h3>
                            <h5>$8.50 <del class="fst-italic opacity-75">$10.50</del></h5>
                            <a href="#" target="_blank" class="white-btn mt-3">Add TO Cart</a>
                        </div>
                    </div>
                </div>
            </div>
        </div>
    </section>
    
      <!-- Section-5 testimonial-->
      <section id="review">
        <div class="wrapper testimonial-section">
          <div class="container text-center">
            <div class="text-center pb-4">
              <h2>Reviews</h2>
            </div>
            <div class="row">
             <div class="col-sm-12 col-lg-10 offset-lg-1">
               <div id="carouselExampleDark" class="carousel slide" data-bs-ride="carousel">
                 <div class="carousel-indicators">
                   <button type="button" data-bs-target="#carouselExampleDark" data-bs-slide-to="0" class="active"
                     aria-current="true" aria-label="Slide 1"></button>
                   <button type="button" data-bs-target="#carouselExampleDark" data-bs-slide-to="1"
                     aria-label="Slide 2"></button>
                   <button type="button" data-bs-target="#carouselExampleDark" data-bs-slide-to="2"
                     aria-label="Slide 3"></button>
                 </div>
                 <div class="carousel-inner">
                   <div class="carousel-item active">
                     <div class="carousel-caption">
                       <img src="assets/images/reviwers\reviwe1.png">
                       <p>"We believe that honesty and simplicity are the keys to meeting the challenges of everyday life."
    
                       </p>
                       <h5 class="orange">Johnthan Doe - Times Now</h5>
                     </div>
                   </div>
                   <div class="carousel-item">
                     <div class="carousel-caption">
                       <img src="assets/images/reviwers\review2.jpg">
                       <p>"The absolute best red sauce. Weather on Pizza or Pasta, it’s honestly delicious."</p>
                       <h5 class="orange">Maccy Doe - Ziggle Foods</h5>
                     </div>
                   </div>
                   <div class="carousel-item">
                     <div class="carousel-caption">
                       <img src="assets/images/reviwers\review-3.jpeg">
                       <p>"Very good service, good menu … not overly extensive. Food was very good quality all around. "</p>
                       <h5 class="orange">Johnthan Doe - Hello Food reviews</h5>
                     </div>
                   </div>
                 </div>
               </div>
             </div>
           </div>
          </div>
        </div>
      </section>
    
    
    
      <!-- section-6 Health tips-->
      <br><br>
    
      <section id="health" class="review_wrapper">
        <div class="container">
            <div class="row">
                <div class="col-lg-5 col-md-7 col-sm-7">
                  <div class="text-center pb-4">
                    <h2 class="black">Health Tips</h2>
                    <p>Eat healthy</p>
                  </div>
                    <div class="card rounded-0 bg-white p-2">
                        <div id="carouselExampleCaptions" class="carousel slide" data-bs-ride="carousel">
                            <div class="carousel-inner">
                                <div class="carousel-item active">
                                    <div class="carousel-caption">
                                        <img src="assets/images/icons\apple.png">
                                        <h3>Eat A healthy diet</h3>
                                        <p>Eat a combination of different foods, including fruit, vegetables, legumes, nuts and whole grains. 
                                          </p>
                                        <a href="#" class="main-btn mt-4">Learn More</a>
                                    </div>
                                </div>
                                <div class="carousel-item">
                                    <div class="carousel-caption">
                                        <img src="assets/images/icons\water.png">
                                        <h3>Stay Hydrated</h3>
                                        <p>Our bodies are roughly 60 percent water.Staying hydrated will also improve your body’s ability to absorb nutrients.</p>
                                        <a href="#" class="main-btn mt-4">Learn More</a>
                                    </div>
                                </div>
                            </div>
                            <button class="carousel-control-prev" type="button"
                                data-bs-target="#carouselExampleCaptions" data-bs-slide="prev">
                                <span class="carousel-control-prev-icon" aria-hidden="true"></span>
                                <span class="visually-hidden">Previous</span>
                            </button>
                            <button class="carousel-control-next" type="button"
                                data-bs-target="#carouselExampleCaptions" data-bs-slide="next">
                                <span class="carousel-control-next-icon" aria-hidden="true"></span>
                                <span class="visually-hidden">Next</span>
                            </button>
                        </div>
                    </div>
                </div>
            </div>
        </div>
    </section>
      
      <!-- section-7 Gallery-->
     <!-- Gallery -->
     <br><br>
    <section id="gallery">
      <div class="text-center pb-4">
        <h1 >Follow Us</h1>
        <a target="_blank" href="#"><h3 style="color:var(--primary-color)">@Kabab_and_kurry</h3></a>
        
      </div>
      <div class="row">
        <div class="col-lg-4 col-md-12 mb-4 mb-lg-0">
          <a target="_blank" href="#"><img
          src="assets/images/gallery\food.jpg"
          class="w-100 shadow-1-strong rounded mb-4"
          alt="Boat on Calm Water"
          /></a>
          
          <a target="_blank" href="#"><img
          src="assets/images/gallery\big.jpg"
          class="w-100 shadow-1-strong rounded mb-4"
          alt="Wintry Mountain Landscape"
          /></a>
      </div>
      
      <div class="col-lg-4 mb-4 mb-lg-0">
        <a target="_blank" href="#"><img
        src="assets/images/gallery\vert3.jpg"
        class="w-100 shadow-1-strong rounded mb-4"
        alt="Mountains in the Clouds"
        /></a>
        
        <a target="_blank" href="#"><img
        src="assets/images/gallery\food2.png"
        class="w-100 shadow-1-strong rounded mb-4"
        alt="Boat on Calm Water"
        /></a>
      </div>
      
      <div class="col-lg-4 mb-4 mb-lg-0">
        <a target="_blank" href="#"> <img
        src="assets/images/gallery\food3.jpg"
        class="w-100 shadow-1-strong rounded mb-4"
        alt="Waves at Sea"
        /></a>
        
        <a target="_blank" href="#"><img
        src="assets/images/gallery\tandoor.jpg"
        class="w-100 shadow-1-strong rounded mb-4"
        alt="Yosemite National Park"
        /></a>
      </div>
    </div>
    </section>
    
    <!-- section-8 newslettar-->
    <section id="contact">
      <div class="newslettar wrapper">
          <div class="container">
            <div class="row">
              <div class="sol-sm-12">
                <div class="text-content text-center pb-4">
                    <iframe src="https://www.google.com/maps/embed?pb=!1m18!1m12!1m3!1d109552.34355997699!2d75.85667325000001!3d30.900345199999997!2m3!1f0!2f0!3f0!3m2!1i1024!2i768!4f13.1!3m3!1m2!1s0x391a837462345a7d%3A0x681102348ec60610!2sLudhiana%2C%20Punjab!5e0!3m2!1sen!2sin!4v1696431599316!5m2!1sen!2sin" width="600" height="450" style="border:0;" allowfullscreen="" loading="lazy" referrerpolicy="no-referrer-when-downgrade"></iframe>
                 <h2 class="black">Vist us at Jassa Food !</h2>
                 <p>Hurry up! Subscribe our newsletter
                  and get 25% Off</p>
                </div>
                <form class="newsletter">
                  <div class="row">
                    <div class="col-md-8 col-12">
                      <input class="form-control" placeholder="Email Address here" name="email" type="email">
                    </div>
                    <div class="col-md-4 col-12">
                      <button class="main-btn" type="submit">Subscribe</button>
                    </div>
                  </div>
                </form>
              </div>
            </div>
          </div>
        </div>
      </section>
    
     <!-- section-9 footer-->
     <section id="contact" class="footer_wrapper mt-3 mt-md-0">
      <div class="container">
          <div class="row align-items-center">
              <div class="col-lg-4 col-md-6 text-center text-md-start">
                  <div class="footer-logo mb-3 mb-md-0">
                      <img src="assets/images/logo.svg">
                  </div>
              </div>
              <div class="col-lg-4 col-md-6">
                  <ul
                      class="list-unstyled d-flex justify-content-center justify-content-md-end justify-content-lg-center jus social-icon mb-3 mb-md-0">
                      <li>
                          <a href="#" target="_blank"><i class="fab fa-instagram"></i></a>
                      </li>
                      <li>
                          <a href="#" target="_blank"><i class="fab fa-facebook-f"></i> </a>
                      </li>
                      <li>
                          <a href="#" target="_blank"><i class="fab fa-twitter"></i></a>
                      </li>
                      <li>
                          <a href="#" target="_blank"><i class="fab fa-linkedin-in"></i> </a>
                      </li>
                  </ul>
              </div>
              <div class="col-lg-4 col-md-12">
                  <div class="copyright-text text-lg-start text-center mb-3 mb-lg-0">
                      <p class="mb-0">Copyright © 2023 <a href="#">Jassa</a>. All Rights Reserved.</p>
                  </div>
              </div>
          </div>
      </div>
    </section>

    3. Guys here is git repo link and put css,  js and images inside scr/assets folder:

    Git Repo

    4. Guys please add below code inside scr/index.html file:

    <!doctype html>
    <html lang="en">
    <head>
      <meta charset="utf-8">
      <title>Angular | Kabab and Kurry</title>
      <base href="/">
      <meta name="viewport" content="width=device-width, initial-scale=1">
      <!-- bootstrap CDN -->
      <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.0.1/dist/css/bootstrap.min.css" rel="stylesheet">
      <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.15.2/css/all.min.css">
     
     
      <link rel="icon" href="assets/images/fork.png"></link>
    </head>
    <body data-bs-spy="scroll" data-bs-target=".navbar" data-bs-offset="0">
      <app-root></app-root>
      <!-- JS Libraries -->
      <script src="https://cdn.jsdelivr.net/npm/@popperjs/core@2.9.2/dist/umd/popper.min.js"></script>
      <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.0.1/dist/js/bootstrap.min.js"></script>
      
      
    </body>
    </html>

    5. Guys please add below code inside angukar.json file:

    ... 
    "styles":
     [ ... "src/assets/css/style.css", "src/assets/css/responsive-style.css" ], 
    "scripts": [ "src/assets/js/main.js" ]

    Friends in the end must run ng serve command into your terminal to run the angular 16 ecommerce project.

    Now we are done friends. If you have any kind of query, suggestion and new requirement then feel free to comment below.

    Note: Friends, In this post, I just tell the basic setup and things, you can change the code according to your requirements.

    I will appreciate that if you will tell your views for this post. Nothing matters if your views will be good or bad because with your views, I will make my next posts more good and helpful.

    Jassa

    Thanks