Angular 11 Node.js Mysql Crud Example

Angular-Nodejs-CRUD-MySQL-Example

Tutorial: “Angular 11 Node.js Mysql Crud Example – using Express and Sequelize ORM”

In the tutorial, I introduce how to build an Angular 11 Node.js MySQL CRUD Example RestAPIs Fullstack Project with the help of Express Web Framework and Sequelize ORM for POST/GET/PUT/DELETE requests with step by step coding examples.

Related posts:


Architecture for Angular 11 Node.js MySQL CRUD Example Fullstack

Angular 11 Node.js MySQL CRUD Example - Fullstack Angular 11 Node.js MySQL CRUD Example Application - Overview Architecture
Fullstack Angular Nodejs CRUD Application – Overview Architecture
  • We build backend Nodejs Application that provides RestAPIs for POST/GET/PUT/DELETE Customer entities and store them in MySQL/PostgreSQL database.
  • We implement Angular Application that use Angular HTTPClient to interact (call/receive requests) with SpringBoot backend and display corresponding page view in browser.

Nodejs CRUD RestAPIs Design

Nodejs-Build-CRUD-Application-Architecture-Overview
Nodejs-Build-CRUD-Application-Architecture-Overview

We have 4 main blocks for backend Node.js application:

  • For building RestAPIs in Node.js application, we use Express framework.
  • For interacting with database MySQL/PostgreSQL, we use Sequelize ORM.
  • We define APIs URL in router.js file
  • We implement how to process each API URL in controller.js file
  • We use Bootstrap and JQuery Ajax to implement frontend client.
Backend Nodejs Build Angular 11 Node.js MySQL CRUD Example - Project Structure
Backend Nodejs Build CRUD Application – Project Structure
  • config package is used to configure Sequelize and MySQL/PostgreSQL database environment
  • models package is used to define a Sequelize model to interact with database
  • routers package is used to define Rest APIs’ URL
  • controllers is used to implement business logic to processing each RestAPIs
  • views folder is used to implement HTML view pages
  • resources/js folder is used to implement JQuery Ajax to Post/Get/Put/Delete RestAPIs

Angular CRUD Design

Now I explain more about architecture of Angular application in the tutorial “Angular 11 Express MySQL CRUD Example”:

Angular 11 Node.js MySQL CRUD Example - Angular 11 Frontend Design Architecture
Angular Nodejs CRUD Application – Frontend Design Architecture

Angular CRUD Application is designed with 3 main layers:

  • Service Layer is used to define Angular Common Services and HttpClient Services to interact with RestAPIs
  • Component Layer is used to define Angular Components to show views in Browser for interacting with Users
  • Router Layer is used to route URLs mapping with the corresponding Angular Components

Angular Project Structure

Angular 11 Node.js MySQL CRUD Example - Angular Project Structure
Angular Nodejs CRUD Application – Project Structure

Angular CRUD Application defines 3 components, 2 services, 1 routers, and 2 data models:

– Components:

  • add-customer component is used to add a new customer to system
  • list-customer component is used to show all customers on view pages, delete a customer and update a customer
  • message component is used to define a view to show logging message on browser

– Services:

  • customer.service.ts defines POST/GET/PUT/DELETE HTTP requests to SpringBoot RestAPIs with the built-in Angular HttpClient.
  • message.service.ts defines an array storage to log all messages when Angular CRUD App running

– Router: app-routing.module.ts defines how to map a corresponding Angular component with an URL.

– Models:

  • customer.ts defines the main data model of our application.
  • message.ts defines the response data model between SpringBoot and Angular application.

Project Goal – Angular Nodejs CRUD Example

Here is the overview project goal of the tutorial “Angular 11 Express MySQL CRUD Example”:

– Add new Customer:

Angular Nodejs CRUD App - Add New Customers
Angular Nodejs CRUD App – Add New Customers

– List All Customers:

Angular List All Customers
Angular Nodejs CRUD Application – List All Customers

– Details a Customer:

Angular Details a Customer
Angular Nodejs CRUD App – Details a Customer

– Update a Customer:

Angular Update a Customer
Angular Nodejs CRUD Application – Update a Customer

– Delete a Customer:

Angular Delete a Customer successfully
Angular Nodejs CRUD App – Delete a Customer successfully

– Check database records:

Angular 11 Check Database Records
Angular Nodejs CRUD App – Check Database Records

Video Guide – Angular 11 Node.js Mysql Crud Example

Create Nodejs CRUD RestAPIs project

For building Nodejs CRUD Application, we need to use the below dependencies:

  • body-parser is used to parse a submit form to nodejs server
  • express is used to build restApis
  • mysql2 is used for MySQL driver
  • sequelize is used to do CRUD operation with MySQL/PostgreSQL database
  • cors is a node.js package for providing a Connect/Express middleware that can be used to enable CORS with various options

We install them with below commandline:


npm install --save body-parse express mysql2 sequelize cors

Check the package.json file:


{
  "name": "nodejs-build-crud-application",
  "version": "1.0.0",
  "description": "Nodejs Build Crud Application Post/Get/Put/Delete to MySQL/PostgreSQL with frontend is bootstrap framework",
  "main": "index.js",
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1"
  },
  "keywords": [
    "Nodejs",
    "RestAPI",
    "Express",
    "Tutorial",
    "MySQL",
    "PostgreSQL",
    "Bootstrap",
    "framework"
  ],
  "author": "https://loizenai.com",
  "license": "ISC",
  "dependencies": {
    "body-parser": "^1.19.0",
    "cors": "^2.8.5",
    "express": "^4.17.1",
    "mysql": "^2.18.1",
    "mysql2": "^2.1.0",
    "sequelize": "^5.21.13"
  }
}

Nodejs Express Sequelize Database Configuration

We define a db.config.js file to configure Sequelize to interact with MySQL/PostgreSQL database:


const env = require('./env.js');
 
const Sequelize = require('sequelize');
const sequelize = new Sequelize(env.database, env.username, env.password, {
  host: env.host,
  dialect: env.dialect,
  operatorsAliases: false,
 
  pool: {
    max: env.max,
    min: env.pool.min,
    acquire: env.pool.acquire,
    idle: env.pool.idle
  }
});
 
const db = {};
 
db.Sequelize = Sequelize;
db.sequelize = sequelize;
 
db.Customer = require('../models/customer.model.js')(sequelize, Sequelize);
 
module.exports = db;

– For MySQL database, we add the below configured environment’s properties in env.js:

const env = {
  database: 'loizenaidb',
  username: 'root',
  password: '12345',
  host: 'localhost',
  dialect: 'mysql',
  pool: {
    max: 5,
    min: 0,
    acquire: 30000,
    idle: 10000
  }
};
 
module.exports = env;

– For PostgreSQL database, we add the below configured environment’s properties in env.js


const env = {
  database: 'loizenai',
  username: 'postgres',
  password: '123',
  host: 'localhost',
  dialect: 'postgres',
  pool: {
    max: 5,
    min: 0,
    acquire: 30000,
    idle: 10000
  }
};
 
module.exports = env;

Define Nodejs Sequelize Model

I create a Sequelize model customer.model.js for customer entity with 5 properties:

  • id is a primary key having INTEGER type
  • firstname property has STRING type
  • lastname property has STRING type
  • address property has STRING type
  • age property has INTEGER type
module.exports = (sequelize, Sequelize) => {
	const Customer = sequelize.define('customer', {	
	  id: {
            type: Sequelize.INTEGER,
            autoIncrement: true,
            primaryKey: true
      },
	  firstname: {
			type: Sequelize.STRING
	  },
	  lastname: {
		type: Sequelize.STRING
  	  },
	  address: {
			type: Sequelize.STRING
	  },
	  age: {
			type: Sequelize.INTEGER
	  }
	});
	
	return Customer;
}

Define Nodejs Express RestAPIs Router – POST/GET/PUT/DELETE

We define 7 APIs for 2 groups:

– Group 1 provides html page view

  • / is used to get index.html view
  • /customers/ is used to get customers.html file

– Group 2 provides RestAPIs as below:

  • /api/customer/create is POST RestAPI to POST a new customer
  • /api/customer/retrieveinfos is a GET RestAPI to retrieve all customers’ info
  • /api/customer/updatebyid/:id is a PUT RestAPI to update a customer by a given id
  • /api/customer/deletebyid/:id is a DELETE RestAPI to delete a customer by a given id

Coding:

let express = require('express');
let router = express.Router();
 
const customers = require('../controllers/controller.js');

let path = __basedir + '/view/';

router.get('/', (req,res) => {
    console.log("__basedir" + __basedir);
    res.sendFile(path + "index.html");
});

router.get('/customers/', (req,res) => {
    console.log("__basedir" + __basedir);
    res.sendFile(path + "customers.html");
});

router.post('/api/customers/create', customers.create);
router.get('/api/customers/retrieveinfos', customers.retrieveAllCustomers);
router.put('/api/customers/updatebyid/:id', customers.updateById);
router.delete('/api/customers/deletebyid/:id', customers.deleteById);

module.exports = router;

Implement Nodejs Express RestAPIs CRUD Controller

For processing Post/Get/Put/Delete RestAPI requests, we implement controller.js with 5 functions:

  • exports.create = (req, res) is used to create a new Customer (post request processing)
  • exports.retrieveInfos = (req, res) is used to retrieve all Customer’s infos (get request)
  • exports.updateById = async (req, res) is used to update a customer with a given id
  • exports.deleteById = async (req, res) is used to delete a customer with a given id

– Post request :

exports.create = (req, res) => {
    let customer = {};

    try{
        // Building Customer object from upoading request's body
        customer.firstname = req.body.firstname;
        customer.lastname = req.body.lastname;
        customer.address = req.body.address;
        customer.age = req.body.age;
    
        // Save to MySQL database
        Customer.create(customer).then(result => {    
            // send uploading message to client
            res.status(200).json({
                message: "Upload Successfully a Customer with id = " + result.id,
                customers: [result],
                error: ""
            });
        });
    }catch(error){
        res.status(500).json({
            message: "Fail!",
            customers: [],
            error: error.message
        });
    }
}

