Spring Boot + Angular 6 example | Spring Data + REST + MongoDb CRUD example

spring-boot-angular-6-example-spring-data-rest-mongodb-crud-example-feature-image-n

In this tutorial, we show you Angular 6 Http Client & Spring Boot Server example that uses Spring Data to do CRUD with MongoDb and Angular 6 as a front-end technology to make request and receive response.

Related Posts:
Spring Boot + Angular 6 example | Spring Data JPA + REST + PostgreSQL CRUD example
Spring Boot + Angular 6 example | Spring Data JPA + REST + MySQL CRUD example
Angular 6 HttpClient + Spring Boot + MariaDB example | Spring Data JPA + RestAPIs CRUD example
Spring Boot + Angular 6 example | Spring Data + REST + Cassandra CRUD example

I. Technologies

– Java 1.8
– Maven 3.3.9
– Spring Tool Suite – Version 3.8.4.RELEASE
– Spring Boot: 2.0.3.RELEASE
– Angular 6
– RxJS 6

II. Overview

Demo

angular-http-service-architecture

1. Spring Boot Server

spring-boot-angular-6-spring-rest-api-data-mongodb-spring-server-architecture

2. Angular 6 Client

spring-boot-angular-6-spring-rest-api-data-mongodb-angular-client-architecture

III. Practice

1. Project Structure

1.1 Spring Boot Server

spring-boot-angular-6-spring-rest-api-data-mongodb-spring-server-structure

Customer class corresponds to entity and table customer.
CustomerRepository is an interface extends MongoRepository, will be autowired in CustomerController for implementing repository methods and custom finder methods.
CustomerController is a REST Controller which has request mapping methods for RESTful requests such as: getAllCustomers, postCustomer, deleteCustomer, deleteAllCustomers, findByAge, updateCustomer.
– Configuration for Spring Datasource and Spring Data properties in application.properties
Dependencies for Spring Boot and MongoDb in pom.xml

1.2 Angular 6 Client

spring-boot-angular-6-spring-rest-api-data-mongodb-angular-client-structure

In this example, we focus on:
– 4 components: customers-list, customer-details, create-customer, search-customer.
– 3 modules: FormsModule, HttpClientModule, AppRoutingModule.
customer.ts: class Customer (id, firstName, lastName)
customer.service.ts: Service for Http Client methods

2. How to do

2.1 Spring Boot Server

2.1.1 Dependency

<dependency>
	<groupId>org.springframework.boot</groupId>
	<artifactId>spring-boot-starter-data-mongodb</artifactId>
</dependency>

<dependency>
	<groupId>org.springframework.boot</groupId>
	<artifactId>spring-boot-starter-web</artifactId>
</dependency>

2.1.2 Customer – Data Model

model/Customer.java


package com.javasampleapproach.springrest.mongodb.model;

import org.springframework.data.annotation.Id;
import org.springframework.data.mongodb.core.mapping.Document;

@Document(collection = "customer")
public class Customer {
	@Id
	private String id;

	private String name;
	private int age;
	private boolean active;

	public Customer() {
	}

	public Customer(String name, int age) {
		this.name = name;
		this.age = age;
	}

	public String getId() {
		return id;
	}

	public void setName(String name) {
		this.name = name;
	}

	public String getName() {
		return this.name;
	}

	public void setAge(int age) {
		this.age = age;
	}

	public int getAge() {
		return this.age;
	}

	public boolean isActive() {
		return active;
	}

	public void setActive(boolean active) {
		this.active = active;
	}

	@Override
	public String toString() {
		return "Customer [id=" + id + ", name=" + name + ", age=" + age + ", active=" + active + "]";
	}
}

2.1.3 Repository

repo/CustomerRepository.java


package com.javasampleapproach.springrest.mongodb.repo;

import java.util.List;

import org.springframework.data.mongodb.repository.MongoRepository;

import com.javasampleapproach.springrest.mongodb.model.Customer;

public interface CustomerRepository extends MongoRepository{
	List findByAge(int age);
}

2.1.4 REST Controller

controller/CustomerController.java


package com.javasampleapproach.springrest.mongodb.controller;

import java.util.ArrayList;
import java.util.List;
import java.util.Optional;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.CrossOrigin;
import org.springframework.web.bind.annotation.DeleteMapping;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.PutMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import com.javasampleapproach.springrest.mongodb.model.Customer;
import com.javasampleapproach.springrest.mongodb.repo.CustomerRepository;

@CrossOrigin(origins = "http://localhost:4200")
@RestController
@RequestMapping("/api")
public class CustomerController {

	@Autowired
	CustomerRepository repository;

	@GetMapping("/customers")
	public List getAllCustomers() {
		System.out.println("Get all Customers...");

		List customers = new ArrayList<>();
		repository.findAll().forEach(customers::add);

		return customers;
	}

	@PostMapping("/customers/create")
	public Customer postCustomer(@RequestBody Customer customer) {

		Customer _customer = repository.save(new Customer(customer.getName(), customer.getAge()));
		return _customer;
	}

