diff --git a/src/app/app-routing.module.ts b/src/app/app-routing.module.ts
index b95f008cfeea78df5bde88b6f340fb5092c44168..29b4acef3f77d66270c726b14a2397d6ca9f82e5 100644
--- a/src/app/app-routing.module.ts
+++ b/src/app/app-routing.module.ts
@@ -11,7 +11,7 @@ export const routes: Routes = [
     path: 'pages',
     loadChildren: () => import('./pages/pages.module')
       .then(m => m.PagesModule),
-    canActivate: [AuthGuard]
+    
   },
   {
     path: 'auth',
diff --git a/src/app/app.module.ts b/src/app/app.module.ts
index 06bba52ded6bcfe5ff8ecaad395c8310df4413b7..3f50ebf6dcc789a081bf8913ad37224d37065c10 100644
--- a/src/app/app.module.ts
+++ b/src/app/app.module.ts
@@ -74,7 +74,7 @@ export function createTranslateLoader(http: HttpClient) {
           view: ['external-app', 'maps', 'home', 'about', 'charts', 'lorem-ipsum']
         },
         CITIZEN: {
-          view: ['home', 'about', 'ui-features']
+          view: ['home', 'about', 'ui-features','catalogues']
         }
       },
     })
diff --git a/src/app/auth/services/token.interceptor.ts b/src/app/auth/services/token.interceptor.ts
index e07b48d45bbac95eada7af53ce352c630e0ed4ed..88712e4d12f3aff403c3db5c5348bc9ba9a64ac5 100644
--- a/src/app/auth/services/token.interceptor.ts
+++ b/src/app/auth/services/token.interceptor.ts
@@ -7,12 +7,13 @@ import {
 } from '@angular/common/http';
 import { Observable } from 'rxjs';
 import { NbAuthOAuth2JWTToken, NbAuthOAuth2Token, NbAuthService } from '@nebular/auth';