exports.create = (req, res) gets a posting customer’s info via request.body object. Then it uses Sequelize to save the customer object to database. After done, it returns a successfully posting message. Otherwise, a error message will be returned.

– Nodejs Express Sequelize Get All Customers:

exports.retrieveInfos = (req, res) => {
    // find all Customer information from 
    try{
        Customer.findAll({attributes: ['id', 'firstname', 'address']})
        .then(customerInfos => {
            res.status(200).json({
                message: "Get Customers' Infos!",
                customerInfos: customerInfos
            });
        })
    }catch(error) {
        // log on console
        console.log(error);

        res.status(500).json({
            message: "Retrieving Error!",
            error: error
        });
    }
}

The function exports.retrieveInfos = (req, res) retrieves all Customer objects from database with 5 selected attributes: id, firstname, lastname, age, address.

– Nodejs Express Sequelize Delete a Customer:

exports.deleteById = async (req, res) => {
    try{
        let customerId = req.params.id;
        let customer = await Customer.findByPk(customerId);

        if(!customer){
            res.status(404).json({
                message: "Does Not exist a Customer with id = " + customerId,
                error: "404",
                customers: []
            });
        } else {
            await customer.destroy();
            res.status(200).json({
                message: "Delete Successfully a Customer with id = " + customerId,
                customers: [customer],
                error: ""
            });
        }
    } catch(error) {
        res.status(500).json({
            message: "Error -> Can NOT delete a customer with id = " + req.params.id,
            error: error.message,
            customers: []
        });
    }
}

The function exports.deleteById = async (req, res) finds a Customer by a given id. If the customer is found, it will be deleted by destroy() function and return back client a successfully message. Otherwise, an error message is returned.

– Nodejs Express Sequelize MySQL – Update a Customer:

exports.updateById = async (req, res) => {
    try{
        let customerId = req.params.id;
        let customer = await Customer.findByPk(customerId);
    
        if(!customer){
            // return a response to client
            res.status(404).json({
                message: "Not Found for updating a customer with id = " + customerId,
                customers: [],
                error: "404"
            });
        } else {    
            // update new change to database
            let updatedObject = {
                firstname: req.body.firstname,
                lastname: req.body.lastname,
                address: req.body.address,
                age: req.body.age
            }
            let result = await Customer.update(updatedObject, {returning: true, where: {id: customerId}});
            
            // return the response to client
            if(!result) {
                res.status(500).json({
                    message: "Error -> Can not update a customer with id = " + req.params.id,
                    error: "Can NOT Updated",
                    customers: []
                });
            }

            res.status(200).json({
                message: "Update successfully a Customer with id = " + customerId,
                customers: [updatedObject],
                error: ""           
            });
        }
    } catch(error){
        res.status(500).json({
            message: "Error -> Can not update a customer with id = " + req.params.id,
            error: error.message,
            customers: []

        });
    }
}

The function exports.updateById = async (req, res) finds a customer object by a given id. If the customer is found, we change the customer attributes with new values retrieving from request.body object. After done, a successfully message will be returned. Otherwise an error message will be returned.

Create Nodejs Express Server.js

const express = require('express');
const app = express();

var bodyParser = require('body-parser');
 
global.__basedir = __dirname;
 
const db = require('./app/config/db.config.js');
  
// force: true will drop the table if it already exists
db.sequelize.sync({force: true}).then(() => {
  console.log('Drop and Resync with { force: true }');
}); 

let router = require('./app/routers/router.js');

const cors = require('cors')
const corsOptions = {
  origin: 'http://localhost:4200',
  optionsSuccessStatus: 200
}
app.use(cors(corsOptions));

app.use(bodyParser.json());
app.use(express.static('resources'));
app.use('/', router);

// Create a Server
const server = app.listen(8080, function () {
 
  let host = server.address().address
  let port = server.address().port
 
  console.log("App listening at http://%s:%s", host, port); 
})

Nodejs Express Sequelize MySQL – Backend Testing

1. Testcase 1 – Nodejs Post request – Add new Customer:

– Post a new customer:

Angular 11 Node.js MySQL CRUD Example - Backend Testing - Nodejs - Add a new customer
Backend Testing – Nodejs – Add a new customer

– Check database records:

Backend Testing - Check Database Records
Backend Testing – Check Database Records

2. Testcase 2 – Nodejs Get request – Get All Customers:

– Retrieve all customers:

Backend Testing - Nodejs - Retrieve All Customers
Backend Testing – Nodejs – Retrieve All Customers

3. Testcase 3 – Nodejs Put request – Update a Customer by Id:

– Delete a Customer with id = 3:

Angular 11 Node.js MySQL CRUD Example - Backend Testing - Nodejs - Update a Customer by id=3
Backend Testing – Nodejs – Update a Customer by id=3

4. Testcase 4 – Nodejs Delete request – Delete a Customer:

– Update a Customer with id = 2:

Angular 11 Node.js MySQL CRUD Example - Backend Testing - Nodejs - Delete a Customer by Id
Backend Testing – Nodejs – Delete a Customer by Id

Angular 11 CRUD Application Overview

Angular 11 Node.js MySQL CRUD Example - Angular Application - Frontend Design Architecture
Angular CRUD Application – Frontend Design Architecture

– For more details, we go back to the session: Angular CRUD Design

Create Angular 11 CRUD Application

We create Angular CRUD project by commandline: ng new AngularHttpclient.
– Create 3 components AddCustomer, ListCustomers, Message by cmd:


ng g component AddCustomer
ng g component ListCustomers
ng g component Message

– Create 2 Angular services CustomerService, MessageService by cmd:


ng g service customer
ng g service message

– Create 2 models Customer and Message by cmd:


ng g class customer;
ng g class message;

Create Angular Customer model

We define Customer class with 5 attributes:

export class Customer {
    id: number;
    firstname: string;
    lastname: string;
    age: number;
    address: string
}

Create Angular Message Model

We define Message class as below:

import { Customer } from './customer';

export class Message {
    message: string;
    error: string;
    customers: Customer[];
}

Implement Angular HttpClient Customer Service

For interacting with Backend RestAPIs, we use Angular built-in Httpclient service:

@Injectable({
  providedIn: 'root'
})
export class CustomerService {

  private baseUrl = 'http://localhost:8080/api/customers';

  constructor(private http: HttpClient) { }
  
  ...

To handle Error, we implement a function private handleError(error: HttpErrorResponse):

private handleError(error: HttpErrorResponse) {
  if (error.error instanceof ErrorEvent) {
    // A client-side or network error occurred. Handle it accordingly.
    console.error('An error occurred:', error.error.message);
  } else {
    // The backend returned an unsuccessful response code.
    // The response body may contain clues as to what went wrong,
    console.error(
      `Backend returned code ${error.status}, ` +
      `body was: ${error.error}`);
  }
  // return an observable with a user-facing error message
  return throwError(
    'Something bad happened; please try again later.');
};

Angular HttpClient POST Request – Add new Customer

createCustomer(customer: Customer): Observable<Message> {
    return this.http.post<Message>(`${this.baseUrl}` + `/create`, customer)
                .pipe(
                  retry(3),
                  catchError(this.handleError)
                );
}

– The above function posts a Customer to SpringBoot backend server at URL http://localhost:8080/api/customers/create
retry(3) is used to retry a failed request up to 3 times

Angular HttpClient GET Request – Retrieve Customers

– Retrieve all Customers from SpringBoot backend at RestAPI by a GET request at URL http://localhost:8080/api/customers/retrieveinfos.

retrieveAllCustomers(): Observable {
    return this.http.get(`${this.baseUrl}` + `/retrieveinfos`)
                  .pipe(
                    retry(3),
                    catchError(this.handleError)
                  );
}

Angular HttpClient PUT Request – Modify a Customer

– Update a Customer with Angular Httpclient by a PUT request at URL:
http://localhost:8080/api/customers/updatebyid/{id}

updateCustomer(customer: Customer): Observable<Message> {
    return this.http.put<Message> (`${this.baseUrl}` + `/updatebyid/` + customer.id, customer)
      .pipe(
          retry(3),
          catchError(this.handleError)
        );
}

Angular HttpClient DELETE Request – Delete a Customer

– Delete a Customer by a given id with Angular Httpclient by a DELETE request at URL:
http://localhost:8080/api/customers/deletebyid/{id}:


deleteCustomer(id: number): Observable<Message> {
    return this.http.delete<Message>(`${this.baseUrl}` + `/deletebyid/` + id)
          .pipe(
            retry(3),
            catchError(this.handleError)  
          );
}

Implement Angular Message Service

For tracking the proccessing of each proccessing in Angular CRUD Application, We implement a Message service to store tracing-logs message then display them on Html.

The message.service.ts has an string array messages to store tracing-log messages and 2 functions: add(message: string) and clear()

– Coding:


import { Injectable } from '@angular/core';

@Injectable({
  providedIn: 'root'
})
export class MessageService {
  messages: string[] = [];

  add(message: string) {
    this.messages.push(message);
  }

  clear(){
    this.messages = [];
  }
}

Angular 11 Implement Component: Add Customer

AddCustomerComponent is used to post a new Customer to SpringBoot backend server.
– We have 2 parts:

  • add-customer.component.ts file
  • add-cusomer.component.html file

1. Implement add-customer.component.ts:

import { Component, OnInit } from '@angular/core';
import { Customer } from '../customer';
import { CustomerService } from '../customer.service';
import { Message } from '../message';
import { MessageService } from '../message.service';

@Component({
  selector: 'app-add-customer',
  templateUrl: './add-customer.component.html'
})
export class AddCustomerComponent implements OnInit {
  customer: Customer;
  /**
   * Constructing Http Customer Service
   * @param customerService 
   */
  constructor(private customerService: CustomerService,
                private messageService: MessageService) { }