	@DeleteMapping("/customers/{id}")
	public ResponseEntity deleteCustomer(@PathVariable("id") String id) {
		System.out.println("Delete Customer with ID = " + id + "...");

		repository.deleteById(id);

		return new ResponseEntity<>("Customer has been deleted!", HttpStatus.OK);
	}

	@DeleteMapping("/customers/delete")
	public ResponseEntity deleteAllCustomers() {
		System.out.println("Delete All Customers...");

		repository.deleteAll();

		return new ResponseEntity<>("All customers have been deleted!", HttpStatus.OK);
	}

	@GetMapping("customers/age/{age}")
	public List findByAge(@PathVariable int age) {

		List customers = repository.findByAge(age);
		return customers;
	}

	@PutMapping("/customers/{id}")
	public ResponseEntity updateCustomer(@PathVariable("id") String id, @RequestBody Customer customer) {
		System.out.println("Update Customer with ID = " + id + "...");

		Optional customerData = repository.findById(id);

		if (customerData.isPresent()) {
			Customer _customer = customerData.get();
			_customer.setName(customer.getName());
			_customer.setAge(customer.getAge());
			_customer.setActive(customer.isActive());
			return new ResponseEntity<>(repository.save(_customer), HttpStatus.OK);
		} else {
			return new ResponseEntity<>(HttpStatus.NOT_FOUND);
		}
	}
}

2.1.5 Configuration for Spring Datasource & Data MongoDb properties

application.properties


spring.data.mongodb.database=jsa_mongodb
spring.data.mongodb.port=27017

2.2 Angular 6 Client

2.2.0 Create Service & Components

Run commands below:
ng g s customer
ng g c create-customer
ng g c customer-details
ng g c customers-list
ng g c search-customers
On each Component selector, delete app- prefix, then change tslint.json rules"component-selector" to false.

2.2.1 Model

customer.ts


export class Customer {
    id: number;
    name: string;
    age: number;
    active: boolean;
}

2.2.2 CustomerService

customer.service.ts

import { Injectable } from '@angular/core';
import { HttpClient } from '@angular/common/http';
import { Observable } from 'rxjs';

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

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

  constructor(private http: HttpClient) { }

  getCustomer(id: number): Observable<Object> {
    return this.http.get(`${this.baseUrl}/${id}`);
  }

  createCustomer(customer: Object): Observable<Object> {
    return this.http.post(`${this.baseUrl}` + `/create`, customer);
  }

  updateCustomer(id: number, value: any): Observable<Object> {
    return this.http.put(`${this.baseUrl}/${id}`, value);
  }

  deleteCustomer(id: number): Observable<any> {
    return this.http.delete(`${this.baseUrl}/${id}`, { responseType: 'text' });
  }

  getCustomersList(): Observable<any> {
    return this.http.get(`${this.baseUrl}`);
  }

  getCustomersByAge(age: number): Observable<any> {
    return this.http.get(`${this.baseUrl}/age/${age}`);
  }

  deleteAll(): Observable<any> {
    return this.http.delete(`${this.baseUrl}` + `/delete`, { responseType: 'text' });
  }
}

2.2.3 Components

– CustomerDetailsComponent:
customer-details/customer-details.component.ts


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

import { CustomersListComponent } from '../customers-list/customers-list.component';

@Component({
  selector: 'customer-details',
  templateUrl: './customer-details.component.html',
  styleUrls: ['./customer-details.component.css']
})
export class CustomerDetailsComponent implements OnInit {

  @Input() customer: Customer;

  constructor(private customerService: CustomerService, private listComponent: CustomersListComponent) { }

  ngOnInit() {
  }

  updateActive(isActive: boolean) {
    this.customerService.updateCustomer(this.customer.id,
      { name: this.customer.name, age: this.customer.age, active: isActive })
      .subscribe(
        data => {
          console.log(data);
          this.customer = data as Customer;
        },
        error => console.log(error));
  }

  deleteCustomer() {
    this.customerService.deleteCustomer(this.customer.id)
      .subscribe(
        data => {
          console.log(data);
          this.listComponent.reloadData();
        },
        error => console.log(error));
  }
}

customer-details/customer-details.component.html

<div *ngIf="customer">
  <div>
    <label>Name: </label> {{customer.name}}
  </div>
  <div>
    <label>Age: </label> {{customer.age}}
  </div>
  <div>
    <label>Active: </label> {{customer.active}}
  </div>

  <span class="button is-small btn-primary" *ngIf='customer.active' (click)='updateActive(false)'>Inactive</span>

  <span class="button is-small btn-primary" *ngIf='!customer.active' (click)='updateActive(true)'>Active</span>

  <span class="button is-small btn-danger" (click)='deleteCustomer()'>Delete</span>

  <hr/>
</div>

– CustomersListComponent:
customers-list/customers-list.component.ts


import { Component, OnInit } from '@angular/core';
import { Observable } from 'rxjs';

import { CustomerService } from '../customer.service';
import { Customer } from '../customer';

@Component({
  selector: 'customers-list',
  templateUrl: './customers-list.component.html',
  styleUrls: ['./customers-list.component.css']
})
export class CustomersListComponent implements OnInit {