+import { ConfigService } from '@ngx-config/core';
 
 @Injectable()
 export class TokenInterceptor implements HttpInterceptor {
 
   token;
-  constructor(public auth: NbAuthService) { }
+  constructor(public auth: NbAuthService, public config:ConfigService) {}
 
   intercept(req: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {
     if (req.url.indexOf('/assets/') > -1) {
@@ -23,6 +24,10 @@ export class TokenInterceptor implements HttpInterceptor {
       return next.handle(req);
     }
 
+    if (req.url.indexOf(this.config.getSettings('idra_base_url')) > -1) {
+      return next.handle(req);
+    }
+
 
     this.auth.getToken().subscribe((x: NbAuthOAuth2JWTToken) => this.token = x);
     let newHeaders = req.headers;
diff --git a/src/app/pages/data-catalogue/data-catalogue-routing.module.ts b/src/app/pages/data-catalogue/data-catalogue-routing.module.ts
new file mode 100644
index 0000000000000000000000000000000000000000..cd15f655b342fbb545622e90aef5cf3be0adb772
--- /dev/null
+++ b/src/app/pages/data-catalogue/data-catalogue-routing.module.ts
@@ -0,0 +1,24 @@
+import { NgModule } from '@angular/core';
+import { RouterModule, Routes } from '@angular/router';
+import { DataCatalogueComponent } from './data-catalogue.component';
+import { DatasetComponent } from './dataset/dataset.component';
+import { SearchComponent } from './search/search.component';
+
+const routes: Routes = [{
+  path: '',
+  redirectTo:'',
+  component: DataCatalogueComponent,
+  children: [ {
+    path: 'search',
+    component: SearchComponent,
+  }, {
+    path: 'datasets/:id',
+    component: DatasetComponent,
+  }],
+}];
+
+@NgModule({
+  imports: [RouterModule.forChild(routes)],
+  exports: [RouterModule]
+})
+export class DataCatalogueRoutingModule { }
diff --git a/src/app/pages/data-catalogue/data-catalogue.component.ts b/src/app/pages/data-catalogue/data-catalogue.component.ts
new file mode 100644
index 0000000000000000000000000000000000000000..2a41c6fb3f39020f61ce6b32969d2e4f376f720a
--- /dev/null
+++ b/src/app/pages/data-catalogue/data-catalogue.component.ts
@@ -0,0 +1,16 @@
+import { Component, OnInit } from '@angular/core';
+
+@Component({
+  selector: 'ngx-data-catalogue',
+  template: `
+    <router-outlet></router-outlet>
+  `,
+})
+export class DataCatalogueComponent implements OnInit {
+
+  constructor() { }
+
+  ngOnInit(): void {
+  }
+
+}
diff --git a/src/app/pages/data-catalogue/data-catalogue.module.ts b/src/app/pages/data-catalogue/data-catalogue.module.ts
new file mode 100644
index 0000000000000000000000000000000000000000..97283a3c0ee218f7e25dadddf9ddda3ddae6913b
--- /dev/null
+++ b/src/app/pages/data-catalogue/data-catalogue.module.ts
@@ -0,0 +1,17 @@
+import { NgModule } from '@angular/core';
+import { CommonModule } from '@angular/common';
+
+import { DataCatalogueRoutingModule } from './data-catalogue-routing.module';
+import { SearchComponent } from './search/search.component';
+import { DatasetComponent } from './dataset/dataset.component';
+import { DataCatalogueComponent } from './data-catalogue.component';
+
+
+@NgModule({
+  declarations: [DataCatalogueComponent, SearchComponent, DatasetComponent],
+  imports: [
+    CommonModule,
+    DataCatalogueRoutingModule
+  ]
+})
+export class DataCatalogueModule { }
diff --git a/src/app/pages/data-catalogue/dataset/dataset.component.html b/src/app/pages/data-catalogue/dataset/dataset.component.html
new file mode 100644
index 0000000000000000000000000000000000000000..c2bf737f153195cc8e20261bfec69f4af7c79d59
--- /dev/null
+++ b/src/app/pages/data-catalogue/dataset/dataset.component.html
@@ -0,0 +1 @@
+<p>dataset works!</p>
diff --git a/src/app/pages/data-catalogue/dataset/dataset.component.scss b/src/app/pages/data-catalogue/dataset/dataset.component.scss
new file mode 100644
index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
diff --git a/src/app/pages/data-catalogue/dataset/dataset.component.spec.ts b/src/app/pages/data-catalogue/dataset/dataset.component.spec.ts
new file mode 100644
index 0000000000000000000000000000000000000000..13950bc3f906626bebb24e173ab9d29ee5c50866
--- /dev/null
+++ b/src/app/pages/data-catalogue/dataset/dataset.component.spec.ts
@@ -0,0 +1,25 @@
+import { ComponentFixture, TestBed } from '@angular/core/testing';
+
+import { DatasetComponent } from './dataset.component';
+
+describe('DatasetComponent', () => {
+  let component: DatasetComponent;
+  let fixture: ComponentFixture<DatasetComponent>;
+
+  beforeEach(async () => {
+    await TestBed.configureTestingModule({
+      declarations: [ DatasetComponent ]
+    })
+    .compileComponents();
+  });
+
+  beforeEach(() => {
+    fixture = TestBed.createComponent(DatasetComponent);
+    component = fixture.componentInstance;
+    fixture.detectChanges();
+  });
+
+  it('should create', () => {
+    expect(component).toBeTruthy();
+  });
+});
diff --git a/src/app/pages/data-catalogue/dataset/dataset.component.ts b/src/app/pages/data-catalogue/dataset/dataset.component.ts
new file mode 100644
index 0000000000000000000000000000000000000000..6eb42df092a8d8ea072c2f23fbaa82e149bd8778
--- /dev/null
+++ b/src/app/pages/data-catalogue/dataset/dataset.component.ts
@@ -0,0 +1,15 @@
+import { Component, OnInit } from '@angular/core';
+
+@Component({
+  selector: 'ngx-dataset',
+  templateUrl: './dataset.component.html',
+  styleUrls: ['./dataset.component.scss']
+})
+export class DatasetComponent implements OnInit {
+
+  constructor() { }
+
+  ngOnInit(): void {
+  }
+
+}
diff --git a/src/app/pages/data-catalogue/model/datalet.ts b/src/app/pages/data-catalogue/model/datalet.ts
new file mode 100644
index 0000000000000000000000000000000000000000..0653b7e257ead9822876e42567a45ca59d657851
--- /dev/null
+++ b/src/app/pages/data-catalogue/model/datalet.ts
@@ -0,0 +1,14 @@
+export class Datalet {
+  id?: string;
+  nodeID?: string;
+  datasetID?: string;
+  distributionID?: string;
+  datalet_html?: string;
+  title?: string;
+  customTitle?: boolean;
+  registerDate?: string;
+  lastSeenDate?: string;
+  views?: number;
+
+  constructor(){}
+}
\ No newline at end of file
diff --git a/src/app/pages/data-catalogue/model/dcatapformat.enum.ts b/src/app/pages/data-catalogue/model/dcatapformat.enum.ts
new file mode 100644
index 0000000000000000000000000000000000000000..39dfb93eb951d3263129956a26fec5234e848de7
--- /dev/null
+++ b/src/app/pages/data-catalogue/model/dcatapformat.enum.ts
@@ -0,0 +1,9 @@
+export enum DCATAPFormat {
+  IDRA = "IDRA",
+  TURTLE = "TURTLE",
+  NTRIPLES = "NTRIPLES",
+  RDFXML = "RDF/XML",
+  N3 = "N3",
+  RDFJSON = "RDF/JSON",
+  JSONLD = "JSON-LD",
+}
\ No newline at end of file
diff --git a/src/app/pages/data-catalogue/model/dcatdataset.ts b/src/app/pages/data-catalogue/model/dcatdataset.ts
new file mode 100644
index 0000000000000000000000000000000000000000..716770791ca5bdf98263147a0b5cd6250561ffcc
--- /dev/null
+++ b/src/app/pages/data-catalogue/model/dcatdataset.ts
@@ -0,0 +1,45 @@
+import { DCATDistribution } from "./dcatdistribution";
+import { DCTLocation } from "./dctlocation";
+import { DCTPeriodOfTime } from "./dctperiod-of-time";
+import { DCTStandard } from "./dctstandard";
+import { FOAFAgent } from "./foafagent";
+import { SKOSConcept } from "./skosconcept";
+import { VCardOrganization } from "./vcard-organization";
+
+export class DCATDataset {
+  id: string;
+  nodeID: string;
+  title: string;
+  description: string;
+  distributions?: DCATDistribution[];
+  theme?: SKOSConcept[];
+  publisher?: FOAFAgent;
+  contactPoint?: VCardOrganization[];
+  keywords?: string[];
+  accessRights?: string;
+  conformsTo?: DCTStandard[];
+  documentation?: string[];
+  frequency?: string;
+  hasVersion?: string[];
+  isVersionOf?: string[];
+  landingPage?: string;
+  language?: string[];
+  provenance?: string[];
+  releaseDate?: string;
+  updateDate?: string;
+  identifier: string;
+  otherIdentifier?: string[];
+  sample?: string[];
+  source?: string[];
+  spatialCoverage?: DCTLocation;
+  temporalCoverage?: DCTPeriodOfTime;
+  type?: string;
+  version?: string;
+  versionNodes?: string[];
+  rightsHolder?: FOAFAgent;
+  creator?: FOAFAgent;
+  subject?: SKOSConcept[];
+  legacyIdentifier?: string;
+
+  constructor(){}
+}
\ No newline at end of file
diff --git a/src/app/pages/data-catalogue/model/dcatdistribution.ts b/src/app/pages/data-catalogue/model/dcatdistribution.ts
new file mode 100644
index 0000000000000000000000000000000000000000..faaa0aff125306444752b8ecdedac40122d2bec6
--- /dev/null
+++ b/src/app/pages/data-catalogue/model/dcatdistribution.ts
@@ -0,0 +1,29 @@
+import { DCTLicenseDocument } from "./dctlicense-document";
+import { DCTStandard } from "./dctstandard";
+import { SKOSConcept } from "./skosconcept";
+import { SPDXChecksum } from "./spdxchecksum";
+
+export class DCATDistribution {
+  id: string;
+  storedRDF?: boolean;
+  nodeID: string;
+  accessURL: string;
+  description?: string;
+  format?: string;
+  license?: DCTLicenseDocument;
+  byteSize?: string;
+  checksum?: SPDXChecksum;
+  documentation?: string[];
+  downloadURL?: string;
+  language?: string[];
+  linkedSchemas?: DCTStandard[];
+  mediaType?: string;
+  releaseDate?: string;
+  updateDate?: string;
+  rights?: string;
+  status?: SKOSConcept;
+  title?: string;
+  hasDatalets?: boolean;
+
+  constructor(){}
+}
\ No newline at end of file
diff --git a/src/app/pages/data-catalogue/model/dctlicense-document.ts b/src/app/pages/data-catalogue/model/dctlicense-document.ts
new file mode 100644
index 0000000000000000000000000000000000000000..611397ea3de275201937e9c4326b48a4a70c941d
--- /dev/null
+++ b/src/app/pages/data-catalogue/model/dctlicense-document.ts
@@ -0,0 +1,10 @@
+export class DCTLicenseDocument {
+  id?: string;
+  nodeID?: string;
+  uri?: string;
+  name?: string;
+  type?: string;
+  versionInfo?: string;
+
+  constructor(){}
+}
\ No newline at end of file
diff --git a/src/app/pages/data-catalogue/model/dctlocation.ts b/src/app/pages/data-catalogue/model/dctlocation.ts
new file mode 100644
index 0000000000000000000000000000000000000000..17ab03930eb4428b92dd4c864672c03511c2db07
--- /dev/null
+++ b/src/app/pages/data-catalogue/model/dctlocation.ts
@@ -0,0 +1,10 @@
+export class DCTLocation {
+  id?: string;
+  nodeID?: string;
+  uri?: string;
+  geographicalIdentifier?: string;
+  geographicalName?: string;
+  geometry?: string;
+
+  constructor(){}
+}
\ No newline at end of file
diff --git a/src/app/pages/data-catalogue/model/dctperiod-of-time.ts b/src/app/pages/data-catalogue/model/dctperiod-of-time.ts
new file mode 100644
index 0000000000000000000000000000000000000000..cb4176f8b5e7295ac2136bb33147248d0d2ba97e
--- /dev/null
+++ b/src/app/pages/data-catalogue/model/dctperiod-of-time.ts
@@ -0,0 +1,9 @@
+export class DCTPeriodOfTime {
+  id?: string;
+  nodeID?: string;
+  uri?: string;
+  startDate?: string;
+  endDate?: string;
+
+  constructor(){}
+}
\ No newline at end of file
diff --git a/src/app/pages/data-catalogue/model/dctstandard.ts b/src/app/pages/data-catalogue/model/dctstandard.ts
new file mode 100644
index 0000000000000000000000000000000000000000..6f2a46aeb6bdc9b582c211cde5ea92d1d21c590e
--- /dev/null
+++ b/src/app/pages/data-catalogue/model/dctstandard.ts
@@ -0,0 +1,10 @@
+export class DCTStandard {
+    id?: string;
+    nodeID?: string;
+    identifier?: string;
+    title?: string;
+    description?: string;
+    referenceDocumentation?: string[];
+
+    constructor(){}
+}
\ No newline at end of file
diff --git a/src/app/pages/data-catalogue/model/error-response.ts b/src/app/pages/data-catalogue/model/error-response.ts
new file mode 100644
index 0000000000000000000000000000000000000000..d771f4f5b1a8cddf3b096ee8aebb41faf358eb1a
--- /dev/null
+++ b/src/app/pages/data-catalogue/model/error-response.ts
@@ -0,0 +1,8 @@
+export class ErrorResponse {
+    statusCode: string;
+    technicalMessage: string;
+    errorCode: string;
+    userMessage?: string;
+
+    constructor() { }
+}
\ No newline at end of file
diff --git a/src/app/pages/data-catalogue/model/euro-voc-language.ts b/src/app/pages/data-catalogue/model/euro-voc-language.ts
new file mode 100644
index 0000000000000000000000000000000000000000..013df9aebd08b46817987194b47f6a97c765f57f
--- /dev/null
+++ b/src/app/pages/data-catalogue/model/euro-voc-language.ts
@@ -0,0 +1,32 @@
+export class EuroVocLanguage {
+  languageName?:
+    | "BG"
+    | "ES"
+    | "CS"
+    | "DA"
+    | "DE"
+    | "ET"
+    | "EL"
+    | "EN"
+    | "FR"
+    | "GA"
+    | "HR"
+    | "IT"
+    | "LV"
+    | "LT"
+    | "HU"
+    | "MT"
+    | "NL"
+    | "PL"
+    | "PT"
+    | "RO"
+    | "SK"
+    | "SL"
+    | "FI"
+    | "SV"
+    | "MK"
+    | "SQ"
+    | "SR";
+
+    constructor(){}
+}
\ No newline at end of file
diff --git a/src/app/pages/data-catalogue/model/foafagent.ts b/src/app/pages/data-catalogue/model/foafagent.ts
new file mode 100644
index 0000000000000000000000000000000000000000..04301d0a07097051cc4e82853a12e955a2666781
--- /dev/null
+++ b/src/app/pages/data-catalogue/model/foafagent.ts
@@ -0,0 +1,13 @@
+export class FOAFAgent {
+  id?: string;
+  name: string;
+  resourceUri?: string;
+  propertyUri?: string;
+  mbox?: string;
+  homepage?: string;
+  type?: string;
+  identifier?: string;
+  nodeID: string;
+
+  constructor(){}
+}
\ No newline at end of file
diff --git a/src/app/pages/data-catalogue/model/odmscatalogue-image.ts b/src/app/pages/data-catalogue/model/odmscatalogue-image.ts
new file mode 100644
index 0000000000000000000000000000000000000000..923c652f8e93c4ee5d875ce3a3d7b3eef333fc10
--- /dev/null
+++ b/src/app/pages/data-catalogue/model/odmscatalogue-image.ts
@@ -0,0 +1,6 @@
+export class ODMSCatalogueImage {
+  imageId?: number;
+  imageData?: string;
+
+  constructor(){}
+}
\ No newline at end of file
diff --git a/src/app/pages/data-catalogue/model/odmscatalogue-info.ts b/src/app/pages/data-catalogue/model/odmscatalogue-info.ts
new file mode 100644
index 0000000000000000000000000000000000000000..bffc5c3300c01efd2cd00940b5026d20cfc20cf0
--- /dev/null
+++ b/src/app/pages/data-catalogue/model/odmscatalogue-info.ts
@@ -0,0 +1,7 @@
+export class ODMSCatalogueInfo {
+    id?: number;
+    name?: string;
+    federationLevel?: any;
+
+    constructor(){}
+}
\ No newline at end of file
diff --git a/src/app/pages/data-catalogue/model/odmscatalogue-response.ts b/src/app/pages/data-catalogue/model/odmscatalogue-response.ts
new file mode 100644
index 0000000000000000000000000000000000000000..579d16dcfe4bfcd52b81f1f9872aef9dfac99485
--- /dev/null
+++ b/src/app/pages/data-catalogue/model/odmscatalogue-response.ts
@@ -0,0 +1,8 @@
+import { ODMSCatalogue } from "./odmscatalogue";
+
+export class ODMSCatalogueResponse {
+    count:number;
+    catalogues:Array<ODMSCatalogue>=[];
+
+    constructor(){}
+}
diff --git a/src/app/pages/data-catalogue/model/odmscatalogue-type.enum.ts b/src/app/pages/data-catalogue/model/odmscatalogue-type.enum.ts
new file mode 100644
index 0000000000000000000000000000000000000000..2a8296abf86f5b18dc7c505b9295f75839243b3d
--- /dev/null
+++ b/src/app/pages/data-catalogue/model/odmscatalogue-type.enum.ts
@@ -0,0 +1,10 @@
+export enum ODMSCatalogueType {
+  CKAN = "CKAN",
+  SOCRATA = "SOCRATA",
+  NATIVE = "NATIVE",
+  WEB = "WEB",
+  DCATDUMP = "DCATDUMP",
+  DKAN = "DKAN",
+  ORION = "ORION",
+  SPARQL = "SPARQL",
+}
diff --git a/src/app/pages/data-catalogue/model/odmscatalogue.ts b/src/app/pages/data-catalogue/model/odmscatalogue.ts
new file mode 100644
index 0000000000000000000000000000000000000000..1b92a5e1842c7db41fdfedacb073bc58ddd2fc36
--- /dev/null
+++ b/src/app/pages/data-catalogue/model/odmscatalogue.ts
@@ -0,0 +1,25 @@
+import { ODMSCatalogueImage } from "./odmscatalogue-image";
+import { ODMSCatalogueType } from "./odmscatalogue-type.enum";
+
+
+export class ODMSCatalogue {
+    id?: string;
+    name: string;
+    host: string;
+    nodeType: ODMSCatalogueType;
+    publisherName?: string;
+    publisherUrl?: string;
+    publisherEmail?: string;
+    datasetCount?: number;
+    registerDate?: string;
+    lastUpdateDate?: string;
+    description?: string;
+    image?: ODMSCatalogueImage;
+    location?: string;
+    locationDescription?: string;
+    isActive?: boolean;
+    country?: string;
+    category?: string;
+
+    constructor() { }
+}
\ No newline at end of file
diff --git a/src/app/pages/data-catalogue/model/search-date-filter.ts b/src/app/pages/data-catalogue/model/search-date-filter.ts
new file mode 100644
index 0000000000000000000000000000000000000000..46770fe9877c5a750dd3f27028f1f0e7ceaa3596
--- /dev/null
+++ b/src/app/pages/data-catalogue/model/search-date-filter.ts
@@ -0,0 +1,6 @@
+export class SearchDateFilter {
+  start: string;
+  end: string;
+
+  constructor(){}
+}
\ No newline at end of file
diff --git a/src/app/pages/data-catalogue/model/search-euro-voc-filter.ts b/src/app/pages/data-catalogue/model/search-euro-voc-filter.ts
new file mode 100644
index 0000000000000000000000000000000000000000..d40295191832412c0bdc802928fd4652433bf45f
--- /dev/null
+++ b/src/app/pages/data-catalogue/model/search-euro-voc-filter.ts
@@ -0,0 +1,9 @@
+import { EuroVocLanguage } from "./euro-voc-language";
+
+export class SearchEuroVocFilter {
+    euroVoc?: boolean=false;
+    sourceLanguage?: EuroVocLanguage;
+    targetLanguages?: EuroVocLanguage[];
+
+    constructor() { }
+}
diff --git a/src/app/pages/data-catalogue/model/search-facet.ts b/src/app/pages/data-catalogue/model/search-facet.ts
new file mode 100644
index 0000000000000000000000000000000000000000..4fdf351624046f7caafd472a1e6e7738a1a1df27
--- /dev/null
+++ b/src/app/pages/data-catalogue/model/search-facet.ts
@@ -0,0 +1,7 @@
+export class SearchFacet {
+  facet?: string;
+  keyword?: string;
+  search_value?: string;
+
+  constructor(){}
+}
\ No newline at end of file
diff --git a/src/app/pages/data-catalogue/model/search-facets-list.ts b/src/app/pages/data-catalogue/model/search-facets-list.ts
new file mode 100644
index 0000000000000000000000000000000000000000..78ad7b486cd74684adac75bba7f8655bc6d8b9ba
--- /dev/null
+++ b/src/app/pages/data-catalogue/model/search-facets-list.ts
@@ -0,0 +1,9 @@
+import { SearchFacet } from "./search-facet";
+
+export class SearchFacetsList {
+  displayName?: string;
+  search_parameter?: string;
+  values?: SearchFacet[];
+
+  constructor(){}
+}
\ No newline at end of file
diff --git a/src/app/pages/data-catalogue/model/search-filter.ts b/src/app/pages/data-catalogue/model/search-filter.ts
new file mode 100644
index 0000000000000000000000000000000000000000..c370c764f133a5787c6fa8f9dcc7e55cd721ac6a
--- /dev/null
+++ b/src/app/pages/data-catalogue/model/search-filter.ts
@@ -0,0 +1,6 @@
+export class SearchFilter {
+    field: string='ALL';
+    value: string="";
+
+    constructor(){}
+}
\ No newline at end of file
diff --git a/src/app/pages/data-catalogue/model/search-request.ts b/src/app/pages/data-catalogue/model/search-request.ts
new file mode 100644
index 0000000000000000000000000000000000000000..96cba928b36b6c937b0314e14866bd3c2624bb49
--- /dev/null
+++ b/src/app/pages/data-catalogue/model/search-request.ts
@@ -0,0 +1,18 @@
+import { SearchDateFilter } from "./search-date-filter";
+import { SearchEuroVocFilter } from "./search-euro-voc-filter";
+import { SearchFilter } from "./search-filter";
+import { SortOption } from "./sort-option";
+
+export class SearchRequest {
+  filters: Array<SearchFilter>=[new SearchFilter()];
+  releaseDate?: SearchDateFilter;
+  updateDate?: SearchDateFilter;
+  live: boolean = false;
+  euroVocFilter: SearchEuroVocFilter=new SearchEuroVocFilter();
+  sort: SortOption=new SortOption();
+  rows: string='10';
+  start: string='0';
+  nodes?: number[]=[];
+
+  constructor(){}
+}
\ No newline at end of file
diff --git a/src/app/pages/data-catalogue/model/search-result.ts b/src/app/pages/data-catalogue/model/search-result.ts
new file mode 100644
index 0000000000000000000000000000000000000000..65b9b6baaf738f5a3eae3ebea5b0b204728a4541
--- /dev/null
+++ b/src/app/pages/data-catalogue/model/search-result.ts
@@ -0,0 +1,10 @@
+import { DCATDataset } from "./dcatdataset";
+import { SearchFacetsList } from "./search-facets-list";
+
+export class SearchResult {
+    count?: number;
+    results?: DCATDataset[];
+    facets?: SearchFacetsList[];
+
+    constructor(){}
+}
\ No newline at end of file
diff --git a/src/app/pages/data-catalogue/model/skosconcept.ts b/src/app/pages/data-catalogue/model/skosconcept.ts
new file mode 100644
index 0000000000000000000000000000000000000000..5304b034b14d2820b53eeaaa20053b923c87ab8e
--- /dev/null
+++ b/src/app/pages/data-catalogue/model/skosconcept.ts
@@ -0,0 +1,11 @@
+import { SKOSPrefLabel } from "./skospref-label";
+
+export class SKOSConcept {
+    id?: string;
+    nodeID?: string;
+    resourceUri?: string;
+    propertyUri?: string;
+    prefLabel?: SKOSPrefLabel[];
+
+    constructor(){}
+}
\ No newline at end of file
diff --git a/src/app/pages/data-catalogue/model/skospref-label.ts b/src/app/pages/data-catalogue/model/skospref-label.ts
new file mode 100644
index 0000000000000000000000000000000000000000..859f70268924e5eac4ff933f94bbff3ce3955e3d
--- /dev/null
+++ b/src/app/pages/data-catalogue/model/skospref-label.ts
@@ -0,0 +1,8 @@
+export class SKOSPrefLabel {
+  id?: string;
+  nodeID?: string;
+  language?: string;
+  value?: string;
+
+  constructor(){}
+}
\ No newline at end of file
diff --git a/src/app/pages/data-catalogue/model/sort-mode.enum.ts b/src/app/pages/data-catalogue/model/sort-mode.enum.ts
new file mode 100644
index 0000000000000000000000000000000000000000..c6dac86c87a14f912dad93ebdf28969e0f60bc25
--- /dev/null
+++ b/src/app/pages/data-catalogue/model/sort-mode.enum.ts
@@ -0,0 +1,4 @@
+export enum SortMode {
+    Asc = "asc",
+    Desc = "desc",
+}
\ No newline at end of file
diff --git a/src/app/pages/data-catalogue/model/sort-option.ts b/src/app/pages/data-catalogue/model/sort-option.ts
new file mode 100644
index 0000000000000000000000000000000000000000..bc02f38ac4b867462cbd51d81d8e10450656b59a
--- /dev/null
+++ b/src/app/pages/data-catalogue/model/sort-option.ts
@@ -0,0 +1,8 @@
+import { SortMode } from "./sort-mode.enum";
+
+export class SortOption {
+    field?: string = 'id';
+    mode?: SortMode = SortMode.Asc;
+
+    constructor(){}
+}
\ No newline at end of file
diff --git a/src/app/pages/data-catalogue/model/spdxchecksum.ts b/src/app/pages/data-catalogue/model/spdxchecksum.ts
new file mode 100644
index 0000000000000000000000000000000000000000..fc46e0410095936021e2c371e273c96319b731d3
--- /dev/null
+++ b/src/app/pages/data-catalogue/model/spdxchecksum.ts
@@ -0,0 +1,9 @@
+export class SPDXChecksum {
+  id?: string;
+  nodeID?: string;
+  uri?: string;
+  algorithm?: string;
+  checksumValue?: string;
+
+  constructor(){}
+}
\ No newline at end of file
diff --git a/src/app/pages/data-catalogue/model/vcard-organization.ts b/src/app/pages/data-catalogue/model/vcard-organization.ts
new file mode 100644
index 0000000000000000000000000000000000000000..6b4f163508c342f8f0c9c09402fce58c31af4af8
--- /dev/null
+++ b/src/app/pages/data-catalogue/model/vcard-organization.ts
@@ -0,0 +1,12 @@
+export class VCardOrganization {
+    id?: string;
+    resourceUri?: string;
+    propertyUri?: string;
+    fn: string;
+    nodeID: string;
+    hasEmail?: string;
+    hasTelephoneValue?: string;
+    hasTelephoneType?: string;
+
+    constructor(){}
+}
\ No newline at end of file
diff --git a/src/app/pages/data-catalogue/search/search.component.html b/src/app/pages/data-catalogue/search/search.component.html
new file mode 100644
index 0000000000000000000000000000000000000000..33d92602f359bca6e6502241bed995603eb76429
--- /dev/null
+++ b/src/app/pages/data-catalogue/search/search.component.html
@@ -0,0 +1,3 @@
+<p>search works!</p>
+
+<p>{{searchResponse.count}}</p>
diff --git a/src/app/pages/data-catalogue/search/search.component.scss b/src/app/pages/data-catalogue/search/search.component.scss
new file mode 100644
index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
diff --git a/src/app/pages/data-catalogue/search/search.component.spec.ts b/src/app/pages/data-catalogue/search/search.component.spec.ts
new file mode 100644
index 0000000000000000000000000000000000000000..918ce70713eb80531d0a415880fe94ec265bee9c
--- /dev/null
+++ b/src/app/pages/data-catalogue/search/search.component.spec.ts
@@ -0,0 +1,25 @@
+import { ComponentFixture, TestBed } from '@angular/core/testing';
+
+import { SearchComponent } from './search.component';
+
+describe('SearchComponent', () => {
+  let component: SearchComponent;
+  let fixture: ComponentFixture<SearchComponent>;
+
+  beforeEach(async () => {
+    await TestBed.configureTestingModule({
+      declarations: [ SearchComponent ]
+    })
+    .compileComponents();
+  });
+
+  beforeEach(() => {
+    fixture = TestBed.createComponent(SearchComponent);
+    component = fixture.componentInstance;
+    fixture.detectChanges();
+  });
+
+  it('should create', () => {
+    expect(component).toBeTruthy();
+  });
+});
diff --git a/src/app/pages/data-catalogue/search/search.component.ts b/src/app/pages/data-catalogue/search/search.component.ts
new file mode 100644
index 0000000000000000000000000000000000000000..c9353c53b9e6f2e6cad0696b5277ff1879a9ba6f
--- /dev/null
+++ b/src/app/pages/data-catalogue/search/search.component.ts
@@ -0,0 +1,26 @@
+import { Component, OnInit } from '@angular/core';
+import { SearchRequest } from '../model/search-request';
+import { SearchResult } from '../model/search-result';
+import { RestAPIService } from '../services/rest-api.service';
+
+@Component({
+  selector: 'ngx-search',
+  templateUrl: './search.component.html',
+  styleUrls: ['./search.component.scss']
+})
+export class SearchComponent implements OnInit {
+
+
+  searchResponse:SearchResult=new SearchResult();
+  searchRequest:SearchRequest=new SearchRequest();
+
+  constructor(private restApi:RestAPIService) { }
+
+  ngOnInit(): void {
+    this.restApi.getCataloguesInfo().subscribe(infos =>{
+      this.searchRequest.nodes = infos.map(x=>x.id)
+      this.restApi.searchDatasets(this.searchRequest).subscribe(res=>this.searchResponse=res);
+    })
+  }
+
+}
diff --git a/src/app/pages/data-catalogue/services/rest-api.service.spec.ts b/src/app/pages/data-catalogue/services/rest-api.service.spec.ts
new file mode 100644
index 0000000000000000000000000000000000000000..f0977dbec712c0c3c60d924871c334bd7744069e
--- /dev/null
+++ b/src/app/pages/data-catalogue/services/rest-api.service.spec.ts
@@ -0,0 +1,16 @@
+import { TestBed } from '@angular/core/testing';
+
+import { RestAPIService } from './rest-api.service';
+
+describe('RestAPIService', () => {
+  let service: RestAPIService;
+
+  beforeEach(() => {
+    TestBed.configureTestingModule({});
+    service = TestBed.inject(RestAPIService);
+  });
+
+  it('should be created', () => {
+    expect(service).toBeTruthy();
+  });
+});
diff --git a/src/app/pages/data-catalogue/services/rest-api.service.ts b/src/app/pages/data-catalogue/services/rest-api.service.ts
new file mode 100644
index 0000000000000000000000000000000000000000..7c0310c31c8c61185c63bc45d5e4596931a4ce83
--- /dev/null
+++ b/src/app/pages/data-catalogue/services/rest-api.service.ts
@@ -0,0 +1,51 @@
+import { HttpClient } from '@angular/common/http';
+import { Injectable } from '@angular/core';
+import { ConfigService } from '@ngx-config/core';
+import { Observable } from 'rxjs';
+import { DCATDataset } from '../model/dcatdataset';
+import { ODMSCatalogue } from '../model/odmscatalogue';
+import { ODMSCatalogueInfo } from '../model/odmscatalogue-info';
+import { ODMSCatalogueResponse } from '../model/odmscatalogue-response';
+import { SearchRequest } from '../model/search-request';
+import { SearchResult } from '../model/search-result';
+
+@Injectable({
+  providedIn: 'root'
+})
+export class RestAPIService {
+
+  private apiEndpoint;
+
+  constructor(private config:ConfigService,private http:HttpClient) { 
+    this.apiEndpoint=this.config.getSettings("idra_base_url");
+  }
+
+  getDatasetById(id:string):Observable<DCATDataset>{
+    return this.http.get<DCATDataset>(`${this.apiEndpoint}/Idra/api/v1/client/datasets/${id}`);
+  }
+
+  
+  getDataset(catalogueId:number, id:string):Observable<DCATDataset>{
+    return this.http.get<DCATDataset>(`${this.apiEndpoint}/Idra/api/v1/client/catalogues/${catalogueId}/datasets/${id}`);
+  }
+
+  getDatasets(catalogueId:number):Observable<Array<DCATDataset>>{
+    return this.http.get<Array<DCATDataset>>(`${this.apiEndpoint}/Idra/api/v1/client/catalogues/${catalogueId}/datasets`);
+  }
+
+  getCatalogue(catalogueId:number):Observable<ODMSCatalogue>{
+    return this.http.get<ODMSCatalogue>(`${this.apiEndpoint}/Idra/api/v1/client/catalogues/${catalogueId}`);
+  }
+
+  getCatalogues(/*Use the default server query parameter*/):Observable<ODMSCatalogueResponse>{
+    return this.http.get<ODMSCatalogueResponse>(`${this.apiEndpoint}/Idra/api/v1/client/catalogues`);
+  }
+
+  getCataloguesInfo():Observable<Array<ODMSCatalogueInfo>>{
+    return this.http.get<Array<ODMSCatalogueInfo>>(`${this.apiEndpoint}/Idra/api/v1/client/cataloguesInfo`);
+  }
+
+  searchDatasets(parameters:SearchRequest):Observable<SearchResult>{
+    return this.http.post<SearchResult>(`${this.apiEndpoint}/Idra/api/v1/client/search`,parameters);
+  }
+}
diff --git a/src/app/pages/pages-menu.ts b/src/app/pages/pages-menu.ts
index 2e1deeac14c12069e21663f274b7028d7332c622..7f3fd087b2e121b92cb1d59e4471e74fed6b2183 100644
--- a/src/app/pages/pages-menu.ts
+++ b/src/app/pages/pages-menu.ts
@@ -13,6 +13,14 @@ export const MENU_ITEMS: NbMenuItem[] = [
       name:"home"
     }
   },
+  {
+    title: 'Data Catalogue',
+    icon: 'home-outline',
+    link: "/pages/catalogues",
+    data:{
+      name:"catalogues"
+    }
+  },
   {
     title: 'Maps',
     icon: 'map-outline',
diff --git a/src/app/pages/pages-routing.module.ts b/src/app/pages/pages-routing.module.ts
index 2afc117e381f7e3fcb98d6294031ac4e6581f7f6..41ab757b4ee4a8d940eb978b18fef905199e602f 100644
--- a/src/app/pages/pages-routing.module.ts
+++ b/src/app/pages/pages-routing.module.ts
@@ -39,6 +39,11 @@ const routes: Routes = [{
       loadChildren: () => import('./charts/charts.module')
         .then(m => m.ChartsModule),
     },
+    {
+      path: 'catalogues',
+      loadChildren: () => import('./data-catalogue/data-catalogue.module')
+        .then(m => m.DataCatalogueModule),
+    },
     {
       path: '',
       redirectTo: 'home',
diff --git a/src/app/pages/pages.module.ts b/src/app/pages/pages.module.ts
index c5ec9b81a0e80c411b8442be06fc511fb26a00c7..5f6869b1964d5d757b863e19edf1db6cb365451a 100644
--- a/src/app/pages/pages.module.ts
+++ b/src/app/pages/pages.module.ts
@@ -14,7 +14,7 @@ import { MiscellaneousModule } from './miscellaneous/miscellaneous.module';
     MiscellaneousModule,
   ],
   declarations: [
-    PagesComponent,
+    PagesComponent
   ],
 })
 export class PagesModule {
diff --git a/src/assets/config.json b/src/assets/config.json
index c0eff0f62dcb3966078decf3d14b722b06762d14..a81ecb0ec3ae74d93dfc43fee4df900b1b1c34b1 100644
--- a/src/assets/config.json
+++ b/src/assets/config.json
@@ -1,9 +1,10 @@
 {   
     "authProfile": "oidc",
-    "idmBaseURL":"http://localhost:8080/auth/realms/urbanite/protocol/openid-connect",
+    "idmBaseURL":"http://192.168.99.103:8080/auth/realms/urbanite/protocol/openid-connect",
     "dashboardBaseURL":"http://localhost:4200",
-    "client_id":"my-client",
+    "client_id":"urbanite",
     "client_secret": "",
+    "idra_base_url":"http://localhost:8080",
     "external-application-cards":[
         {
             "url": "http://217.172.12.141:8080",