  ngOnInit(): void {
    this.customer = new Customer();
  }

  /**
   * Store a Customer to backend server
   */
  save() {
    this.customerService.createCustomer(this.customer)
          .subscribe((message: Message) => {
            console.log(message);
            let customer = message.customers[0];
            let msg = "Success -> Post a Customer: " 
                + "<ul>"
                    + "<li>id: " + customer.id + "</li>"  
                    + "<li>firstname: " + customer.firstname + "</li>"
                    + "<li>lastname: " + customer.lastname + "</li>"
                    + "<li>age: " + customer.age + "</li>"
                    + "<li>address: " + customer.address + "</li>"
                + "</ul>";

            this.messageService.add(msg);
          }, error => {
            console.log(error);
            let msg = "Error! -> Action Posting a Customer:" 
                      + "<ul>"
                        + "<li>id = " + this.customer.id + "</li>"  
                        + "<li>firstname = " + this.customer.firstname + "</li>"
                        + "<li>lastname = " + this.customer.lastname + "</li>"
                        + "<li>age = " + this.customer.age + "</li>"
                        + "<li>address = " + this.customer.address + "</li>"
                      + "</ul>";

            this.messageService.add(msg);
          });
  }

  reset(){
    this.customer = new Customer();
  }

  /**
   * Function handles form submitting
   */
  onSubmit() {
    this.save();
    this.reset();
  }
}

2. Implement add-customer.component.html view:

<h2>Create Customer</h2>
<div>
  <form (ngSubmit)="onSubmit()"> 
    <!-- First name -->   
    <div class="form-group">
      <label for="firstname">First Name:</label>
      <input type="text" class="form-control" placeholder="Enter Firstname" 
                id="firstname" required [(ngModel)]="customer.firstname" name="firstname">
    </div>
    <!-- Last name -->
    <div class="form-group">
        <label for="lastname">Last Name:</label>
        <input type="text" class="form-control" placeholder="Enter Lastname" 
                  id="lastname" required [(ngModel)]="customer.lastname" name="lastname">
    </div>  
    <!-- Address -->
    <div class="form-group">
        <label for="address">Address:</label>
        <input type="text" class="form-control" placeholder="Enter Address" 
                  id="address" required [(ngModel)]="customer.address" name="address">
    </div>        
    
    <!-- Age -->
    <div class="form-group">
      <label for="age">Age</label>
      <input type="number" class="form-control" placeholder="Enter Age" 
                  id="age" required [(ngModel)]="customer.age" name="age">
    </div>
 
    <button type="submit" class="btn btn-success">Submit</button>
  </form>
</div>
<app-message></app-message>

Angular 11 Implement Component: List Customers

ListCustomersComponent has 4 main functions:

  • Show all Customers
  • Show details a Customers
  • Delete a Customer
  • Update a Customer

1. Implement list-customers.component.ts:

import { Component, OnInit } from '@angular/core';
import { Customer } from '../customer';
import { MessageService } from '../message.service';
import { CustomerService } from '../customer.service';
import { Message } from '../message';

@Component({
  selector: 'app-list-customers',
  templateUrl: './list-customers.component.html'
})
export class ListCustomersComponent implements OnInit {

  customers: Array<Customer> = [];
  showCustomer: Customer;
  isSelected: boolean = false;
  deletedCustomer: Customer;
  returnedMessage: string;

  constructor(private customerService: CustomerService,
                private messageService: MessageService) { }

  setCustomerDetails(customer: Customer){
    this.isSelected=!this.isSelected;
    if(this.isSelected){
      this.showCustomer = customer;
    }else{
      this.showCustomer = undefined;
    }
  }

  /**
   * Set deletedCustomer and reset returnedMessage = undefined
   * @param deleteCustomer
   */
  prepareDeleteCustomer(deleteCustomer: Customer){
    //assign delete-Customer
    this.deletedCustomer = deleteCustomer;
    // reset returned-Message
    this.returnedMessage = undefined;
  }

  /**
   * Delete a Customer by ID
   */
  deleteCustomer(){

    console.log("--- Access delelteCustomer() function");

    this.customerService.deleteCustomer(this.deletedCustomer.id)
                      .subscribe((message: Message) => {
                          console.log(message);
                          // remove a deletedCustomer from customers list on view
                          this.customers = this.customers.filter(customer => {
                            return customer.id != this.deletedCustomer.id;
                          })

                          // set a showing message in delete modal
                          this.returnedMessage = message.message;

                          // just reset showCustomer for not showing on view
                          this.showCustomer = undefined;

                          // add the delete message to message app for showing
                          this.messageService.add(message.message);
                        },
                        (error) => {
                          console.log(error);
                          let errMsg: string = "Error! Details: " + error;
                          this.messageService.add(errMsg);
                        });
  }

  /**
   * Update Customer function
   */
  updateCustomer() {
    this.customerService.updateCustomer(this.showCustomer)
                      .subscribe((message: Message) => {
                        console.log(message);
                        // update customers list
                        this.customers.map(x => {
                          if(x.id == this.showCustomer.id){
                            x = this.showCustomer;
                          }
                        });

                        let msg: string = "Update Successfully! -> New Customer's properties: <br>"
                                          + "<ul>"
                                            + "<li>" + "id: " + this.showCustomer.id + "</li>"
                                            + "<li>" + "firstname: " + this.showCustomer.firstname + "</li>"
                                            + "<li>" +  "lastname: " + this.showCustomer.lastname + "</li>"
                                            + "<li>" +  "age: " + this.showCustomer.age + "</li>"
                                            + "<li>" +  "address: " + this.showCustomer.address + "</li>"
                                          + "</ul>";
                        this.messageService.add(msg);
                      }
                      , (error) => {
                        console.log(error);
                        let errMsg = "Update Fail ! Error = " + error;
                        this.messageService.add(errMsg);
                      });
  }

  /**
   * Retrieve all Customer from Backend
   */
  retrieveAllCustomers() {
    this.customerService.retrieveAllCustomers()
                  .subscribe((message: Message) => {
                    console.log(message);
                    this.customers = message.customers;
                  }
                  , (error) => {
                    console.log(error);
                  });
  }

  ngOnInit(): void {
    this.retrieveAllCustomers();
  }
}

2. Implement list-customers.component.html:

<div *ngIf="customers.length">
    <h3>Customers</h3>
    <br>
    <table class="table table-hover table-sm">
        <thead class="thead-dark">
          <tr>
            <th>Id</th>
            <th>Firstname</th>
            <th>Address</th>
            <th></th>
          </tr>
        </thead>
        <tbody>
            <tr *ngFor="let customer of customers">
              <td>
                <button type="button" class="btn btn-primary" (click)="setCustomerDetails(customer)">
                  {{customer.id}}
                </button>
              </td>
              <td>{{customer.firstname}}</td>
              <td>{{customer.address}}</td>
              <td>
                <button type="button" class="btn btn-danger" 
                  data-toggle="modal" data-target="#delete-modal" 
                                (click)=prepareDeleteCustomer(customer) >&times;</button>
              </td>
            </tr>
        </tbody>
    </table>
</div>

<!-- The Modal -->
<div class="modal fade" id="delete-modal">
  <div class="modal-dialog modal-dialog-centered">
    <div class="modal-content">
    
    <!-- Modal Header -->
    <div class="modal-header">
      <h4 class="modal-title">Delete!</h4>
      <button type="button" class="close" data-dismiss="modal">&times;</button>
    </div>
    
    <!-- Modal body -->
    <div class="modal-body">
        <div *ngIf="deletedCustomer">
          <p [hidden] = "returnedMessage">
            Do you want delete a customer with id = {{deletedCustomer.id}}
          </p>
          <p [hidden] = "!returnedMessage">
            {{returnedMessage}}
          </p>
        </div>
    </div>
    
    <!-- Modal footer -->
    <div class="modal-footer">
      <button type="button" class="btn btn-secondary" data-dismiss="modal">Cancel</button>
      <button [hidden] = "returnedMessage" type="button" class="btn btn-danger" (click)="deleteCustomer()">Delete</button>
    </div>				
    </div>
  </div>
  </div>

<div *ngIf="showCustomer">
    <h3>Update Customer</h3>
    <form (ngSubmit)="updateCustomer()"> 
        <!-- ID -->   
        <div class="form-group">
          <label for="id">Id:</label>
          <input type="numer" class="form-control"
                    id="id" required [(ngModel)]="showCustomer.id" name="id" disabled>
        </div>      
        <!-- First name -->   
        <div class="form-group">
          <label for="firstname">First Name:</label>
          <input type="text" class="form-control" placeholder="Enter Firstname" 
                    id="firstname" required [(ngModel)]="showCustomer.firstname" name="firstname">
        </div>
        <!-- Last name -->
        <div class="form-group">
            <label for="lastname">Last Name:</label>
            <input type="text" class="form-control" placeholder="Enter Lastname" 
                      id="lastname" required [(ngModel)]="showCustomer.lastname" name="lastname">
        </div>  
        <!-- Address -->
        <div class="form-group">
            <label for="address">Address:</label>
            <input type="text" class="form-control" placeholder="Enter Address" 
                      id="address" required [(ngModel)]="showCustomer.address" name="address">
        </div>        
        
        <!-- Age -->
        <div class="form-group">
          <label for="age">Age</label>
          <input type="number" class="form-control" placeholder="Enter Age" 
                      id="age" required [(ngModel)]="showCustomer.age" name="age">
        </div>
     