  customers: Observable;

  constructor(private customerService: CustomerService) { }

  ngOnInit() {
    this.reloadData();
  }

  deleteCustomers() {
    this.customerService.deleteAll()
      .subscribe(
        data => {
          console.log(data);
          this.reloadData();
        },
        error => console.log('ERROR: ' + error));
  }

  reloadData() {
    this.customers = this.customerService.getCustomersList();
  }
}

customers-list/customers-list.component.html

<h1>Customers</h1>

<div *ngFor="let customer of customers | async" style="width: 300px;">
  <customer-details [customer]='customer'></customer-details>
</div>

<div>
  <button type="button" class="button btn-danger" (click)='deleteCustomers()'>Delete All</button>
</div>

– CreateCustomerComponent:
create-customer/create-customer.component.ts


import { Component, OnInit } from '@angular/core';

import { Customer } from '../customer';
import { CustomerService } from '../customer.service';

@Component({
  selector: 'create-customer',
  templateUrl: './create-customer.component.html',
  styleUrls: ['./create-customer.component.css']
})
export class CreateCustomerComponent implements OnInit {

  customer: Customer = new Customer();
  submitted = false;

  constructor(private customerService: CustomerService) { }

  ngOnInit() {
  }

  newCustomer(): void {
    this.submitted = false;
    this.customer = new Customer();
  }

  save() {
    this.customerService.createCustomer(this.customer)
      .subscribe(data => console.log(data), error => console.log(error));
    this.customer = new Customer();
  }

  onSubmit() {
    this.submitted = true;
    this.save();
  }
}

create-customer/create-customer.component.html

<h3>Create Customer</h3>
<div [hidden]="submitted" style="width: 300px;">
  <form (ngSubmit)="onSubmit()">
    <div class="form-group">
      <label for="name">Name</label>
      <input type="text" class="form-control" id="name" required [(ngModel)]="customer.name" name="name">
    </div>

    <div class="form-group">
      <label for="age">Age</label>
      <input type="text" class="form-control" id="age" required [(ngModel)]="customer.age" name="age">
    </div>

    <button type="submit" class="btn btn-success">Submit</button>
  </form>
</div>

<div [hidden]="!submitted">
  <h4>You submitted successfully!</h4>
  <button class="btn btn-success" (click)="newCustomer()">Add</button>
</div>

– SearchCustomersComponent:
search-customers/search-customers.component.ts


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

@Component({
  selector: 'search-customers',
  templateUrl: './search-customers.component.html',
  styleUrls: ['./search-customers.component.css']
})
export class SearchCustomersComponent implements OnInit {

  age: number;
  customers: Customer[];

  constructor(private dataService: CustomerService) { }

  ngOnInit() {
    this.age = 0;
  }

  private searchCustomers() {
    this.dataService.getCustomersByAge(this.age)
      .subscribe(customers => this.customers = customers);
  }

  onSubmit() {
    this.searchCustomers();
  }
}

search-customers/search-customers.component.html

<h3>Find By Age</h3>
<div style="width: 300px;">
  <form (ngSubmit)="onSubmit()">
    <div class="form-group">
      <label for="lastname">Age</label>
      <input type="text" class="form-control" id="age" required [(ngModel)]="age" name="age">
    </div>

    <div class="btn-group">
      <button type="submit" class="btn btn-success">Submit</button>
    </div>
  </form>
</div>
<ul>
  <li *ngFor="let customer of customers">
    <h4>{{customer.id}} - {{customer.name}} {{customer.age}}</h4>
  </li>
</ul>

2.2.4 AppRoutingModule

app-routing.module.ts


import { NgModule } from '@angular/core';
import { RouterModule, Routes } from '@angular/router';
import { CustomersListComponent } from './customers-list/customers-list.component';
import { CreateCustomerComponent } from './create-customer/create-customer.component';
import { SearchCustomersComponent } from './search-customers/search-customers.component';

const routes: Routes = [
    { path: '', redirectTo: 'customer', pathMatch: 'full' },
    { path: 'customer', component: CustomersListComponent },
    { path: 'add', component: CreateCustomerComponent },
    { path: 'findbyage', component: SearchCustomersComponent },
];

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

export class AppRoutingModule { }

And AppComponent HTML for routing:
app.component.html

<div style="padding: 20px;">
  <h1 style="color: blue">{{title}}</h1>
  <h3>{{description}}</h3>
  <nav>
    <a routerLink="customer" class="btn btn-primary active" role="button" routerLinkActive="active">Customers</a>
    <a routerLink="add" class="btn btn-primary active" role="button" routerLinkActive="active">Add</a>
    <a routerLink="findbyage" class="btn btn-primary active" role="button" routerLinkActive="active">Search</a>
  </nav>
  <router-outlet></router-outlet>
</div>

2.2.5 AppModule

app.module.ts


import { BrowserModule } from '@angular/platform-browser';
import { NgModule } from '@angular/core';
import { FormsModule } from '@angular/forms';

