diff --git a/couchbase/example/pom.xml b/couchbase/example/pom.xml
new file mode 100644
index 00000000..f384dc3e
--- /dev/null
+++ b/couchbase/example/pom.xml
@@ -0,0 +1,28 @@
+
+ 4.0.0
+
+ spring-data-couchbase-example
+ Basic sample for Spring Data Couchbase
+
+
+ spring-data-couchbase-examples
+ org.springframework.data.examples
+ 1.0.0.BUILD-SNAPSHOT
+
+
+
+
+
+ org.apache.maven.plugins
+ maven-surefire-plugin
+
+
+ **/*IntegrationTest*
+
+
+
+
+
+
+
diff --git a/couchbase/example/src/main/java/example/springdata/couchbase/CouchbaseConfiguration.java b/couchbase/example/src/main/java/example/springdata/couchbase/CouchbaseConfiguration.java
new file mode 100644
index 00000000..f8433a39
--- /dev/null
+++ b/couchbase/example/src/main/java/example/springdata/couchbase/CouchbaseConfiguration.java
@@ -0,0 +1,35 @@
+package example.springdata.couchbase;
+
+import org.springframework.boot.autoconfigure.SpringBootApplication;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.data.couchbase.config.AbstractCouchbaseConfiguration;
+import org.springframework.data.couchbase.repository.config.EnableCouchbaseRepositories;
+
+import java.util.Collections;
+import java.util.List;
+
+/**
+ * Couchbase Configuration to connect to Couchbase data store
+ *
+ * @author Chandana Kithalagama
+ */
+@SpringBootApplication
+@Configuration
+@EnableCouchbaseRepositories
+public class CouchbaseConfiguration extends AbstractCouchbaseConfiguration {
+
+ @Override
+ protected List getBootstrapHosts() {
+ return Collections.singletonList("192.168.99.100");
+ }
+
+ @Override
+ protected String getBucketName() {
+ return "travel-sample";
+ }
+
+ @Override
+ protected String getBucketPassword() {
+ return "";
+ }
+}
diff --git a/couchbase/example/src/main/java/example/springdata/couchbase/model/Airline.java b/couchbase/example/src/main/java/example/springdata/couchbase/model/Airline.java
new file mode 100644
index 00000000..4a13d9e7
--- /dev/null
+++ b/couchbase/example/src/main/java/example/springdata/couchbase/model/Airline.java
@@ -0,0 +1,40 @@
+package example.springdata.couchbase.model;
+
+import com.couchbase.client.java.repository.annotation.Field;
+import com.couchbase.client.java.repository.annotation.Id;
+import lombok.*;
+import org.springframework.data.couchbase.core.mapping.Document;
+
+/**
+ * A domain object representing an Airline
+ *
+ * @author Chandana Kithalagama
+ */
+@Data
+@AllArgsConstructor
+@NoArgsConstructor
+@Document
+public class Airline {
+
+ @Id
+ private int id;
+
+ @Field
+ private String type;
+
+ @Field
+ private String name;
+
+ @Field("iata")
+ private String iataCode;
+
+ @Field
+ private String icao;
+
+ @Field
+ private String callsign;
+
+ @Field
+ private String country;
+
+}
diff --git a/couchbase/example/src/main/java/example/springdata/couchbase/repository/AirlineRepository.java b/couchbase/example/src/main/java/example/springdata/couchbase/repository/AirlineRepository.java
new file mode 100644
index 00000000..0a5b07e0
--- /dev/null
+++ b/couchbase/example/src/main/java/example/springdata/couchbase/repository/AirlineRepository.java
@@ -0,0 +1,18 @@
+package example.springdata.couchbase.repository;
+
+import example.springdata.couchbase.model.Airline;
+import org.springframework.data.couchbase.core.query.Query;
+import org.springframework.data.repository.CrudRepository;
+
+import java.util.List;
+
+/**
+ * Repository interface to manage {@link Airline} instances.
+ *
+ * @author Chandana Kithalagama
+ */
+public interface AirlineRepository extends CrudRepository{
+
+ @Query("#{#n1ql.selectEntity} WHERE #{#n1ql.filter} AND name = $1")
+ List findAirlineByName(String name);
+}
diff --git a/couchbase/example/src/test/java/example/springdata/couchbase/repository/AirlineRepositoryIntegrationTest.java b/couchbase/example/src/test/java/example/springdata/couchbase/repository/AirlineRepositoryIntegrationTest.java
new file mode 100644
index 00000000..31ae448e
--- /dev/null
+++ b/couchbase/example/src/test/java/example/springdata/couchbase/repository/AirlineRepositoryIntegrationTest.java
@@ -0,0 +1,84 @@
+package example.springdata.couchbase.repository;
+
+import example.springdata.couchbase.CouchbaseConfiguration;
+import example.springdata.couchbase.model.Airline;
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.boot.test.context.SpringBootTest;
+import org.springframework.test.context.junit4.SpringRunner;
+
+import java.util.Arrays;
+import java.util.List;
+
+import static org.assertj.core.api.Assertions.assertThat;
+
+/**
+ * Unit tests for basic CRUD operations
+ *
+ * @author Chandana Kithalagama
+ */
+@RunWith(SpringRunner.class)
+@SpringBootTest(classes = CouchbaseConfiguration.class)
+public class AirlineRepositoryIntegrationTest {
+
+ @Autowired
+ AirlineRepository airlineRepository;
+ Airline a, b, c;
+ List airlineList;
+
+ @Before
+ public void setup() {
+ a = new Airline(20000,"airline", "CK 1", "LK", "CMB", "CLK","Sri Lanka");
+ b = new Airline(20001,"airline", "CK 2", "LK", "CMB", "CLK","Sri Lanka");
+ c = new Airline(20002,"airline", "CK 3", "LK", "CMB", "CLK","Sri Lanka");
+
+ airlineList = Arrays.asList(a, b, b);
+ }
+
+ @Test
+ public void testSaveAirline() {
+ Iterable itr = airlineRepository.save(Arrays.asList(a));
+ assertThat(itr).isNotNull();
+ Airline airline = airlineRepository.findOne(a.getId());
+ assertThat(airline).isNotNull();
+ assertThat(airline).isEqualTo(a);
+ assertThat(airline).isNotEqualTo(b);
+ airlineRepository.delete(a.getId());
+ }
+
+ @Test
+ public void testGetAllAirlines() {
+ Iterable itr = airlineRepository.save(airlineList);
+ assertThat(itr).isNotNull();
+ Iterable itr2 = airlineRepository.findAll(Arrays.asList(a.getId(), b.getId(), c.getId()));
+ assertThat(itr2).isNotNull();
+ airlineRepository.delete(airlineList);
+ }
+
+ @Test
+ public void testDeleteAirlines() {
+ Iterable itr = airlineRepository.save(Arrays.asList(a));
+ assertThat(itr).isNotNull();
+ airlineRepository.delete(a.getId());
+ Airline airline = airlineRepository.findOne(a.getId());
+ assertThat(airline).isNull();
+ }
+
+ @Test
+ public void testGetByName() {
+ Iterable itr = airlineRepository.save(Arrays.asList(a));
+ assertThat(itr).isNotNull();
+ List airlines = airlineRepository.findAirlineByName(a.getName());
+ assertThat(airlines.size()).isGreaterThanOrEqualTo(1);
+ assertThat(airlines.get(0)).isEqualTo(a);
+ airlineRepository.delete(a.getId());
+ }
+
+ @After
+ public void tearDown() {
+ airlineRepository.delete(airlineList);
+ }
+}
diff --git a/couchbase/pom.xml b/couchbase/pom.xml
new file mode 100644
index 00000000..9627c0f4
--- /dev/null
+++ b/couchbase/pom.xml
@@ -0,0 +1,30 @@
+
+ 4.0.0
+
+ spring-data-couchbase-examples
+ pom
+
+
+ spring-data-examples
+ org.springframework.data.examples
+ 1.0.0.BUILD-SNAPSHOT
+
+
+ Spring Data Couchbase - Examples
+ Sample projects for Spring Data Couchbase
+ https://github.com/spring-projects/spring-data-couchbase
+
+
+ example
+
+
+
+
+
+ org.springframework.boot
+ spring-boot-starter-data-couchbase
+
+
+
+
diff --git a/pom.xml b/pom.xml
index eeed5318..24fc50f1 100644
--- a/pom.xml
+++ b/pom.xml
@@ -29,6 +29,7 @@
redis
solr
web
+ couchbase