        <button type="submit" class="btn btn-success">Update</button>
      </form>
</div>
<app-message></app-message>


<script>
  let pathname = window.location.pathname;
  if(pathname == ""){
      $(".nav .nav-item a:first").addClass("active");
      $(".nav .nav-item a:last").removeClass("active");
  } else if (pathname == "/customers") {
      $(".nav .nav-item a:last").addClass("active");
      $(".nav .nav-item a:first").removeClass("active");
  }
  alert("ok");
</script>

Angular 11 Implement Component: Message Component

MessageComponent is used to show all tracing-log messages in html view.

1. Implement message.component.ts:

import { Component, OnInit } from '@angular/core';
import { MessageService } from '../message.service';

@Component({
  selector: 'app-message',
  templateUrl: './message.component.html'
})
export class MessageComponent {
  constructor(public messageService: MessageService) {}
}

2. Implement message.component.html:

<div *ngIf="messageService.messages.length">
    <h3>Messages</h3>
    <button type="button" class="btn btn-secondary" (click)="messageService.clear()">clear</button>
    <br>
    <ol>
      <li *ngFor='let message of messageService.messages'>
        <div [innerHTML]="message">
        </div>
      </li>
    </ol>
  </div>

Angular Configure App Routing Module

To handle the navigation from one view to the next, you use the Angular router. The router enables navigation by interpreting a browser URL as an instruction to change the view.

The following command uses the Angular CLI to generate a basic Angular app with an app routing module, called AppRoutingModule, which is an NgModule where you can configure your routes.

ng new routing-app --routing

How to Define a route? -> There are three fundamental building blocks to creating a route.

1. Import the AppRoutingModule into AppModule and add it to the imports array.
The Angular CLI performs this step for you. However, if you are creating an app manually or working with an existing, non-CLI app, verify that the imports and configuration are correct.


import { AppRoutingModule } from './app-routing.module';
...

@NgModule({
  declarations: [
	...
  ],
  imports: [
	...
    AppRoutingModule,
    ...
  ],
  providers: [],
  bootstrap: [AppComponent]
})
export class AppModule { }

2. Define your routes in your Routes array

import { NgModule } from '@angular/core';
import { Routes, RouterModule } from '@angular/router';
import { AddCustomerComponent } from './add-customer/add-customer.component';
import { ListCustomersComponent } from './list-customers/list-customers.component';

const routes: Routes = [
  { 
    path: '', 
    component: AddCustomerComponent 
  },
  { 
    path: 'customers', 
    component: ListCustomersComponent 
  }
];

@NgModule({
  imports: [RouterModule.forRoot(routes)],
  exports: [RouterModule]
})
export class AppRoutingModule { }

3. Add your routes to your application.
In the index.html file, we add below html code for navigating URL:


<nav class="navbar navbar-expand-sm bg-primary navbar-dark">
  <ul class="navbar-nav">
    <li class="nav-item" id="li_add_customer">
      <a class="nav-link" href="">Add Customer</a>
    </li>
    <li class="nav-item" id="li_list_customers">
      <a class="nav-link" href="/customers">List Customers</a>
    </li>
  </ul>
</nav>

Next, update your component template to include . This element informs Angular to update the application view with the component for the selected route. So in main component,open app.component.ts file, add the tag:


<router-outlet></router-outlet>

Angular 11 Modify index.html view page

<!doctype html>
<html lang="en">
<head>
  <meta charset="utf-8">
  <title>AngularHttpclient</title>
  <base href="/">
  <meta name="viewport" content="width=device-width, initial-scale=1">
  <link rel="icon" type="image/x-icon" href="favicon.ico">
  <!-- Latest compiled and minified CSS -->
  <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.5.0/css/bootstrap.min.css">
  <!-- jQuery library -->
  <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script>
  <!-- Popper JS -->
  <script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.16.0/umd/popper.min.js"></script>
  <!-- Latest compiled JavaScript -->
  <script src="https://maxcdn.bootstrapcdn.com/bootstrap/4.5.0/js/bootstrap.min.js"></script>
</head>
<body>
  <div class="container" >  
    <div class="col-sm-5" style="background-color: #ffffcc; margin:10px;padding:10px; border-radius: 5px">
      <nav class="navbar navbar-expand-sm bg-primary navbar-dark">
        <ul class="navbar-nav">
          <li class="nav-item" id="li_add_customer">
            <a class="nav-link" href="">Add Customer</a>
          </li>
          <li class="nav-item" id="li_list_customers">
            <a class="nav-link" href="/customers">List Customers</a>
          </li>
        </ul>
      </nav>
      <app-root></app-root>
    </div>
  </div>
  <script>
    $(document).ready(function() {
      (function(){
        let pathname = window.location.pathname;
        if(pathname == "/"){
            $("#li_add_customer").addClass("active");
            $("#li_list_customers").removeClass("active");
        } else if (pathname == "/customers") {
            $("#li_list_customers").addClass("active");
            $("#li_add_customer").removeClass("active");
        } 
      })();
    });
  </script>
</body>
</html>

Angular 11 Nodejs MySQL CRUD Example Application Testing

Okay, now we do a set of testcases for the tutorial: “Angular 11 Node.js MySQL CRUD Example”.

1. Testcase 1 – Angular post request – Add New Customer:

Angular Application - Testcase 1 - POST a Customer - Network Logs
Angular CRUD Application – Testcase 1 – POST a Customer – Network Logs
Angular CRUD Application - Testcase 1 - POST a Customer - Successfully
Angular CRUD Application – Testcase 1 – POST a Customer – Successfully

2. Testcase 2 – Angular get request – Retrieve All Customers:

Angular CRUD Application - Testcase 2 - GET all Customers - Network Logs
Angular CRUD Application – Testcase 2 – GET all Customers – Network Logs
Angular Application - Testcase 2 - GET all Customers - Successfully
Angular CRUD Application – Testcase 2 – GET all Customers – Successfully

3. Testcase 3 – Angular PUT request – Update a Customer:

Angular CRUD Application - Testcase 3 - UPDATE a Customer with id = 3 - Network Logs
Angular CRUD Application – Testcase 3 – UPDATE a Customer with id = 3 – Network Logs
Angular CRUD Application - Testcase 3 - UPDATE a Customer with id = 3 - Successfully
Angular CRUD Application – Testcase 3 – UPDATE a Customer with id = 3 – Successfully

4. Testcase 4 – Angular Delete request – Delete a Customer:

Angular CRUD Application - Testcase 4 - DELETE a Customer - Successfully
Angular CRUD Application – Testcase 4 – DELETE a Customer – Successfully
Angular 11 Node.js MySQL CRUD Example - Angular CRUD App - Check database records
Angular CRUD App – Check database records

Read More

Related posts:


Sourcecode – Angular 11 Node.js MySQL CRUD Example

Below is the 2 sourcecodes for “Angular 11 Node.js MySQL CRUD Example Tutorial”.

– Node.js backend’s sourcecode with below implemented features:

Nodejs CRUD Application

– GitHub Sourcecode:

Nodejs CRUD Application – Github Sourcecode

– Angular Frontend sourcecode with below implemented features:

Angular 11 Node.js Mysql Crud Example – Frontend

– Github Sourcecode – Angular 11 Express MySQL CRUD Example:

Angular 11 Node.js Mysql Crud Example – Frontend

2,185 thoughts on “Angular 11 Node.js Mysql Crud Example”

  1. hello, thank you very much for the guide, I managed to make my crud and in testing it works great. Now I have a question, I have to put it into production, but I can’t. can you help me?

  2. Hello There. I found your weblog the use of msn. This is a really neatly written article. I will be sure to bookmark it and return to read extra of your helpful info. Thanks for the post. I will certainly return.

  3. Hi, Neat post. There is a problem with your web site in internet explorer, would check this… IE still is the market leader and a big portion of people will miss your wonderful writing because of this problem.

  4. Hi there just wanted to give you a quick heads up. The text in your content
    seem to be running off the screen in Internet explorer.
    I’m not sure if this is a format issue or something to do with web
    browser compatibility but I figured I’d post to let you know.
    The style and design look great though! Hope you get the problem fixed soon. Thanks

  5. Hello I am so grateful I found your webpage, I really found you by error, while I was looking
    on Bing for something else, Anyways I am here now and would just like to
    say thanks for a marvelous post and a all round enjoyable blog (I also love the theme/design), I don’t have time to browse it
    all at the minute but I have bookmarked it and also added your RSS feeds, so when I have time I will be back to read a lot more, Please do
    keep up the awesome b.

  6. I know this if off topic but I’m looking into starting my own weblog and was wondering what all is needed
    to get setup? I’m assuming having a blog like yours would
    cost a pretty penny? I’m not very internet smart so I’m not 100%
    certain. Any suggestions or advice would be greatly appreciated.
    Thanks

  7. continuously i used to read smaller content which also clear their motive,
    and that is also happening with this piece of writing which I
    am reading here.

  8. Fascinating blog! Is your theme custom made or did you download it from somewhere?

    A theme like yours with a few simple tweeks would really make my blog shine.
    Please let me know where you got your design. Many thanks

  9. I know this if off topic but I’m looking into starting my own blog and was wondering what all is needed to get setup?

    I’m assuming having a blog like yours would cost a pretty
    penny? I’m not very web savvy so I’m not 100% sure. Any tips
    or advice would be greatly appreciated. Thank you

  10. Hello, I think your website might be having browser compatibility issues.

    When I look at your website in Ie, it looks fine but when opening in Internet Explorer, it has some
    overlapping. I just wanted to give you a quick heads up!
    Other then that, excellent blog!

  11. An outstanding share! I have just forwarded this onto
    a co-worker who had been doing a little homework on this.
    And he actually ordered me breakfast simply because I discovered it for him…

    lol. So allow me to reword this…. Thank YOU for the meal!!
    But yeah, thanks for spending some time to discuss
    this topic here on your web page.

  12. Woah! I’m really digging the template/theme of this website.
    It’s simple, yet effective. A lot of times it’s very difficult to get
    that “perfect balance” between usability and appearance.
    I must say you have done a awesome job with this.
    Also, the blog loads extremely quick for me on Opera. Superb Blog!