import { AppComponent } from './app.component';
import { CreateCustomerComponent } from './create-customer/create-customer.component';
import { CustomerDetailsComponent } from './customer-details/customer-details.component';
import { CustomersListComponent } from './customers-list/customers-list.component';
import { SearchCustomersComponent } from './search-customers/search-customers.component';
import { AppRoutingModule } from './app-routing.module';
import { HttpClientModule } from '@angular/common/http';

@NgModule({
  declarations: [
    AppComponent,
    CreateCustomerComponent,
    CustomerDetailsComponent,
    CustomersListComponent,
    SearchCustomersComponent
  ],
  imports: [
    BrowserModule,
    FormsModule,
    AppRoutingModule,
    HttpClientModule
  ],
  providers: [],
  bootstrap: [AppComponent]
})
export class AppModule { }

3. Run & Check Result

Build and Run Spring Boot project with commandlines: mvn clean install and mvn spring-boot:run.
– Run the Angular App with command: ng serve.

– Open browser for url http://localhost:4200/:
Add Customer:

spring-boot-angular-6-spring-rest-api-data-mongodb-add-customer

Show Customers:

spring-boot-angular-6-spring-rest-api-data-mongodb-show-customers

Click on Active button to update Customer status:

spring-boot-angular-6-spring-rest-api-data-mongodb-update-customers

Search Customers by Age:

spring-boot-angular-6-spring-rest-api-data-mongodb-search-customers

Delete a Customer:

spring-boot-angular-6-spring-rest-api-data-mongodb-delete-customer

Delete All Customers:

spring-boot-angular-6-spring-rest-api-data-mongodb-delete-all-customers

IV. Source Code

Angular6SpringBoot-Client
SpringRestMongoDb-Server

