diff --git a/package-lock.json b/package-lock.json
index 717aabf5..0c896696 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -16530,6 +16530,11 @@
"integrity": "sha1-yobR/ogoFpsBICCOPchCS524NCw=",
"dev": true
},
+ "ng-inline-svg": {
+ "version": "11.0.0",
+ "resolved": "https://registry.npmjs.org/ng-inline-svg/-/ng-inline-svg-11.0.0.tgz",
+ "integrity": "sha512-D4dXt379cveaYJobu7JnYixZzw/+AqRkMGDqOrNhGDEiBgDaxb8DZ57mSg8V9ekTl3fK+H98p9SevhLSakzRkA=="
+ },
"ng-lazyload-image": {
"version": "7.1.0",
"resolved": "https://registry.npmjs.org/ng-lazyload-image/-/ng-lazyload-image-7.1.0.tgz",
diff --git a/package.json b/package.json
index 436a8b78..bc2dfc22 100644
--- a/package.json
+++ b/package.json
@@ -61,8 +61,8 @@
"chart.js": "2.7.1",
"ckeditor": "4.7.3",
"classlist.js": "1.1.20150312",
- "core-js": "2.5.1",
"colors.js": "1.2.4",
+ "core-js": "2.5.1",
"echarts": "^4.0.2",
"eva-icons": "^1.1.3",
"gulp-bump": "2.7.0",
@@ -72,12 +72,13 @@
"leaflet": "1.2.0",
"marked": "^0.5.2",
"nebular-icons": "1.1.0",
+ "ng-inline-svg": "^11.0.0",
"ng-lazyload-image": "^7.1.0",
"ng2-ckeditor": "^1.2.9",
"ng2-smart-table": "^1.6.0",
"ngx-echarts": "^4.2.2",
- "node-sass": "^4.12.0",
"ngx-swiper-wrapper": "^9.0.1",
+ "node-sass": "^4.12.0",
"normalize.css": "6.0.0",
"pace-js": "1.0.2",
"roboto-fontface": "0.8.0",
diff --git a/src/app/app.module.ts b/src/app/app.module.ts
index d55f48ee..dabd611e 100644
--- a/src/app/app.module.ts
+++ b/src/app/app.module.ts
@@ -20,6 +20,7 @@ import {
NbToastrModule,
NbWindowModule,
} from '@nebular/theme';
+import {InlineSVGModule} from 'ng-inline-svg';
@NgModule({
declarations: [AppComponent],
@@ -39,6 +40,7 @@ import {
}),
CoreModule.forRoot(),
ThemeModule.forRoot(),
+ InlineSVGModule.forRoot(),
],
bootstrap: [AppComponent],
})
diff --git a/src/app/pages/backend-integration/backend-integration-routing.module.ts b/src/app/pages/backend-integration/backend-integration-routing.module.ts
new file mode 100644
index 00000000..6e97fe77
--- /dev/null
+++ b/src/app/pages/backend-integration/backend-integration-routing.module.ts
@@ -0,0 +1,56 @@
+import {RouterModule, Routes} from '@angular/router';
+import {NgModule} from '@angular/core';
+import {BackendIntegrationComponent} from './backend-integration.component';
+import {PhpIntegrationDescriptionComponent} from './descriptions/php-integration-description.component';
+import {DotNetIntegrationDescriptionComponent} from './descriptions/dot-net-integration-description.component';
+import {DotNetCoreIntegrationDescriptionComponent} from './descriptions/dot-net-core-integration-description.component';
+import {NodeJsIntegrationDescriptionComponent} from './descriptions/node-js-integration-description.component';
+import {JavaIntegrationDescriptionComponent} from './descriptions/java-integration-description.component';
+import {PythonIntegrationDescriptionComponent} from './descriptions/python-integration-description.component';
+import {EcommerceIntegrationDescriptionComponent} from './descriptions/ecommerce-integration-description.component';
+import {IotIntegrationDescriptionComponent} from './descriptions/iot-integration-description.component';
+
+const routes: Routes = [{
+ path: '',
+ component: BackendIntegrationComponent,
+ children: [
+ {
+ path: 'php',
+ component: PhpIntegrationDescriptionComponent,
+ },
+ {
+ path: 'dot-net',
+ component: DotNetIntegrationDescriptionComponent,
+ },
+ {
+ path: 'dot-net-core',
+ component: DotNetCoreIntegrationDescriptionComponent,
+ },
+ {
+ path: 'node-js',
+ component: NodeJsIntegrationDescriptionComponent,
+ },
+ {
+ path: 'java',
+ component: JavaIntegrationDescriptionComponent,
+ },
+ {
+ path: 'python',
+ component: PythonIntegrationDescriptionComponent,
+ },
+ {
+ path: 'ecommerce',
+ component: EcommerceIntegrationDescriptionComponent,
+ },
+ {
+ path: 'iot',
+ component: IotIntegrationDescriptionComponent,
+ },
+ ],
+}];
+
+@NgModule({
+ imports: [RouterModule.forChild(routes)],
+ exports: [RouterModule],
+})
+export class BackendIntegrationRoutingModule { }
diff --git a/src/app/pages/backend-integration/backend-integration.component.scss b/src/app/pages/backend-integration/backend-integration.component.scss
new file mode 100644
index 00000000..697a35b3
--- /dev/null
+++ b/src/app/pages/backend-integration/backend-integration.component.scss
@@ -0,0 +1,58 @@
+@import '../../@theme/styles/themes';
+@import '~@nebular/theme/styles/global/breakpoints';
+
+:host {
+ display: flex !important;
+ flex-direction: row;
+ justify-content: stretch;
+ align-items: stretch;
+ height: 100%;
+}
+
+.description-container, .diagram-container {
+ display: flex;
+}
+
+.diagram-container {
+ flex: 2 1 auto;
+ align-items: center;
+ min-width: 30rem;
+ width: 70%;
+}
+
+.description-container {
+ flex: 1 2 auto;
+ max-width: 45rem;
+ align-items: stretch;
+ height: 100%;
+
+ ::ng-deep :last-child {
+ width: 100%;
+ }
+}
+
+@include media-breakpoint-down(lg) {
+ :host {
+ flex-direction: column;
+ justify-content: flex-start;
+ align-items: center;
+
+ .diagram-container, .description-container {
+ width: 100%;
+ max-width: none;
+ }
+
+ .description-container {
+ padding-bottom: 1.5rem;
+
+ ::ng-deep ngx-integration-description .subheader {
+ margin-bottom: 1.5rem;
+ }
+ }
+
+ .diagram-container {
+ min-width: 0;
+ }
+ }
+}
+
diff --git a/src/app/pages/backend-integration/backend-integration.component.ts b/src/app/pages/backend-integration/backend-integration.component.ts
new file mode 100644
index 00000000..34f282c4
--- /dev/null
+++ b/src/app/pages/backend-integration/backend-integration.component.ts
@@ -0,0 +1,16 @@
+import {Component} from '@angular/core';
+
+@Component({
+ selector: 'ngx-backend-integration',
+ template: `
+
+
+
+
+
+
+ `,
+ styleUrls: ['./backend-integration.component.scss'],
+})
+export class BackendIntegrationComponent {
+}
diff --git a/src/app/pages/backend-integration/backend-integration.module.ts b/src/app/pages/backend-integration/backend-integration.module.ts
new file mode 100644
index 00000000..db7c9094
--- /dev/null
+++ b/src/app/pages/backend-integration/backend-integration.module.ts
@@ -0,0 +1,43 @@
+import {ThemeModule} from '../../@theme/theme.module';
+import {NgModule} from '@angular/core';
+import {BackendIntegrationDiagramComponent} from './diagram/backend-integration-diagram.component';
+import {BackendIntegrationComponent} from './backend-integration.component';
+import {RouterModule} from '@angular/router';
+import {NbButtonModule, NbCardModule, NbIconModule} from '@nebular/theme';
+import {BackendIntegrationRoutingModule} from './backend-integration-routing.module';
+import {IntegrationDescriptionComponent} from './integration-description/integration-description.component';
+import {PhpIntegrationDescriptionComponent} from './descriptions/php-integration-description.component';
+import {DotNetIntegrationDescriptionComponent} from './descriptions/dot-net-integration-description.component';
+import {DotNetCoreIntegrationDescriptionComponent} from './descriptions/dot-net-core-integration-description.component';
+import {NodeJsIntegrationDescriptionComponent} from './descriptions/node-js-integration-description.component';
+import { JavaIntegrationDescriptionComponent } from './descriptions/java-integration-description.component';
+import { PythonIntegrationDescriptionComponent } from './descriptions/python-integration-description.component';
+import { EcommerceIntegrationDescriptionComponent } from './descriptions/ecommerce-integration-description.component';
+import { IotIntegrationDescriptionComponent } from './descriptions/iot-integration-description.component';
+import {InlineSVGModule} from 'ng-inline-svg';
+
+@NgModule({
+ imports: [
+ ThemeModule,
+ RouterModule,
+ NbCardModule,
+ BackendIntegrationRoutingModule,
+ NbIconModule,
+ NbButtonModule,
+ InlineSVGModule,
+ ],
+ declarations: [
+ BackendIntegrationComponent,
+ BackendIntegrationDiagramComponent,
+ PhpIntegrationDescriptionComponent,
+ DotNetIntegrationDescriptionComponent,
+ DotNetCoreIntegrationDescriptionComponent,
+ NodeJsIntegrationDescriptionComponent,
+ JavaIntegrationDescriptionComponent,
+ PythonIntegrationDescriptionComponent,
+ EcommerceIntegrationDescriptionComponent,
+ IotIntegrationDescriptionComponent,
+ IntegrationDescriptionComponent,
+ ],
+})
+export class BackendIntegrationModule { }
diff --git a/src/app/pages/backend-integration/descriptions/dot-net-core-integration-description.component.ts b/src/app/pages/backend-integration/descriptions/dot-net-core-integration-description.component.ts
new file mode 100644
index 00000000..db5a3cc5
--- /dev/null
+++ b/src/app/pages/backend-integration/descriptions/dot-net-core-integration-description.component.ts
@@ -0,0 +1,31 @@
+import { Component } from '@angular/core';
+
+@Component({
+ selector: 'ngx-dot-net-core-integration-description',
+ template: `
+
+ `,
+})
+export class DotNetCoreIntegrationDescriptionComponent {
+
+ buttonText = 'Get Backend From 49$';
+ url = 'https://store.akveo.com/collections/net-core-bundles?utm_campaign=akveo_store%20-%20all%20bundles%20-%20ngx_admin_demo&utm_source=ngx_admin&utm_medium=referral&utm_content=sidebar_link_dotnetcore';
+
+ features: string[] = [
+ 'Backend layered architecture, authentication, solution structure',
+ 'Ngx-admin template with 100+ UI components',
+ 'Authentication using JWT tokens is implemented and integrated into both client and server side',
+ 'Basic role management and ACL is in place',
+ 'Data entities classes, independent of any ORM',
+ 'Dependency injection takes care of services and repositories instantiation',
+ 'Swagger included for automatic API testing and documentation',
+ 'Serilog is used for logging',
+ 'OWIN startup is configured',
+ 'Documentation is included',
+ '3 months free updates',
+ ];
+
+}
diff --git a/src/app/pages/backend-integration/descriptions/dot-net-integration-description.component.ts b/src/app/pages/backend-integration/descriptions/dot-net-integration-description.component.ts
new file mode 100644
index 00000000..2063822e
--- /dev/null
+++ b/src/app/pages/backend-integration/descriptions/dot-net-integration-description.component.ts
@@ -0,0 +1,29 @@
+import { Component } from '@angular/core';
+
+@Component({
+ selector: 'ngx-dot-net-integration-description',
+ template: `
+
+ `,
+})
+export class DotNetIntegrationDescriptionComponent {
+
+ buttonText = 'Get Backend From 49$';
+ url = 'https://store.akveo.com/collections/net-bundles?utm_campaign=akveo_store%20-%20all%20bundles%20-%20ngx_admin_demo&utm_source=ngx_admin&utm_medium=referral&utm_content=sidebar_link_dotnet';
+
+ features: string[] = [
+ 'Backend layered architecture, authentication, solution structure',
+ 'Ngx-admin angular UI with 100+ UI components to use',
+ 'Authentication using JWT tokens is implemented and integrated with both client and server side',
+ 'Basic role management and ACL is in place',
+ 'Swagger included for automatic API testing and documentation',
+ 'Serilog is used for logging',
+ 'OWIN startup is configured',
+ 'Documentation is included',
+ '3 months free updates',
+ ];
+
+}
diff --git a/src/app/pages/backend-integration/descriptions/ecommerce-integration-description.component.ts b/src/app/pages/backend-integration/descriptions/ecommerce-integration-description.component.ts
new file mode 100644
index 00000000..0b1fbaac
--- /dev/null
+++ b/src/app/pages/backend-integration/descriptions/ecommerce-integration-description.component.ts
@@ -0,0 +1,22 @@
+import { Component } from '@angular/core';
+
+@Component({
+ selector: 'ngx-e-commerce-integration-description',
+ template: `
+
+ `,
+})
+export class EcommerceIntegrationDescriptionComponent {
+
+ buttonText = 'Get Backend From 49$';
+ url = 'https://store.akveo.com/collections/e-commerce-bundles?utm_campaign=akveo_store%20-%20all%20bundles%20-%20ngx_admin_demo&utm_source=ngx_admin&utm_medium=referral&utm_content=sidebar_link_e-commerce';
+
+ features: string[] = [
+ 'E-commerce dashboard components integrated with backend',
+ 'Sample order table and order details page integrated with backend',
+ ];
+
+}
diff --git a/src/app/pages/backend-integration/descriptions/iot-integration-description.component.ts b/src/app/pages/backend-integration/descriptions/iot-integration-description.component.ts
new file mode 100644
index 00000000..02f502eb
--- /dev/null
+++ b/src/app/pages/backend-integration/descriptions/iot-integration-description.component.ts
@@ -0,0 +1,22 @@
+import { Component } from '@angular/core';
+
+@Component({
+ selector: 'ngx-iot-integration-description',
+ template: `
+
+ `,
+})
+export class IotIntegrationDescriptionComponent {
+
+ buttonText = 'Get Backend From 49$';
+ url = 'https://store.akveo.com/collections/iot-bundles?utm_campaign=akveo_store%20-%20all%20bundles%20-%20ngx_admin_demo&utm_source=ngx_admin&utm_medium=referral&utm_content=sidebar_link_iot';
+
+ features: string[] = [
+ 'IOT dashboard components integrated with backend',
+ 'Sample devices table and device details page integrated with backend',
+ ];
+
+}
diff --git a/src/app/pages/backend-integration/descriptions/java-integration-description.component.ts b/src/app/pages/backend-integration/descriptions/java-integration-description.component.ts
new file mode 100644
index 00000000..00f86939
--- /dev/null
+++ b/src/app/pages/backend-integration/descriptions/java-integration-description.component.ts
@@ -0,0 +1,31 @@
+import { Component } from '@angular/core';
+
+@Component({
+ selector: 'ngx-java-integration-description',
+ template: `
+
+ `,
+})
+export class JavaIntegrationDescriptionComponent {
+
+ buttonText = 'Get Backend From 49$';
+ url = 'https://store.akveo.com/collections/java-bundles?utm_campaign=akveo_store%20-%20all%20bundles%20-%20ngx_admin_demo&utm_source=ngx_admin&utm_medium=referral&utm_content=sidebar_link_java';
+
+ features: string[] = [
+ 'Ngx-admin template with 100+ UI components',
+ 'Spring Boot as the main framework for backend',
+ 'Maven as building tool',
+ 'Can be used with a range of SQL databases. In-Memory database H2 by default',
+ 'Authentication using Json Web Tokens is implemented and integrated with both client and server side',
+ 'Refresh Token functionality is available out of the box',
+ `TSLint as part of Angular project settings, it simply wouldn't let you push typescript code with errors`,
+ 'Backend has Checkstyle setup and findbugs plugin for static code analysis',
+ 'Swagger for API documentation purpose',
+ 'Documentation is included',
+ '3 months free updates',
+ ];
+
+}
diff --git a/src/app/pages/backend-integration/descriptions/node-js-integration-description.component.ts b/src/app/pages/backend-integration/descriptions/node-js-integration-description.component.ts
new file mode 100644
index 00000000..d4622973
--- /dev/null
+++ b/src/app/pages/backend-integration/descriptions/node-js-integration-description.component.ts
@@ -0,0 +1,31 @@
+import { Component } from '@angular/core';
+
+@Component({
+ selector: 'ngx-node-js-integration-description',
+ template: `
+
+ `,
+})
+export class NodeJsIntegrationDescriptionComponent {
+
+ buttonText = 'Get Backend From 49$';
+ url = 'https://store.akveo.com/collections/nodejs-bundles?utm_campaign=akveo_store%20-%20all%20bundles%20-%20ngx_admin_demo&utm_source=ngx_admin&utm_medium=referral&utm_content=sidebar_link_nodejs';
+
+ features: string[] = [
+ 'MongoDB for user data storage',
+ 'Express server',
+ 'Authentication using Passport and JWT tokens is implemented and integrated with both client and server side',
+ 'Eslint for code quality on the backend side',
+ 'Winston is used for logging',
+ 'Node-config is used for API settings',
+ 'Nodemon is used for better development experience',
+ 'Documentation is included',
+ 'Basic role management and ACL is in place',
+ 'Swagger included for automatic API testing and documentation',
+ '3 months free updates',
+ ];
+
+}
diff --git a/src/app/pages/backend-integration/descriptions/php-integration-description.component.ts b/src/app/pages/backend-integration/descriptions/php-integration-description.component.ts
new file mode 100644
index 00000000..6e8d8ab9
--- /dev/null
+++ b/src/app/pages/backend-integration/descriptions/php-integration-description.component.ts
@@ -0,0 +1,29 @@
+import { Component } from '@angular/core';
+
+@Component({
+ selector: 'ngx-php-integration-description',
+ template: `
+
+ `,
+})
+export class PhpIntegrationDescriptionComponent {
+
+ buttonText = 'Get Backend From 49$';
+ url = 'https://store.akveo.com/products/material-php-starter-bundle?utm_campaign=akveo_store%20-%20all%20bundles%20-%20ngx_admin_demo&utm_source=ngx_admin%20&utm_medium=referral%20&utm_content=sidebar_link_php';
+
+ features: string[] = [
+ 'Ngx-admin template with 100+ UI Nebular and Eva design components',
+ 'Authentication using JWT tokens is implemented and integrated into both client and server-side',
+ 'Basic role management and ACL is in place, AUTH, reset the password',
+ 'Backend solution layered architecture and projects segregation',
+ 'Swagger included for automatic API testing and documentation',
+ 'Documentation is included',
+ 'Docker and docker-compose configuration included',
+ 'MySQL database',
+ '3 months free updates',
+ ];
+
+}
diff --git a/src/app/pages/backend-integration/descriptions/python-integration-description.component.ts b/src/app/pages/backend-integration/descriptions/python-integration-description.component.ts
new file mode 100644
index 00000000..eee9b390
--- /dev/null
+++ b/src/app/pages/backend-integration/descriptions/python-integration-description.component.ts
@@ -0,0 +1,28 @@
+import { Component } from '@angular/core';
+
+@Component({
+ selector: 'ngx-python-integration-description',
+ template: `
+
+ `,
+})
+export class PythonIntegrationDescriptionComponent {
+
+ buttonText = 'Get Backend From 49$';
+ url = 'https://store.akveo.com/collections/python-bundles?utm_campaign=akveo_store%20-%20all%20bundles%20-%20ngx_admin_demo&utm_source=ngx_admin&utm_medium=referral&utm_content=sidebar_link_python';
+
+ features: string[] = [
+ 'ngx-admin template with 100+ UI components',
+ 'Python backend with Flask micro-framework',
+ 'Any SQL database can be used (PostgreSQL, MySQL, Oracle, Microsoft SQL Server, and SQLite)',
+ 'SQLAlchemy as database toolkit for CRUD operations',
+ 'Authentication using JWT tokens is implemented and integrated with both client and server side',
+ 'Compression is set up for better performance',
+ 'Documentation is included',
+ '3 months free updates',
+ ];
+
+}
diff --git a/src/app/pages/backend-integration/diagram/backend-integration-diagram.component.html b/src/app/pages/backend-integration/diagram/backend-integration-diagram.component.html
new file mode 100644
index 00000000..21b8dd5b
--- /dev/null
+++ b/src/app/pages/backend-integration/diagram/backend-integration-diagram.component.html
@@ -0,0 +1,2 @@
+
+
diff --git a/src/app/pages/backend-integration/diagram/backend-integration-diagram.component.scss b/src/app/pages/backend-integration/diagram/backend-integration-diagram.component.scss
new file mode 100644
index 00000000..a17d8d7e
--- /dev/null
+++ b/src/app/pages/backend-integration/diagram/backend-integration-diagram.component.scss
@@ -0,0 +1,29 @@
+@import '../../../@theme/styles/themes';
+
+@include nb-install-component() {
+ width: 100%;
+
+ ::ng-deep svg {
+ path.card-header, path.subcard-header, path.diagram-header {
+ fill: nb-theme(text-basic-color);
+ }
+
+ path.card-subheader, path.subcard-subheader, path.diagram-subheader {
+ fill: nb-theme(text-hint-color);
+ }
+
+ rect.card-background {
+ fill: nb-theme(background-basic-color-2);
+ stroke: nb-theme(border-basic-color-5);
+ }
+
+ rect.subcard-background {
+ fill: nb-theme(background-basic-color-1);
+ }
+
+ path.subcard-border {
+ fill: nb-theme(background-basic-color-2);
+ stroke: nb-theme(border-basic-color-5);
+ }
+ }
+}
diff --git a/src/app/pages/backend-integration/diagram/backend-integration-diagram.component.ts b/src/app/pages/backend-integration/diagram/backend-integration-diagram.component.ts
new file mode 100644
index 00000000..d7e181f7
--- /dev/null
+++ b/src/app/pages/backend-integration/diagram/backend-integration-diagram.component.ts
@@ -0,0 +1,8 @@
+import { Component } from '@angular/core';
+
+@Component({
+ selector: 'ngx-backend-integration-diagram',
+ templateUrl: './backend-integration-diagram.component.html',
+ styleUrls: ['./backend-integration-diagram.component.scss'],
+})
+export class BackendIntegrationDiagramComponent {}
diff --git a/src/app/pages/backend-integration/integration-description/integration-description.component.scss b/src/app/pages/backend-integration/integration-description/integration-description.component.scss
new file mode 100644
index 00000000..f6b2733e
--- /dev/null
+++ b/src/app/pages/backend-integration/integration-description/integration-description.component.scss
@@ -0,0 +1,30 @@
+@import '../../../@theme/styles/themes';
+
+@include nb-install-component() {
+ background-color: nb-theme(background-basic-color-1);
+ display: flex;
+ flex-direction: column;
+ justify-content: center;
+ padding: 1rem 2rem;
+ width: 100%;
+ height: 100%;
+
+ .h6 {
+ margin-bottom: 1rem;
+ }
+
+ .subtitle {
+ margin-bottom: 3rem;
+ }
+
+ .features-list {
+ list-style-type: '- ';
+ padding-left: 0;
+ }
+
+ a {
+ width: auto;
+ align-self: flex-start;
+ margin-top: 2rem;
+ }
+}
diff --git a/src/app/pages/backend-integration/integration-description/integration-description.component.ts b/src/app/pages/backend-integration/integration-description/integration-description.component.ts
new file mode 100644
index 00000000..ccfadccf
--- /dev/null
+++ b/src/app/pages/backend-integration/integration-description/integration-description.component.ts
@@ -0,0 +1,30 @@
+import {Component, Input} from '@angular/core';
+
+@Component({
+ selector: 'ngx-integration-description',
+ template: `
+ For why do you need a backend admin dashboard?
+ To save up to 300 hours on development. To use backend as ready to use examples.
+ Features
+
+ {{buttonText}}
+ `,
+ styleUrls: ['./integration-description.component.scss'],
+})
+export class IntegrationDescriptionComponent {
+
+ @Input() features: string[];
+ @Input() url: string;
+ @Input() buttonText: string;
+
+}
diff --git a/src/app/pages/pages-menu.ts b/src/app/pages/pages-menu.ts
index 370a2953..02b5635c 100644
--- a/src/app/pages/pages-menu.ts
+++ b/src/app/pages/pages-menu.ts
@@ -18,35 +18,35 @@ export const MENU_ITEMS: NbMenuItem[] = [
children: [
{
title: 'PHP',
- url: 'https://store.akveo.com/products/material-php-starter-bundle?utm_campaign=akveo_store%20-%20all%20bundles%20-%20ngx_admin_demo&utm_source=ngx_admin%20&utm_medium=referral%20&utm_content=sidebar_link_php',
+ link: '/pages/backend-integration/php',
},
{
title: '.NET',
- url: 'https://store.akveo.com/collections/net-bundles?utm_campaign=akveo_store%20-%20all%20bundles%20-%20ngx_admin_demo&utm_source=ngx_admin&utm_medium=referral&utm_content=sidebar_link_dotnet',
+ link: '/pages/backend-integration/dot-net',
},
{
title: '.NET Core',
- url: 'https://store.akveo.com/collections/net-core-bundles?utm_campaign=akveo_store%20-%20all%20bundles%20-%20ngx_admin_demo&utm_source=ngx_admin&utm_medium=referral&utm_content=sidebar_link_dotnetcore',
+ link: '/pages/backend-integration/dot-net-core',
},
{
title: 'Node JS',
- url: 'https://store.akveo.com/collections/nodejs-bundles?utm_campaign=akveo_store%20-%20all%20bundles%20-%20ngx_admin_demo&utm_source=ngx_admin&utm_medium=referral&utm_content=sidebar_link_nodejs',
+ link: '/pages/backend-integration/node-js',
},
{
title: 'Java',
- url: 'https://store.akveo.com/collections/java-bundles?utm_campaign=akveo_store%20-%20all%20bundles%20-%20ngx_admin_demo&utm_source=ngx_admin&utm_medium=referral&utm_content=sidebar_link_java',
+ link: '/pages/backend-integration/java',
},
{
title: 'Python',
- url: 'https://store.akveo.com/collections/python-bundles?utm_campaign=akveo_store%20-%20all%20bundles%20-%20ngx_admin_demo&utm_source=ngx_admin&utm_medium=referral&utm_content=sidebar_link_python',
+ link: '/pages/backend-integration/python',
},
{
title: 'E-commerce',
- url: 'https://store.akveo.com/collections/e-commerce-bundles?utm_campaign=akveo_store%20-%20all%20bundles%20-%20ngx_admin_demo&utm_source=ngx_admin&utm_medium=referral&utm_content=sidebar_link_e-commerce',
+ link: '/pages/backend-integration/ecommerce',
},
{
title: 'IoT',
- url: 'https://store.akveo.com/collections/iot-bundles?utm_campaign=akveo_store%20-%20all%20bundles%20-%20ngx_admin_demo&utm_source=ngx_admin&utm_medium=referral&utm_content=sidebar_link_iot',
+ link: '/pages/backend-integration/iot',
},
],
},
diff --git a/src/app/pages/pages-routing.module.ts b/src/app/pages/pages-routing.module.ts
index 376cc4fa..990c630b 100644
--- a/src/app/pages/pages-routing.module.ts
+++ b/src/app/pages/pages-routing.module.ts
@@ -18,6 +18,11 @@ const routes: Routes = [{
path: 'iot-dashboard',
component: DashboardComponent,
},
+ {
+ path: 'backend-integration',
+ loadChildren: () => import('./backend-integration/backend-integration.module')
+ .then(m => m.BackendIntegrationModule),
+ },
{
path: 'layout',
loadChildren: () => import('./layout/layout.module')
diff --git a/src/assets/images/backend-integration-diagram.svg b/src/assets/images/backend-integration-diagram.svg
new file mode 100644
index 00000000..0114e0cd
--- /dev/null
+++ b/src/assets/images/backend-integration-diagram.svg
@@ -0,0 +1 @@
+