  13. Nice blog here! Additionally your web site loads up very fast!
    What host are you the usage of? Can I get your associate hyperlink for your host?
    I desire my site loaded up as fast as yours lol

  14. It’s in point of fact a nice and helpful piece of information. I am glad that you just shared this useful info
    with us. Please stay us up to date like this. Thank you for sharing.

  15. Definitely believe that which you said. Your favorite reason seemed to be on the web the easiest
    thing to be aware of. I say to you, I definitely get irked while people think about worries
    that they plainly do not know about. You
    managed to hit the nail upon the top and also defined out the
    whole thing without having side effect , people can take a signal.
    Will likely be back to get more. Thanks

  16. You could definitely see your enthusiasm in the article you write.

    The world hopes for more passionate writers like you who are not afraid to mention how they believe.
    Always follow your heart.

  17. You can certainly see your expertise within the article you
    write. The sector hopes for more passionate writers like you who aren’t afraid
    to say how they believe. Always follow your heart.

  18. It’s a shame you don’t have a donate button! I’d definitely donate to this outstanding blog!
    I suppose for now i’ll settle for bookmarking and adding
    your RSS feed to my Google account. I look forward to fresh updates and will
    talk about this site with my Facebook group. Talk soon!

  19. Hey there! This post couldn’t be written any better!
    Reading through this post reminds me of my previous room mate!
    He always kept chatting about this. I will forward this post to him.

    Fairly certain he will have a good read. Many thanks for sharing!

  20. Appreciating the time and effort you put into your
    website and detailed information you provide. It’s great to come across a blog every once in a while that isn’t the same outdated rehashed material.
    Wonderful read! I’ve bookmarked your site and I’m including your RSS
    feeds to my Google account.

  21. Please let me know if you’re looking for a author for your
    weblog. You have some really good articles and I believe I would be a good
    asset. If you ever want to take some of the load off,
    I’d really like to write some content for your blog in exchange for a link back
    to mine. Please send me an e-mail if interested.
    Thanks!

  22. Howdy! This is kind of off topic but I need some advice
    from an established blog. Is it very hard to set up your own blog?
    I’m not very techincal but I can figure things out pretty quick.

    I’m thinking about setting up my own but I’m not sure where to start.
    Do you have any ideas or suggestions? Cheers

  23. I got this site from my friend who informed me regarding this
    site and now this time I am browsing this web site and reading very informative articles here.

  24. I know this if off topic but I’m looking into starting my own weblog and was curious what all is
    needed to get set up? I’m assuming having a blog like yours would cost
    a pretty penny? I’m not very internet savvy so I’m not
    100% sure. Any suggestions or advice would be
    greatly appreciated. Appreciate it

  25. It’s really a great and helpful piece of info.
    I’m happy that you shared this helpful info with us. Please keep us up to date like this.
    Thanks for sharing.

  26. Good day! I could have sworn I’ve been to your blog before but after looking at a few of the posts I
    realized it’s new to me. Regardless, I’m definitely delighted I discovered
    it and I’ll be bookmarking it and checking back regularly!

  27. Everything is very open with a very clear description of the challenges.
    It was truly informative. Your website is useful.
    Many thanks for sharing!

  28. I was wondering if you ever thought of changing the
    structure of your website? Its very well written; I love what youve
    got to say. But maybe you could a little more in the way of
    content so people could connect with it better. Youve got an awful lot of text for only
    having 1 or two images. Maybe you could space it out better?

  29. It’s in fact very complicated in this full of activity life to listen news on TV,
    so I simply use web for that purpose, and obtain the most recent news.

  30. My spouse and I stumbled over here from a different website and thought
    I should check things out. I like what I see so now i am following you.
    Look forward to finding out about your web page repeatedly.

  31. May I just say what a comfort to find somebody who truly understands what they’re talking about online.

    You actually understand how to bring an issue to light and make it
    important. More and more people need to look at this and understand this side of
    the story. It’s surprising you are not more popular given that you definitely possess the gift.

  32. I absolutely love your blog.. Great colors & theme. Did you create
    this site yourself? Please reply back as I’m looking to create my very own blog and
    would like to find out where you got this from or just what the theme is
    called. Many thanks!

  33. Hello There. I discovered your blog the usage of msn. That is a really
    well written article. I will be sure to bookmark it and return to read extra of your useful info.
    Thank you for the post. I’ll definitely return.

  34. I will immediately take hold of your rss as I can’t to find your email subscription hyperlink or newsletter service. Do you have any? Kindly permit me understand so that I may just subscribe. Thanks.

  35. When I originally commented I clicked the -Notify me when new comments are added- checkbox now every time a comment is added I get four emails concentrating on the same comment. Can there be by any means you are able to remove me from that service? Thanks!

  36. What your stating is absolutely correct. I know that everybody need to say the identical thing, but I just assume that you put it in a way that everybody can fully grasp. I also really like the photos you set in here. They suit so effectively with what youre hoping to say. Im confident youll attain so many folks with what youve received to say.

  37. Hey there would you mind letting me know which web host
    you’re working with? I’ve loaded your blog in 3 different web browsers and I must
    say this blog loads a lot quicker then most. Can you suggest a good web hosting
    provider at a fair price? Kudos, I appreciate it!

  38. Pretty component of content. I just stumbled upon your website and
    in accession capital to say that I get actually enjoyed account your weblog posts.
    Any way I’ll be subscribing in your augment
    and even I fulfillment you get entry to consistently quickly.

  39. Howdy I am so delighted I found your web site, I really found you by mistake, while I was looking on Digg
    for something else, Nonetheless I am here now and would just like
    to say thank you for a fantastic post and a all round entertaining blog
    (I also love the theme/design), I don’t have time to read through it all at the moment
    but I have book-marked it and also added in your RSS feeds, so when I have time I will be
    back to read a great deal more, Please do keep up the great b.

  40. I must thank you for the efforts you have put in penning
    this site. I am hoping to view the same high-grade blog posts from you later on as
    well. In fact, your creative writing abilities has encouraged me to get my own, personal
    website now 😉

  41. Excellent post. Keep posting such kind of info on your page.
    Im really impressed by your site.
    Hello there, You have performed an incredible job.
    I will certainly digg it and in my opinion recommend to my
    friends. I am confident they’ll be benefited from this web site.

  42. Howdy! I know this is kind of off topic but I was wondering if you knew where I could get a captcha plugin for my comment form?
    I’m using the same blog platform as yours and I’m
    having trouble finding one? Thanks a lot!

  43. Attractive section of content. I just stumbled upon your site
    and in accession capital to claim that I get actually loved account
    your weblog posts. Any way I’ll be subscribing in your augment or even I fulfillment you access persistently fast.

  44. Admiring the persistence you put into your
    website and detailed information you present. It’s great to come across a blog every once in a while that isn’t the same
    unwanted rehashed information. Fantastic read! I’ve saved
    your site and I’m adding your RSS feeds to my Google account.

  45. Hello, I think your site might be having browser compatibility issues.
    When I look at your website in Ie, it looks fine
    but when opening in Internet Explorer, it has some
    overlapping. I just wanted to give you a quick heads up!
    Other then that, excellent blog!

  46. Thank you for another informative site. The place else may just I am getting that type of information written in such an ideal approach?
    I’ve a challenge that I am simply now operating on, and
    I have been on the look out for such info.

  47. Hi! This is kind of off topic but I need some help from an established blog.
    Is it difficult to set up your own blog? I’m not very techincal
    but I can figure things out pretty fast. I’m thinking
    about setting up my own but I’m not sure where to begin.
    Do you have any points or suggestions? Thank you

  48. Howdy! This is my first comment here so I just wanted to give a quick shout out and say
    I really enjoy reading your articles. Can you suggest any other blogs/websites/forums that deal with the same topics?
    Thank you!

  49. I must thank you for the efforts you’ve put in writing this website.
    I really hope to check out the same high-grade content by you later
    on as well. In fact, your creative writing abilities has inspired
    me to get my very own site now 😉

  50. Hello there, I discovered your site by way of
    Google at the same time as looking for a similar matter, your site got here up,
    it seems good. I’ve bookmarked it in my google bookmarks.

    Hi there, just become alert to your weblog thru Google, and located that it’s really informative.
    I am going to be careful for brussels. I’ll be grateful in case you
    continue this in future. Many folks shall be benefited from your writing.
    Cheers!

  51. Can I simply just say what a comfort to find an individual
    who really understands what they are talking about on the internet.
    You definitely know how to bring a problem to light and make it important.
    A lot more people must read this and understand this side of the
    story. I was surprised you’re not more popular because
    you surely have the gift.

  52. It’s a pity you don’t have a donate button! I’d most certainly donate to this superb blog!
    I suppose for now i’ll settle for bookmarking and adding your
    RSS feed to my Google account. I look forward to fresh updates and
    will talk about this website with my Facebook group. Talk soon!

  53. You can definitely see your skills within the article you write.
    The sector hopes for more passionate writers such as you who are not afraid to mention how they believe.
    Always follow your heart.

  54. Hi there would you mind letting me know which hosting company you’re using?
    I’ve loaded your blog in 3 completely different web browsers and I must say this blog loads
    a lot quicker then most. Can you suggest a good hosting provider at
    a reasonable price? Thanks, I appreciate it!

  55. Hey just wanted to give you a quick heads up. The
    words in your article seem to be running off
    the screen in Ie. I’m not sure if this is a format issue or something to do with
    browser compatibility but I thought I’d post to let you know.

    The design and style look great though! Hope you get the
    issue solved soon. Kudos

  56. Excellent blog! Do you have any tips and hints for aspiring writers?
    I’m planning to start my own website soon but I’m a little lost on everything.
    Would you advise starting with a free platform like WordPress or go for a paid option? There are so many choices out there that
    I’m completely confused .. Any recommendations?
    Many thanks!