212 thoughts on “Spring Boot + Angular 6 example | Spring Data + REST + MongoDb CRUD example”

  1. Thank you for providing a straightforward WORKING example of Angular+Java. There are many other tutorials and examples that describe similar configurations, but they are often missing complete descriptions, cluttered with ancillary technologies, or don’t actually work as described.

    1. Hi Kurt Risser,

      Thank you for your praise, it gives us more motivation to work harder and make more tutorials.

      Best Regards,
      ozenero.

  2. I’m new in angular and angular portion of this project not work for me. Can you provide some detail how i do that. If i want to create by my self not clone your given link? And customer.ts not generated by default any of container generated command. so please provide some guidance.

  3. I beloved up to you will obtain performed right here. The cartoon is attractive, your authored material stylish. however, you command get bought an nervousness over that you want be delivering the following. unwell for sure come further beforehand once more as exactly the similar just about a lot continuously inside of case you defend this hike.

  4. We absolutely love your blog and find the majority of your post’s to be just what I’m looking for. can you offer guest writers to write content for you personally? I wouldn’t mind producing a post or elaborating on a number of the subjects you write about here. Again, awesome weblog!

  5. 463468 937562Maintain up the fantastic work , I read couple of weblog posts on this website and I believe that your website is real intriguing and has bands of good information . 583405

  6. hello there and thank you for your information – I’ve certainly picked up anything new from right here.
    I did however expertise a few technical points using this website, as 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 hosting is OK? Not that I’m complaining, but
    sluggish loading instances times will sometimes affect your placement in google and could damage your high quality score if ads and marketing with Adwords.
    Well I am adding this RSS to my email and can look out for much more of your respective intriguing content.

    Ensure that you update this again very soon.

  7. Amazing issues here. I am very satisfied to peer your article.

    Thanks a lot and I’m having a look ahead to touch you. Will you kindly drop me a e-mail?

  8. You could certainly see your expertise in the article you
    write. The sector hopes for even more passionate writers like you who are not
    afraid to mention how they believe. Always go after your heart.

  9. Excellent items from you, man. I’ve understand your stuff previous
    to and you’re simply extremely fantastic. I actually like what you have acquired right here, certainly like what you’re saying and the best way during which you are saying
    it. You are making it enjoyable and you still care for to stay it wise.
    I can not wait to read far more from you. This is really a great site.

  10. Its such as you learn my mind! You appear to know so much approximately this, such asyou wrote the book in it or something. I thinkthat you just can do with a few to power themessage house a bit, however instead of that, thisis wonderful blog. A fantastic read. I’ll certainly beback.

  11. I was extremely pleased to discover this site. I need to
    to thank you for your time due to this fantastic read!!

    I definitely enjoyed every part of it and I have you saved to fav to look
    at new information in your website.

  12. Hi! I just would like to offer you a huge thumbs up for your great info you have right here on this post.I am returning to your website for more soon.

  13. Nice post. I used to be checking constantly this blog and I’m
    impressed! Extremely helpful info specially the closing section 🙂
    I maintain such information a lot. I was looking for this certain info
    for a long time. Thanks and good luck.

  14. Wow, marvelous blog layout! How long have you been blogging for?
    you make blogging look easy. The overall look of your website is excellent,
    as well as the content!

  15. Thanks for any other fantastic article. The place else could anybody get thattype of info in such an ideal method of writing? I havea presentation subsequent week, and I amat the search for such information.

  16. An impressive share! I have just forwarded this onto a colleague who was conductinga little homework on this. And he actually ordered me lunch becauseI found it for him… lol. So let me reword this….Thank YOU for the meal!! But yeah, thanksfor spending some time to talk about this issue here on your web page.

  17. I have learn several good stuff here. Certainly value bookmarking
    for revisiting. I surprise how much attempt you place to make
    one of these magnificent informative site.

  18. Hi there, just became aware of your blog through Google, and found that it’s truly informative.I’m gonna watch out for brussels. I’ll appreciateif you continue this in future. A lot of people willbe benefited from your writing. Cheers!

  19. Hi, i think that i saw you visited my blog thus i cameto “return the favor”.I am attempting to find things to improve my web site!I suppose its ok to use a few of your ideas!!

  20. Oh my goodness! Impressive article dude! Many thanks, However
    I am going through difficulties with your RSS. I don’t know
    why I cannot subscribe to it. Is there anybody else getting identical RSS
    issues? Anyone that knows the solution can you kindly respond?
    Thanks!!

  21. Excellent items from you, man. I have keep in mind your stuff previous to and you are just extremely fantastic.
    I actually like what you have got right here, certainly
    like what you’re stating and the way in which through which you are saying it.
    You are making it entertaining and you still care for to
    stay it sensible. I can’t wait to learn much more
    from you. That is really a terrific site.

  22. Hey would you mind stating which blog platform you’re working with?
    I’m looking to start my own blog soon but I’m having a
    difficult time choosing 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!

  23. My spouse and I stumbled over here by a different page and
    thought I might check things out. I like what I see so i am just
    following you. Look forward to looking over your web page for a second time.

  24. Thank you for the good writeup. It in fact was a amusement account it.
    Look advanced to more added agreeable from
    you! By the way, how could we communicate?

  25. I loved as much as you’ll receive carried out right here.
    The sketch is attractive, your authored subject matter stylish.

    nonetheless, you command get got an impatience over that you wish be delivering the following.

    unwell unquestionably come further formerly again as exactly the same nearly
    very often inside case you shield this hike.

  26. I’ll rigyht away seize your rss as I can not find your email subscription hyperlink or newsletter service.
    Do you’ve any? Kindly let me reccognize in order that I could subscribe.
    Thanks.

  27. Excellent post. I was checking constantly this blog and
    I am impressed! Extremely helpful info specifically the last part 🙂 I
    care for such info a lot. I was looking for this
    particular information for a long time. Thank you and good luck.

  28. I haven’t checked in here for a while because I
    thought it waas getting boring, but the las several posts are good quality so I guess I’ll
    add yoou back to my everyday bloglist. You deswerve it friend 🙂

  29. Wow, marvelous blog layout! How llong have you been blogging for?
    you made blogging look easy. The overall look of your web site is excellent, as well as the content!

  30. What’s Happening i’m neww to this, I stumbled upon this I have discfovered It absolutely useful and it has
    aided me out loads. I hope to contribute & assist different users
    like its aided me. Good job.

  31. It is the best time to make some plans for the future and
    it is time to be happy. I have read this post and if I could I want to
    suggest you few interesting things or tips.

    Maybe you can write next articles referring to this article.

    I desire to read even more things about it!

  32. Can I simply say what a comfort to find an individual
    who really understands what they’re discussing on the net.
    You certainly understand how to bring an issue to light and make it important.
    More and more people must read this and understand this side of the story.
    I was surprised that you’re not more popular since
    you surely have the gift.

  33. Have you ever thought about creating an ebook or guest authoring on other blogs?
    I have a blog based on the same information you discuss and would love to have you share some stories/information. I know my
    readers would appreciate your work. If you are even remotely interested, feel free to send
    me an e mail.

  34. Wonderful work! This is the kind of info that are supposed to be shared around the web.
    Disgrace on Google for not positioning this submit higher! Come
    on over and seek advice from my web site .
    Thank you =)

  35. Thank you for every other great post. Where else may just
    anyone get that type of info in such a perfect manner of writing?
    I have a presentation next week, and I am on the look for such information.

  36. Nice post. I was checking constantly this blog and I’m impressed!
    Very helpful information specifically the last part :
    ) I care for such information a lot. I was looking for this particular info for a
    very long time. Thank you and good luck.

  37. Aw, this was a really good post. Taking the time and actual effort to
    make a really good article… but what can I say… I hesitate a whole lot and never seem to
    get anything done.

  38. Admiring the dedication you put into your blog and detailed information you offer.

    It’s awesome to come across a blog every once in a while that isn’t
    the same outdated rehashed information. Fantastic read!
    I’ve bookmarked your site and I’m including your RSS feeds to my Google account.

  39. Nice blog here! Also your web site loads up fast!
    What web host are you using? Can I get your affiliate link to your host?
    I wish my web site loaded up as fast as yours lol

  40. I know this if off topic but I’m looking into starting my own weblog 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 web savvy so I’m not 100% certain. Any suggestions or advice would be greatly appreciated.
    Kudos

  41. I like the valuable information you provide in your articles.
    I will bookmark your weblog and check again here regularly.
    I am quite sure I will learn many new stuff right here!
    Best of luck for the next!

  42. We stumbled over here by a different website
    and thought I should check things out. I like what I see so now
    i am following you. Look forward to looking into your web page repeatedly.

  43. I would like to thank you for the efforts you’ve put in penning this website.
    I’m hoping to view the same high-grade blog posts from you in the future as well.

    In fact, your creative writing abilities has motivated me to
    get my own, personal website now 😉

  44. Thank you for the good writeup. It in fact was a amusement account it.
    Look advanced to more added agreeable from you! However,
    how could we communicate?

  45. Fine way of telling, and nice piece of writing to obtain information concerning my presentation topic,
    which i am going to present in institution of higher
    education.

  46. Hello just wanted to give you a quick heads up and let you know a
    few of the images aren’t loading properly. I’m not sure why but
    I think its a linking issue. I’ve tried it in two different internet browsers and both show the same results.

  47. My brother suggested I would possibly like this website.
    He was totally right. This post actually made my day.
    You can not believe just how so much time I had spent for this info!
    Thank you!

  48. Thanks for your personal marvelous posting! I actually enjoyed reading it, you may be a great
    author.I will always bookmark your blog and will eventually come back in the future.
    I want to encourage yourself to continue your great writing, have a nice
    holiday weekend!

  49. I’m extremely inspired together with your writing
    talents and also with the format in your blog. Is that this a paid subject or did you customize it yourself?
    Either way stay up the nice high quality writing, it is uncommon to see a great
    weblog like this one today..

  50. I am really enjoying the theme/design of your web site.
    Do you ever run into any web browser compatibility problems?

    A few of my blog readers have complained about my site not working correctly in Explorer but looks great in Opera.
    Do you have any suggestions to help fix this
    problem?

  51. After looking over a number of the blog posts on your web
    page, I honestly like your technique of blogging. I saved as a favorite it to my bookmark webpage list
    and will be checking back soon. Take a look at my
    website too and let me know how you feel.

  52. Hey! I understand this is kind of off-topic but I had to ask.
    Does managing a well-established blog like yours take a massive amount work?
    I am brand new to running a blog but I do write in my journal every day.

    I’d like to start a blog so I can share my own experience and
    feelings online. Please let me know if you have any kind of ideas or tips for new aspiring blog owners.
    Appreciate it!

  53. Politechnika Częstochowska

    ul. J.H. Dąbrowskiego 69
    42-201 Częstochowa
    NIP: 573-011-14-01
    Informacje

    bip.svgBiuletyn Informacji Publicznej

    Zamówienia Publiczne

    Informacje o cookies

    Deklaracja dostępności

    Inspektor Ochrony Danych

    SARS-CoV-2
    Wydziały

    Wydział Budownictwa

    Wydział Elektryczny

    Wydział Inżynierii Mechanicznej i Informatyki

    Wydział Inżynierii Produkcji i Technologii Materiałów

    Wydział Infrastruktury i Środowiska

    Wydział Zarządzania

    logo ePUAP

    Adres skrytki podawczej Politechniki Częstochowskiej w systemie ePUAP: /PolitechnikaCzestochowska/SkrytkaESP

  54. Excellent post. I was checking continuously this weblog and I am impressed!
    Extremely helpful info specifically the closing phase 🙂 I handle such information much.
    I used to be looking for this particular information for a long time.
    Thanks and best of luck.

  55. Hi there! I know this is kinda off topic however , I’d figured
    I’d ask. Would you be interested in exchanging
    links or maybe guest authoring a blog post or vice-versa?
    My blog goes over a lot of the same topics as yours and I feel
    we could greatly benefit from each other. If you might be interested feel free
    to shoot me an e-mail. I look forward to hearing
    from you! Terrific blog by the way!

  56. With havin so much content and articles do you
    ever run into any issues of plagorism or copyright violation? My
    blog has a lot of exclusive content I’ve either written myself or outsourced but
    it appears a lot of it is popping it up all over
    the internet without my permission. Do you know any
    methods to help protect against content from being ripped off?
    I’d definitely appreciate it.

  57. Hi I am so grateful I found your blog, I really
    found you by error, while I was searching on Askjeeve for
    something else, Anyhow I am here now and would just like to say thanks a lot for a marvelous post and a all round exciting blog (I also love the
    theme/design), I don’t have time to read it all at the minute but I have saved
    it and also included your RSS feeds, so when I have time I will be back to read much more, Please do keep up the fantastic work.

  58. A person essentially assist to make severely posts I might state.
    This is the very first time I frequented your web page
    and thus far? I surprised with the analysis you made to make this particular
    post incredible. Great job!

  59. บอลไหลเข้า gool ยังง่ายกว่า ราคาไหล
    ขึ้นลง เว็บเราอัพเดทราคาไหลให้ทุกท่านทุกนาทีบอลกำลังจะยิงหรือว่าบอลโดนยิงเราก็อัพเดทให้คุณได้รับรู้ทันที ฮาๆ อันดับ 1 ของราคาไหลจะไปไหนไกลที่นี้ ball-vip ราคาไหล ราคาบอล ราคาบอลไหล ราคาบอลวันนี.

  60. Magnificent items from you, man. I have take into account your stuff prior to and you are just extremely
    great. I really like what you have received right here, really like what
    you’re stating and the way in which by which you assert it.
    You’re making it enjoyable and you still take care of to keep it wise.
    I can not wait to learn much more from you.
    That is actually a terrific web site.

  61. Usually I don’t read post on blogs, but I wish to say
    that this write-up very forced me to try and do it! Your writing style has been amazed
    me. Thank you, very great post.

  62. You’re so cool! I do not suppose I have read through something like this before.
    So great to discover another person with original thoughts on this issue.
    Seriously.. thank you for starting this up. This site is one thing that is needed on the
    internet, someone with a little originality!

  63. I’ve been browsing online more than three hours today, yet I never found any interesting article like yours.

    It’s pretty worth enough for me. In my view, if all webmasters and bloggers made good content
    as you did, the internet will be a lot more useful than ever before.

  64. I need to to thank you for this wonderful read!! I absolutely enjoyed every little bit of it.
    I’ve got you bookmarked to check out new things you post…

  65. I’m amazed, I must say. Seldom do I come across a blog that’s equally educative and entertaining, and without a doubt, you’ve hit the nail on the head.
    The issue is an issue that too few folks are speaking intelligently about.
    Now i’m very happy I found this in my search for something relating to this.

  66. Hmm it appears like your website 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 tips and hints for novice blog writers?
    I’d certainly appreciate it.

  67. Hey! I could have sworn I’ve been to this website before but after browsing
    through some of the post I realized it’s new to me. Anyhow, I’m definitely
    delighted I found it and I’ll be bookmarking and checking
    back frequently!

  68. Have you ever considered about adding a little bit more than just your articles?

    I mean, what you say is valuable and everything.
    Nevertheless just imagine if you added some great photos or video clips to give your
    posts more, “pop”! Your content is excellent but with images and video clips,
    this website could certainly be one of the very best in its field.
    Excellent blog!

  69. 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.

  70. Good day I am so delighted I found your blog, I really found
    you by accident, while I was looking on Askjeeve for something else, Anyways I am here
    now and would just like to say kudos for a marvelous post and a all round
    entertaining blog (I also love the theme/design), I don’t have time to go 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 lot more,
    Please do keep up the awesome work.

  71. An intriguing discussion is definitely worth comment.
    There’s no doubt that that you should write more
    about this subject matter, it might not be a taboo matter but usually people do not speak about these topics.
    To the next! All the best!!

  72. Hi, I do believe this is an excellent site. I stumbledupon it 😉 I will return yet again since
    i have bookmarked it. Money and freedom is the greatest way to change,
    may you be rich and continue to guide other people.

  73. Have you ever thought about adding a little bit more
    than just your articles? I mean, what you say is valuable and everything.
    However just imagine if you added some great pictures or videos to give your posts more,
    “pop”! Your content is excellent but with images and videos, this blog could definitely be one of the very
    best in its niche. Amazing blog!

  74. With havin so much content and articles do you ever run into any
    issues of plagorism or copyright infringement?
    My blog has a lot of unique content I’ve either authored myself or outsourced but it appears a lot of it is popping it up all over the web without my authorization. Do you know
    any methods to help reduce content from being stolen?
    I’d genuinely appreciate it.

  75. I am not sure where you’re getting your information, but good topic.
    I needs to spend some time learning much more or understanding more.
    Thanks for wonderful information I was looking
    for this info for my mission.

  76. My coder is trying to persuade 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 WordPress on various websites for about a year
    and am concerned about switching to another platform. I have heard fantastic things about blogengine.net.
    Is there a way I can import all my wordpress posts into it?

    Any help would be greatly appreciated!

  77. I’ve been exploring for a little bit for any high-quality articles or
    weblog posts on this kind of space . Exploring in Yahoo I ultimately stumbled upon this
    site. Reading this info So i’m happy to express that I’ve an incredibly
    excellent uncanny feeling I discovered just what I needed.
    I so much surely will make sure to don?t forget this website and
    give it a glance regularly.

  78. Thanks a lot for sharing this with all people you actually
    recognize what you are talking approximately! Bookmarked.

    Kindly also talk over with my website =). We can have a hyperlink alternate arrangement between us

  79. I am curious to find out what blog system you are working with?
    I’m having some minor security issues with my latest website and I would like to find
    something more safeguarded. Do you have any recommendations?

  80. Do you mind if I quote a couple of your articles as
    long as I provide credit and sources back to your website?
    My blog site is in the very same area of interest as yours and my
    visitors would truly benefit from some of the information you provide
    here. Please let me know if this ok with you. Thank you!

  81. After looking into a handful of the blog posts on your blog, I truly appreciate your way of writing a blog.
    I saved as a favorite it to my bookmark site list and will be
    checking back soon. Please visit my web site as well and
    tell me what you think.

  82. Hey just wanted to give you a quick heads up and let you know a few of the pictures aren’t loading properly.

    I’m not sure why but I think its a linking issue. I’ve tried it in two different browsers and both show the same results.

  83. Good day! Would you mind if I share your blog with my myspace group?
    There’s a lot of people that I think would really enjoy your content.
    Please let me know. Thank you

  84. What’s up colleagues, how is everything, and what you would like to say about this paragraph, in my view its actually remarkable in support of me.

  85. Hi there I am so glad I found your webpage, I really found you by mistake,
    while I was looking on Bing for something else, Anyhow I am here now and would just like
    to say thanks for a fantastic post and a all round interesting
    blog (I also love the theme/design), I don’t have time to
    go through it all at the minute but I have book-marked it and also included your
    RSS feeds, so when I have time I will be back to read a lot
    more, Please do keep up the fantastic work.

  86. Hi there i am kavin, its my first time to commenting anyplace, when i read this article
    i thought i could also make comment due to this
    sensible piece of writing.

  87. I am really impressed with your writing skills as
    well as with the layout on your weblog. Is this
    a paid theme or did you customize it yourself?
    Anyway keep up the excellent quality writing, it is rare to see a great blog like this one these days.

  88. hello!,I really like your writing so so much! share we keep
    up a correspondence extra about your post on AOL? I need an expert
    in this house to resolve my problem. May be that’s you!
    Looking forward to see you.

  89. That is very attention-grabbing, You’re an excessively skilled blogger.
    I have joined your rss feed and look ahead to in search of more of your fantastic post.

    Also, I’ve shared your web site in my social networks

  90. Everything wrote made a lot of sense. But, what about this?
    suppose you typed a catchier title? I mean, I don’t want to tell you how to
    run your website, however what if you added something
    that grabbed a person’s attention? I mean ozenero | Mobile & Web Programming Tutorials is a little boring.
    You could peek at Yahoo’s front page and note how they create article titles to grab viewers to
    open the links. You might add a related video or a picture or two to get readers interested about what you’ve got to say.
    In my opinion, it might make your posts a little
    livelier.

  91. Thanks! I memorialize how you also enriched my encounter at LCS, both in bloodline and a notable reveal on to Gettysburg. Congratulations on your late-model publications, and wishing you attainment on Crossroads.

  92. I’ll immediately seize your rss as I can not in finding your e-mail subscription link or e-newsletter
    service. Do you have any? Please let me know in order that I may subscribe.
    Thanks.

  93. Do you have a spam problem on this website; I also am
    a blogger, and I was wondering your situation;
    many of us have created some nice methods and we are looking to
    exchange methods with others, why not shoot me an e-mail if interested.

  94. I do accept as true with all of the ideas you have offered in your post.

    They are very convincing and can certainly work. Still,
    the posts are very brief for beginners. May you please lengthen them a bit from subsequent time?
    Thanks for the post.

  95. I got this website from my friend who shared with me concerning
    this website and now this time I am browsing this site and reading very
    informative articles or reviews at this place.

  96. Unquestionably believe that which you stated. Your favorite reason appeared to
    be on the net the easiest thing to be aware of. I say to you, I definitely get annoyed while people think about worries that they plainly don’t know about.
    You managed to hit the nail upon the top and also defined out the whole thing without having side effect
    , people could take a signal. Will probably be back to get more.
    Thanks

  97. After I initially left a comment I seem to have clicked on the
    -Notify me when new comments are added- checkbox and now
    every time a comment is added I receive four emails with the
    exact same comment. Perhaps there is a means you are able to remove me from that service?
    Thanks a lot!

  98. I’m extremely impressed together with your writing abilities as neatly as with the format on your weblog.

    Is this a paid subject matter or did you customize it yourself?
    Anyway keep up the nice quality writing, it’s rare to peer a
    great blog like this one these days..

  99. Good day! I know this is kind of off topic but I was wondering if you
    knew where I could locate 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!

  100. Hi there, I discovered your website by means of Google even as searching for a similar topic, your web site got here up, it seems
    great. I’ve bookmarked it in my google bookmarks.

    Hi there, simply became aware of your weblog thru Google, and located that it is truly informative.

    I’m gonna be careful for brussels. I will appreciate should you proceed this in future.
    Numerous folks will probably be benefited from your writing.
    Cheers!

  101. Simply desire to say your article is as astounding.

    The clearness in your post is just spectacular and i could assume you’re an expert on this subject.

    Fine with your permission allow me to grab your feed to keep
    updated with forthcoming post. Thanks a million and please carry
    on the gratifying work.

  102. First of all I want to say terrific 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 head prior to writing. I’ve had a tough time clearing my mind
    in getting my ideas out there. I truly do enjoy writing but it just
    seems like the first 10 to 15 minutes are wasted simply just trying to figure out how to begin. Any ideas or tips?
    Appreciate it!

  103. I am not sure where you are getting your information, but good topic.
    I needs to spend some time learning much more or understanding
    more. Thanks for magnificent info I was looking for this info for my mission.

Leave a Reply

Your email address will not be published. Required fields are marked *