  57. Hey I know this is off topic but I was wondering if you
    knew of any widgets I could add to my blog that automatically tweet
    my newest twitter updates. I’ve been looking for a plug-in like this for quite some time and
    was hoping maybe you would have some experience with something like this.
    Please let me know if you run into anything. I truly enjoy reading your
    blog and I look forward to your new updates.

  58. I’m not sure the place you are getting your information, however good topic.
    I needs to spend a while studying more or understanding
    more. Thank you for magnificent information I used to be in search
    of this info for my mission.

  59. Superb blog you have here but I was curious if you knew of any discussion boards
    that cover the same topics discussed here? I’d really love to be a
    part of community where I can get feed-back from
    other knowledgeable people that share the same interest.
    If you have any recommendations, please let me know. Cheers!

  60. Very good site you have here but I was wondering if
    you knew of any community forums that cover the same topics talked
    about in this article? I’d really like to be a part of community
    where I can get comments from other experienced individuals that share the same interest.
    If you have any recommendations, please let me know. Cheers!

  61. You actually make it seem so easy with your presentation but I find this matter to
    be actually something that I think I would never understand.

    It seems too complex and extremely broad for me. I am looking
    forward for your next post, I will try to get the hang of it!

  62. Hello, I think your blog could possibly be having web browser compatibility problems.

    Whenever I look at your blog in Safari, it looks fine however,
    when opening in I.E., it has some overlapping issues.
    I merely wanted to provide you with a quick
    heads up! Besides that, wonderful website!

  63. hello!,I really like your writing so so much!
    percentage we be in contact extra approximately your post on AOL?
    I require an expert on this area to unravel my problem.
    May be that is you! Taking a look forward to see you.

  64. I do not know if it’s just me or if everybody else encountering
    problems with your blog. It seems like some of the written text on your posts
    are running off the screen. Can somebody else please comment and let me know if this is happening to them too?
    This may be a problem with my browser because I’ve had this
    happen before. Thank you

  65. Pretty section of content. I just stumbled upon your
    web site and in accession capital to assert that I acquire actually enjoyed account your blog posts.
    Anyway I’ll be subscribing to your feeds and even I achievement you access consistently rapidly.

  66. Hmm it appears like your site ate my first comment (it was super long) so I guess I’ll just
    sum it up what I wrote and say, I’m thoroughly enjoying your blog.
    I too am an aspiring blog blogger but I’m still new to the whole thing.
    Do you have any helpful hints for inexperienced blog writers?
    I’d certainly appreciate it.

  67. Good day I am so excited I found your weblog, I really found you by accident, while I was
    browsing on Bing for something else, Regardless I am here now and
    would just like to say cheers for a fantastic post and
    a all round exciting blog (I also love the theme/design),
    I don’t have time to read through it all at
    the minute but I have saved it and also added in your RSS feeds, so when I
    have time I will be back to read a lot more, Please do keep
    up the awesome b.

  68. Hey outstanding website! Does running a blog like this require a great deal of work?
    I have absolutely no knowledge of programming however I had been hoping to start my own blog in the near future.

    Anyway, should you have any ideas or tips for new blog owners please share.
    I know this is off topic nevertheless I simply needed to ask.

    Thank you!

  69. you are in reality a just right webmaster. The website loading velocity is incredible.
    It kind of feels that you are doing any unique trick. Also, The contents are masterpiece.
    you’ve performed a magnificent task in this topic!

  70. I’ll immediately snatch your rss as I can not to find your email subscription hyperlink or
    newsletter service. Do you’ve any? Kindly allow me understand in order
    that I could subscribe. Thanks.

  71. Hi would you mind stating which blog platform
    you’re working with? I’m going to start my own blog
    in the near future but I’m having a hard time selecting between BlogEngine/Wordpress/B2evolution and Drupal.
    The reason I ask is because your design and style seems different then most blogs and I’m looking for something completely unique.
    P.S My apologies for being off-topic but I had
    to ask!

  72. Having read this I believed it was very informative.
    I appreciate you taking the time and effort to put this short article together.

    I once again find myself spending a significant amount of time both reading and commenting.
    But so what, it was still worth it!

  73. Hey I know this is off topic but I was wondering if you knew of any widgets I could add
    to my blog that automatically tweet my newest twitter updates.

    I’ve been looking for a plug-in like this for quite some
    time and was hoping maybe you would have some experience with something like this.
    Please let me know if you run into anything. I truly enjoy reading your blog and I look forward to your new updates.

  74. An interesting discussion is definitely worth comment. There’s no doubt that that you need to write more on this subject, it
    might not be a taboo subject but typically people do not discuss such issues.
    To the next! All the best!!

  75. Wonderful goods from you, man. I’ve understand your stuff previous to
    and you’re just too great. I really like what you have acquired
    here, certainly like what you are stating and the way in which you say
    it. You make it entertaining and you still take care of to keep it wise.

    I can not wait to read far more from you. This is really a great web site.

  76. Excellent post. I used to be checking continuously
    this weblog and I’m impressed! Extremely useful info particularly the
    last phase 🙂 I deal with such info much. I used to be seeking this particular information for
    a long time. Thanks and good luck.

  77. After I initially left a comment I seem to have clicked
    on the -Notify me when new comments are added- checkbox and
    from now on whenever a comment is added I get 4 emails
    with the same comment. There has to be a means you are
    able to remove me from that service? Kudos!

  78. Hi, I do think this is a great web site. I stumbledupon it ;
    ) I am going to come back yet again since i have book-marked it.
    Money and freedom is the best way to change, may you be rich and continue to
    guide other people.

  79. Hello, i think that i saw you visited my website thus i came to “return the favor”.I am trying to find things to improve my website!I suppose its ok to use
    some of your ideas!!

  80. Great post. I was checking continuously this weblog and I am impressed!
    Very helpful information specially the last phase 🙂 I maintain such information a lot.
    I used to be looking for this particular information for a very long
    time. Thanks and best of luck.

  81. Today, I went to the beach front with my kids. I found a sea shell
    and gave it to my 4 year old daughter and said “You can hear the ocean if you put this to your ear.” She placed the shell to her ear
    and screamed. There was a hermit crab inside and it pinched
    her ear. She never wants to go back! LoL I know this is completely off topic but I had to
    tell someone!

  82. A person essentially help to make seriously posts I would
    state. That is the very first time I frequented your website page and thus far?
    I surprised with the research you made to create this actual put up incredible.
    Excellent task!

  83. I was wondering if you ever considered changing the page layout of your blog?

    Its very well written; I love what youve got to say.
    But maybe you could a little more in the way of content so people could
    connect with it better. Youve got an awful lot of text for only having 1 or two images.

    Maybe you could space it out better?

  84. Hey I know this is off topic but I was wondering if you
    knew of any widgets I could add to my blog that automatically tweet my newest twitter updates.
    I’ve been looking for a plug-in like this for quite
    some time and was hoping maybe you would have some experience with something like this.
    Please let me know if you run into anything.
    I truly enjoy reading your blog and I look forward to your new updates.

  85. Undeniably believe that that you stated. Your favourite reason seemed to be at the web the simplest thing to take note
    of. I say to you, I definitely get annoyed even as other folks
    think about concerns that they just do not recognise about.
    You controlled to hit the nail upon the highest as
    smartly as outlined out the entire thing without having side effect
    , people can take a signal. Will likely be again to get more.
    Thanks

  86. Hey! This is my first visit to your blog! We are a team of
    volunteers and starting a new project in a community
    in the same niche. Your blog provided us beneficial information to work on. You have done a extraordinary job!

  87. My brother recommended I might like this web site.
    He was totally right. This post actually made my day.
    You can not imagine just how much time I had spent for this info!
    Thanks!

  88. You are so awesome! I don’t suppose I have read through anything like that before.
    So great to discover somebody with some genuine thoughts on this topic.

    Seriously.. thanks for starting this up. This website
    is something that is needed on the internet, someone with a bit of originality!

  89. I’m impressed, I have to admit. Rarely do I come across a blog
    that’s both educative and interesting, and let me tell you, you’ve hit the nail on the head.
    The issue is something that too few folks are speaking intelligently about.
    Now i’m very happy that I came across this in my hunt for something regarding this.

  90. This is really interesting, You’re a very skilled blogger.
    I’ve joined your feed and look forward to seeking more of your wonderful post.
    Also, I have shared your website in my social networks!

  91. When I originally commented I clicked the “Notify me when new comments are added” checkbox and now each time a comment is added I get several e-mails with the same comment.
    Is there any way you can remove me from that service?
    Thanks a lot!

  92. Hi this is kind of of off topic but I was wanting to know if blogs use WYSIWYG editors or if you
    have to manually code with HTML. I’m starting a blog soon but have no coding skills so I wanted to get guidance from someone with experience.
    Any help would be enormously appreciated!

  93. I’m impressed, I must say. Rarely do I encounter a blog that’s equally educative and amusing, and let me tell
    you, you have hit the nail on the head. The problem is an issue that not
    enough people are speaking intelligently about. I am very happy I found this
    in my search for something concerning this.

  94. Hi, I do believe this is a great blog. I stumbledupon it 😉 I’m going to
    revisit once again since i have saved as a favorite it. Money and freedom is the greatest way to change, may you
    be rich and continue to help others.

  95. You actually make it seem so easy with your presentation but I find this topic
    to be really something which I think I would never understand.
    It seems too complicated and very broad for me. I am looking forward
    for your next post, I’ll try to get the hang of it!

  96. Today, I went to the beachfront with my kids. I found a sea shell and gave it
    to my 4 year old daughter and said “You can hear the ocean if you put this to your ear.” She put the shell to
    her ear and screamed. There was a hermit crab
    inside and it pinched her ear. She never wants to go back!
    LoL I know this is completely off topic but I had to
    tell someone!

  97. Hi, i read your blog from time to time and i own a similar one and i was just curious if you get a
    lot of spam responses? If so how do you protect against
    it, any plugin or anything you can recommend? I get so much lately it’s driving me mad so any assistance is
    very much appreciated.

  98. Greetings! I know this is kind of off topic but I
    was wondering if you knew where I could find a captcha plugin for my comment form?

    I’m using the same blog platform as yours and I’m having problems finding one?
    Thanks a lot!

  99. Can I just say what a comfort to uncover somebody who genuinely understands what
    they’re talking about on the web. You actually realize how
    to bring an issue to light and make it important.

    More and more people need to read this and understand this
    side of your story. I was surprised you aren’t more popular because you certainly have the gift.

  100. Excellent beat ! I would like to apprentice while you amend your website, how could i subscribe for a
    blog web site? The account helped me a acceptable deal.
    I had been a little bit acquainted of this your broadcast provided bright clear idea

  101. When I initially commented I clicked the “Notify me when new comments are added” checkbox and now each time a comment is added I get three emails with the same comment.
    Is there any way you can remove me from that
    service? Thanks!

  102. hey there and thank you for your information – I’ve certainly picked up anything new from right here.
    I did however expertise several technical points using this site, since I experienced to reload the web site a lot of times previous to I could get it
    to load properly. I had been wondering if your web host is OK?

    Not that I’m complaining, but slow loading instances times will often affect your placement
    in google and can damage your high-quality score if
    ads and marketing with Adwords. Well I’m adding this RSS to my e-mail and could look out
    for much more of your respective intriguing content.
    Ensure that you update this again very soon.

  103. I believe this is among the most important info for me. And i am happy reading your article.
    However should commentary on some general things, The
    site style is wonderful, the articles is really excellent :
    D. Just right process, cheers

  104. Thanks for one’s marvelous posting! I truly enjoyed reading it, you will be a great author.I will make certain to bookmark your blog and may come
    back at some point. I want to encourage that you continue your great
    job, have a nice day!

  105. I feel this is one of the such a lot significant info for me.
    And i’m glad reading your article. But want to statement on some common issues,
    The website style is wonderful, the articles is in point of fact nice
    : D. Just right task, cheers

  106. Hi there! I could have sworn I’ve been to this blog before but after going through some of the articles
    I realized it’s new to me. Nonetheless, I’m certainly pleased I discovered it and I’ll be bookmarking
    it and checking back regularly!

  107. Please let me know if you’re looking for a article writer for your weblog.
    You have some really great posts and I think I would be a good asset.
    If you ever want to take some of the load off, I’d absolutely love to write some content for your blog in exchange for a link back to mine.
    Please shoot me an email if interested. Thank you!

  108. This is very interesting, You’re a very skilled blogger.

    I’ve joined your rss feed and look forward to seeking more of your fantastic post.
    Also, I have shared your web site in my social networks!

  109. Hi there this is kinda of off topic but I was wanting to know if blogs use WYSIWYG editors or if you have
    to manually code with HTML. I’m starting a blog soon but have no coding experience so I wanted to get guidance from
    someone with experience. Any help would be enormously
    appreciated!

  110. Wow that was unusual. I just wrote an incredibly long comment but after I clicked submit my comment didn’t appear.
    Grrrr… well I’m not writing all that over again. Regardless, just wanted to say wonderful blog!

  111. Howdy superb website! Does running a blog like this take a great deal of work?
    I’ve virtually no expertise in computer programming but I was hoping to start my own blog soon. Anyway, should you have any
    ideas or tips for new blog owners please share. I understand this is off topic however I just needed to ask.
    Many thanks!

  112. I don’t know whether it’s just me or if everyone else encountering problems with your site.
    It seems like some of the written text within your posts are running off the screen. Can someone else please
    comment and let me know if this is happening to them too?
    This could be a problem with my internet browser because I’ve had
    this happen before. Kudos

  113. Hi, I think your website might be having browser compatibility issues.
    When I look at your blog site in Ie, it looks
    fine but when opening in Internet Explorer, it has some overlapping.
    I just wanted to give you a quick heads up!
    Other then that, fantastic blog!

  114. Great post. I was checking continuously this blog and I am impressed!

    Extremely helpful info particularly the last part 🙂 I care for such
    information a lot. I was looking for this particular info
    for a long time. Thank you and best of luck.

  115. Aw, this was a very good post. Spending
    some time and actual effort to make a top notch article… but what can I say…
    I put things off a whole lot and don’t seem to get anything done.

  116. Howdy! This post couldn’t be written any better! Reading
    this post reminds me of my good old room mate! He always kept talking
    about this. I will forward this post to him. Fairly certain he will have a good read.
    Thank you for sharing!

  117. Its like you read my thoughts! You seem to understand so much about
    this, like you wrote the book in it or something.
    I believe that you just can do with a few percent to
    power the message house a little bit, however other than that, this
    is excellent blog. A fantastic read. I’ll certainly be back.

  118. Thank you for every other informative site. The place else may I am getting that kind of information written in such a perfect manner?

    I’ve a venture that I am simply now operating on,
    and I have been on the look out for such information.

  119. excellent publish, very informative. I’m wondering why the other experts of this sector
    do not notice this. You should proceed your writing.
    I’m sure, you’ve a great readers’ base already!

  120. Amazing blog! Is your theme custom made or did you download it from somewhere?
    A theme like yours with a few simple tweeks would really make my blog jump out.

    Please let me know where you got your design. Thanks a lot

  121. What’s Going down i’m new to this, I stumbled upon this I’ve found It
    positively helpful and it has aided me out loads. I’m
    hoping to give a contribution & help other customers like its helped me.
    Great job.

  122. You’ve made some really good points there. I checked on the web for additional information about the issue and found most people will go
    along with your views on this web site.

  123. I absolutely love your site.. Excellent colors & theme.
    Did you create this site yourself? Please reply back as I’m looking to create my very own blog and want
    to learn where you got this from or exactly what the theme is named.
    Appreciate it!

  124. Please let me know if you’re looking for a author for your weblog.
    You have some really good posts and I think I would be
    a good asset. If you ever want to take some of the load off,
    I’d really like to write some content for your blog in exchange for a link back to mine.
    Please shoot me an email if interested. Cheers!

  125. Hi there! I realize this is sort of off-topic however I
    had to ask. Does operating a well-established website such as yours take a
    massive amount work? I am completely new to operating a blog
    but I do write in my diary daily. I’d like to start a blog so I will be able to share my personal experience
    and feelings online. Please let me know if you have any kind of recommendations or
    tips for brand new aspiring bloggers. Appreciate it!

  126. Very good blog! Do you have any helpful hints for aspiring
    writers? I’m hoping to start my own site soon but I’m a little
    lost on everything. Would you advise starting with a free platform like
    Wordpress or go for a paid option? There are so many options out there that I’m completely confused ..
    Any recommendations? Thanks a lot!

  127. Nice post. I was checking constantly this blog and I’m impressed!
    Very helpful information particularly the last part 🙂 I care for such information much.
    I was looking for this particular info for a very long time.
    Thank you and good luck.

  128. Simply want to say your article is as amazing.
    The clearness on your put up is just excellent and i could suppose
    you are an expert in this subject. Well along with your permission allow
    me to take hold of your feed to keep updated with impending post.
    Thanks 1,000,000 and please continue the rewarding work.

  129. An interesting discussion is definitely worth comment. I believe that you ought to write more about this subject matter, it may not be a taboo matter but usually people do not talk about such subjects.
    To the next! Best wishes!!

  130. Thank you, I have recently been looking for information approximately this subject for a long time and yours is the best I’ve came upon so far.
    However, what about the conclusion? Are you sure concerning the source?

  131. Aw, this was a very nice post. Taking the time and
    actual effort to generate a top notch article… but
    what can I say… I put things off a lot and never manage to get nearly anything
    done.

  132. Does your website have a contact page? I’m having trouble locating it but, I’d
    like to send you an e-mail. I’ve got some suggestions for
    your blog you might be interested in hearing. Either way, great website and I look forward to seeing
    it improve over time.

  133. You really make it appear so easy along with your presentation but I to find this topic to be really
    one thing which I feel I would by no means understand.
    It sort of feels too complicated and very huge for me.
    I’m looking forward for your subsequent put up, I
    will attempt to get the dangle of it!

  134. We’re a gaggle of volunteers and starting a brand new scheme in our community.
    Your site provided us with helpful information to work on. You’ve done a formidable task and our
    entire community can be grateful to you.

  135. Hi! I know this is kind of off topic but I was wondering if you knew
    where I could find a captcha plugin for my comment form?
    I’m using the same blog platform as yours and I’m having difficulty finding one?
    Thanks a lot!

  136. My spouse and I stumbled over here different web address
    and thought I may as well check things out. I like what
    I see so now i am following you. Look forward to looking into your web page for a second time.

  137. First of all I want to say great blog! I had a quick
    question that I’d like to ask if you don’t mind. I was interested to find out how you center yourself and clear your mind before writing.
    I’ve had trouble clearing my mind in getting my ideas out there.
    I truly do enjoy writing however it just seems like
    the first 10 to 15 minutes are generally wasted just trying to figure out how to begin. Any recommendations or tips?
    Thank you!

  138. I believe everything published was actually very logical.

    However, what about this? what if you added a little information? I ain’t suggesting your
    content isn’t solid, but suppose you added a title that
    makes people want more? I mean ozenero | Mobile & Web
    Programming Tutorials is kinda vanilla. You should glance at Yahoo’s home page and watch how they create article headlines to get viewers interested.
    You might add a related video or a picture or two
    to get readers interested about what you’ve written. Just my opinion, it could make your
    posts a little livelier.

  139. Thank you for another informative website. The place else may just I get that kind of information written in such an ideal
    approach? I have a mission that I’m simply now running on, and I have been at the look out for such info.

  140. Its such as you learn my thoughts! You appear to understand
    a lot about this, like you wrote the guide in it or something.
    I believe that you could do with a few percent to power the message house a bit, however instead of that,
    this is magnificent blog. A great read. I will definitely be back.

  141. I just like the valuable info you supply to your articles.

    I’ll bookmark your blog and test once more right here regularly.
    I’m quite certain I will be told lots of new stuff right here!

    Good luck for the next!

  142. First of all I want to say terrific blog! I had a quick question that I’d like to ask if you do not mind.
    I was interested to find out how you center yourself and clear your head before writing.

    I have had trouble clearing my mind in getting my ideas out.
    I do take pleasure in writing but it just
    seems like the first 10 to 15 minutes are generally lost simply just trying to
    figure out how to begin. Any recommendations or hints? Many thanks!

  143. I’m not positive the place you are getting your info, but good topic.
    I must spend a while studying more or figuring out more.
    Thank you for fantastic information I was on the lookout for this info for my mission.

  144. Wonderful items from you, man. I have understand your
    stuff prior to and you are simply extremely wonderful. I really like what you
    have obtained here, really like what you’re saying and the best way by which you say it.
    You are making it enjoyable and you continue to care for to keep it sensible.
    I cant wait to read far more from you. This is actually a great website.

  145. Pretty section of content. I simply stumbled upon your site
    and in accession capital to say that I get actually loved account your
    weblog posts. Anyway I’ll be subscribing on your
    feeds and even I achievement you access consistently quickly.

  146. I know this if off topic but I’m looking into
    starting my own blog and was curious what all is required to get
    set up? I’m assuming having a blog like yours would cost a
    pretty penny? I’m not very internet smart so I’m not 100% positive.
    Any suggestions or advice would be greatly appreciated. Thank you

  147. Hi there! I could have sworn I’ve visited this
    web site before but after browsing through some of the articles I realized it’s new to me.
    Anyways, I’m certainly delighted I stumbled upon it and I’ll be bookmarking it and checking back regularly!

  148. Appreciating the time and energy you put into your website and detailed information you present.
    It’s good to come across a blog every once
    in a while that isn’t the same unwanted rehashed material.

    Fantastic read! I’ve saved your site and I’m adding your RSS feeds to my Google account.

  149. My brother recommended I might like this website. He was entirely right.
    This post truly made my day. You cann’t imagine simply how
    much time I had spent for this information!
    Thanks!

  150. I do not know if it’s just me or if everybody else experiencing
    problems with your site. It appears as if some of the text within your
    posts are running off the screen. Can someone else please provide feedback and let me know if this is happening to them as well?
    This may be a problem with my browser because I’ve
    had this happen before. Thank you

  151. Hi, I do think this is a great web site. I stumbledupon it 😉 I’m going to return once again since I book-marked it.
    Money and freedom is the best way to change, may you be rich and continue to help other people.

  152. When I initially commented I clicked the “Notify me when new comments are added” checkbox and now each
    time a comment is added I get three e-mails with the same comment.
    Is there any way you can remove people from that service? Many thanks!

  153. Hey There. I discovered your blog the usage of msn.
    That is a really neatly written article. I will make sure to bookmark
    it and come back to read extra of your useful
    information. Thank you for the post. I’ll certainly comeback.

  154. Hi there! I know this is kind of off topic but I was wondering if you knew where I could
    find a captcha plugin for my comment form? I’m using the
    same blog platform as yours and I’m having difficulty finding one?
    Thanks a lot!

  155. I do trust all of the ideas you have introduced on your post.
    They’re really convincing and will definitely work.

    Still, the posts are very brief for starters. May just
    you please lengthen them a little from subsequent time?

    Thanks for the post.

  156. It’s amazing to pay a visit this site and reading the views of all friends on the topic of this article, while I am also eager of getting knowledge.

  157. What i do not understood is in truth how you
    are no longer actually much more smartly-appreciated than you
    might be now. You are very intelligent. You recognize
    thus considerably in the case of this subject, made
    me in my view believe it from numerous varied angles. Its like men and
    women aren’t fascinated except it is something to accomplish with Girl gaga!
    Your individual stuffs outstanding. At all times care for it up!

  158. Hello there, I discovered your web site by the use of
    Google at the same time as searching for a related
    topic, your site got here up, it seems great. I have bookmarked it in my google bookmarks.

    Hello there, just was aware of your blog thru Google, and found that it
    is really informative. I am gonna watch out for brussels.
    I will be grateful if you proceed this in future.
    Numerous people will probably be benefited out of your writing.
    Cheers!

  159. Its like you read my mind! You appear to
    know so much about this, like you wrote the book in it or something.

    I think that you could do with a few pics to drive the message home a bit, but instead of that, this is great blog.
    A great read. I will certainly be back.

  160. Someone essentially help to make critically posts I would state.

    This is the very first time I frequented your web page and thus
    far? I amazed with the analysis you made to make this actual put up
    amazing. Wonderful activity!

  161. My spouse and I absolutely love your blog and find a lot of your post’s to be precisely what I’m looking for.
    can you offer guest writers to write content in your case?
    I wouldn’t mind producing a post or elaborating on many of the subjects you write related to here.
    Again, awesome weblog!

  162. My brother recommended I would possibly like
    this web site. He was totally right. This publish actually made my day.

    You cann’t imagine simply how so much time I had spent for this
    information! Thank you!

  163. With havin so much written content do you ever run into any problems of plagorism or copyright infringement?
    My site has a lot of exclusive content I’ve either
    authored myself or outsourced but it seems a lot of it is popping it up all over the internet without my
    agreement. Do you know any techniques to help reduce
    content from being ripped off? I’d really appreciate
    it.

  164. I am extremely impressed together with your writing skills and also with the layout to your blog.
    Is this a paid theme or did you customize it yourself? Anyway keep up the
    excellent high quality writing, it is rare to
    see a great weblog like this one nowadays..

  165. Howdy just wanted to give you a quick heads up.

    The words in your content seem to be running off the screen in Ie.
    I’m not sure if this is a formatting issue or something to do with web browser compatibility but I figured
    I’d post to let you know. The design look great though!

    Hope you get the problem solved soon. Kudos

  166. Hello there! This is my first visit to your blog! We are a collection of volunteers and
    starting a new initiative in a community in the same niche.
    Your blog provided us useful information to work on. You have done a marvellous job!

  167. Good day! Do you know if they make any plugins to help with SEO?
    I’m trying to get my blog to rank for some targeted keywords but I’m not
    seeing very good results. If you know of any please share.
    Thanks!

  168. My developer is trying to convince me to move to .net from PHP.
    I have always disliked the idea because of the costs.

    But he’s tryiong none the less. I’ve been using Movable-type on several websites for about a year and am nervous about switching to another platform.
    I have heard good things about blogengine.net. Is there a way I can import
    all my wordpress posts into it? Any kind of help would be greatly appreciated!

  169. I do trust all of the ideas you have presented to your
    post. They are very convincing and will definitely work. Still, the
    posts are very quick for newbies. Could you please extend them a bit from subsequent time?

    Thanks for the post.

  170. Wow that was strange. I just wrote an incredibly long
    comment but after I clicked submit my comment didn’t show up.
    Grrrr… well I’m not writing all that over again. Anyhow, just wanted to say great blog!

  171. Fantastic beat ! I would like to apprentice while you amend your website, how can i
    subscribe for a blog website? The account aided me a acceptable
    deal. I had been a little bit acquainted of this your broadcast offered bright clear concept

  172. I was wondering if you ever considered changing the layout of your website?
    Its very well written; I love what youve got to say.
    But maybe you could a little more in the way of content so people could
    connect with it better. Youve got an awful lot of text for only having 1 or two images.
    Maybe you could space it out better?

  173. My brother recommended I would possibly like this blog.
    He was once entirely right. This publish actually made my day.

    You can not consider just how much time I had spent for this information! Thanks!

  174. I think this is among the most vital information for me.
    And i am glad reading your article. But want to remark
    on few general things, The web site style is wonderful, the articles is really excellent :
    D. Good job, cheers

  175. you are in reality a good webmaster. The site loading velocity
    is amazing. It kind of feels that you’re doing any unique
    trick. Also, The contents are masterwork. you have performed a wonderful job on this subject!

  176. Hi would you mind sharing which blog platform you’re
    using? I’m planning to start my own blog soon but I’m having
    a hard time selecting between BlogEngine/Wordpress/B2evolution and
    Drupal. The reason I ask is because your design seems different then most blogs and I’m looking for
    something completely unique.
    P.S My apologies for getting off-topic but I had to ask!

  177. I do not know if it’s just me or if perhaps everyone else experiencing
    issues with your website. It appears as though some of
    the text within your posts are running off the screen. Can somebody else please provide feedback and let me know if this is happening to them as well?
    This may be a issue with my web browser because I’ve had this happen previously.
    Many thanks

  178. I do not know if it’s just me or if perhaps everyone else encountering issues with
    your blog. It seems like some of the text within your
    posts are running off the screen. Can someone else please provide feedback and let
    me know if this is happening to them as well? This may be a problem with my
    internet browser because I’ve had this happen before. Kudos

  179. I’d like to thank you for the efforts you have put in penning this blog.
    I am hoping to check out the same high-grade blog posts from you later on as well.
    In fact, your creative writing abilities has inspired me to
    get my very own website now 😉

  180. I am really loving the theme/design of your weblog. Do you ever
    run into any internet browser compatibility issues?
    A couple of my blog readers have complained about
    my website not operating correctly in Explorer but looks great in Chrome.
    Do you have any ideas to help fix this issue?

  181. Attractive component of content. I just stumbled
    upon your blog and in accession capital to say that I acquire actually
    loved account your weblog posts. Any way I will be subscribing in your augment and even I success you get admission to consistently fast.