Add branding configuration and assets for Sepehr tenant
Production CI / validate-and-build (push) Failing after 1m2s

- Created branding.config.ts to define branding settings including app title, support contact information, and working hours.
- Added brandingAssets.ts to import and export logo and login images for the Sepehr tenant.
- Introduced config.ts to specify application type as POS for the Sepehr tenant.
This commit is contained in:
2026-06-15 20:36:56 +03:30
parent 2c90f8091e
commit f7f8a91a85
25 changed files with 217 additions and 26 deletions
+61 -10
View File
@@ -81,6 +81,54 @@
"outputHashing": "all",
"outputPath": "dist/production"
},
"sepehr": {
"assets": [
{
"glob": "**/*",
"input": "public-sepehr"
}
],
"budgets": [
{
"maximumError": "3MB",
"maximumWarning": "2MB",
"type": "initial"
},
{
"maximumError": "8kB",
"maximumWarning": "4kB",
"type": "anyComponentStyle"
}
],
"fileReplacements": [
{
"replace": "src/config.ts",
"with": "src/tenants/sepehr/config.ts"
},
{
"replace": "src/assets/images/brandingAssets.ts",
"with": "src/tenants/sepehr/brandingAssets.ts"
},
{
"replace": "src/environments/environment.ts",
"with": "src/environments/environment.sepehr.ts"
},
{
"replace": "src/app.routes.ts",
"with": "src/tenants/sepehr/app.routes.ts"
},
{
"replace": "src/app/branding/branding.config.ts",
"with": "src/tenants/sepehr/branding.config.ts"
}
],
"outputHashing": "all",
"outputPath": "dist/sepehr",
"styles": [
"src/assets/styles.scss",
"src/assets/psp.scss"
]
},
"staging": {
"extractLicenses": true,
"fileReplacements": [
@@ -100,10 +148,6 @@
"input": "public-tis"
}
],
"styles": [
"src/assets/styles.scss",
"src/assets/psp.scss"
],
"budgets": [
{
"maximumError": "3MB",
@@ -139,7 +183,11 @@
}
],
"outputHashing": "all",
"outputPath": "dist/tis"
"outputPath": "dist/tis",
"styles": [
"src/assets/styles.scss",
"src/assets/psp.scss"
]
},
"tis-development": {
"assets": [
@@ -148,10 +196,6 @@
"input": "public-tis"
}
],
"styles": [
"src/assets/styles.scss",
"src/assets/psp.scss"
],
"budgets": [
{
"maximumError": "2.5MB",
@@ -190,7 +234,11 @@
"optimization": false,
"outputHashing": "all",
"outputPath": "dist/tis",
"sourceMap": true
"sourceMap": true,
"styles": [
"src/assets/styles.scss",
"src/assets/psp.scss"
]
}
},
"defaultConfiguration": "production",
@@ -233,6 +281,9 @@
"production": {
"buildTarget": "pos.client:build:production"
},
"sepehr": {
"buildTarget": "pos.client:build:sepehr"
},
"staging": {
"buildTarget": "pos.client:build:staging"
},
+12
View File
@@ -13,6 +13,18 @@ services:
- "8091:8090"
restart: unless-stopped
app_sepehr:
build:
context: .
dockerfile: Dockerfile
args:
TENANT: sepehr
DIST_DIR: sepehr
ports:
- "8092:8090"
restart: unless-stopped
app_default:
build:
context: .
+2
View File
@@ -56,10 +56,12 @@
"private": true,
"scripts": {
"build": "ng build",
"build:sepehr": "ng build --configuration sepehr",
"build:tis": "ng build --configuration tis",
"ng": "ng",
"prestart": "node aspnetcore-https",
"start": "run-script-os",
"start:sepehr": " ng serve --configuration sepehr",
"start:tis": " ng serve --configuration tis",
"test": "ng test",
"watch": "ng build --watch --configuration development"
Binary file not shown.

After

Width:  |  Height:  |  Size: 15 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 15 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 15 KiB

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 187 KiB

@@ -0,0 +1,21 @@
{
"name": "پرداخت الکترونیک سپهر",
"short_name": "پرداخت الکترونیک سپهر",
"icons": [
{
"src": "/web-app-manifest-192x192.png",
"sizes": "192x192",
"type": "image/png",
"purpose": "maskable"
},
{
"src": "/web-app-manifest-512x512.png",
"sizes": "512x512",
"type": "image/png",
"purpose": "maskable"
}
],
"theme_color": "#ffffff",
"background_color": "#ffffff",
"display": "standalone"
}
+36
View File
@@ -0,0 +1,36 @@
{
"background_color": "#ffffff",
"display": "standalone",
"icons": [
{
"purpose": "any",
"sizes": "192x192",
"src": "/favicon/web-app-manifest-192x192.png",
"type": "image/png"
},
{
"purpose": "maskable",
"sizes": "192x192",
"src": "/favicon/web-app-manifest-192x192.png",
"type": "image/png"
},
{
"purpose": "any",
"sizes": "512x512",
"src": "/favicon/web-app-manifest-512x512.png",
"type": "image/png"
},
{
"purpose": "maskable",
"sizes": "512x512",
"src": "/favicon/web-app-manifest-512x512.png",
"type": "image/png"
}
],
"id": "/",
"name": "پرداخت الکترونیک سپهر",
"scope": "/",
"short_name": "سپهر",
"start_url": "/",
"theme_color": "#ffffff"
}
Binary file not shown.

After

Width:  |  Height:  |  Size: 15 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 69 KiB

+2 -2
View File
@@ -28,9 +28,9 @@
}
],
"id": "/",
"name": "نرم افزار صورت‌حساب‌های مالیاتی پاژن",
"name": "نرم افزار صورت‌حساب‌های مالیاتی سپاس",
"scope": "/",
"short_name": "پاژن",
"short_name": "سپاس",
"start_url": "/",
"theme_color": "#ffffff"
}
@@ -9,7 +9,7 @@
<div class="h-10 w-10">
<img [src]="logo" alt="Logo" class="object-contain" />
</div>
<span class="text-muted-color text-sm font-medium">مدیریت صورت‌حساب‌های مالیاتی پاژن</span>
<span class="text-muted-color text-sm font-medium">مدیریت صورت‌حساب‌های مالیاتی سپاس</span>
</div>
</div>
</div>
+8 -10
View File
@@ -1,14 +1,13 @@
<div class="bg-white h-svh relative">
<div class="absolute inset-0 opacity-30 blur-xs flex items-center justify-center">
<div class="relative h-svh bg-white">
<div class="absolute inset-0 flex items-center justify-center opacity-30 blur-xs">
<img [src]="authVector" alt="background image" class="w-full bg-cover bg-no-repeat" />
</div>
<div class="flex justify-center items-center relative z-10 h-svh mx-auto bg-gray-800/80">
<div class="relative z-10 mx-auto flex h-svh items-center justify-center bg-gray-800/80">
<div
class="flex flex-col items-center justify-center px-12 py-10 h-auto bg-surface-card border border-surface-border rounded-lg shadow w-full max-w-md"
>
<div class="flex flex-col gap-4 text-center mb-10 items-center justify-center">
<img [src]="logo" alt="مدیریت صورت‌حساب‌های مالیاتی" class="w-20 h-auto" />
<span class="text-lg font-bold"> به پنل مدیریت صورت‌حساب‌های مالیاتی پاژن خوش آمدید. </span>
class="bg-surface-card border-surface-border flex h-auto w-full max-w-md flex-col items-center justify-center rounded-lg border px-12 py-10 shadow">
<div class="mb-10 flex flex-col items-center justify-center gap-4 text-center">
<img [src]="logo" alt="مدیریت صورت‌حساب‌های مالیاتی" class="h-auto w-20" />
<span class="text-lg font-bold"> به پنل مدیریت صورت‌حساب‌های مالیاتی سپاس خوش آمدید. </span>
</div>
<!-- @if (activeStep() === "login") { -->
@@ -18,8 +17,7 @@
[defaultRole]="role"
class="w-full"
(onSuccessfullySubmit)="onLoggedIn($event)"
(onToSignup)="toSignUp()"
/>
(onToSignup)="toSignUp()" />
<!-- } @else if (activeStep() === "signup") {
<auth-signup role="TEACHER" class="w-full" />
} @else if (activeStep() === "otp") {
+13
View File
@@ -0,0 +1,13 @@
// TIS tenant environment configuration
export const environment = {
production: true,
// apiBaseUrl: 'https://psp-api.shift-am.ir',
apiBaseUrl: 'http://192.168.128.73:5002',
// apiBaseUrl: 'http://192.168.0.162:5002',
// apiBaseUrl: 'http://localhost:5002',
host: 'localhost',
port: 5010,
enableLogging: false,
enableDebug: false,
enableNativeBridge: true,
};
+2 -2
View File
@@ -1,8 +1,8 @@
// TIS tenant environment configuration
export const environment = {
production: true,
// apiBaseUrl: 'https://psp-api.shift-am.ir',
apiBaseUrl: 'http://192.168.128.73:5002',
apiBaseUrl: 'https://psp-api.shift-am.ir',
// apiBaseUrl: 'http://192.168.128.73:5002',
// apiBaseUrl: 'http://192.168.0.162:5002',
// apiBaseUrl: 'http://localhost:5002',
host: 'localhost',
+1 -1
View File
@@ -2,7 +2,7 @@
<html lang="fa" dir="rtl">
<head>
<meta charset="utf-8" />
<title>مدیریت صورت‌حساب‌های مالیاتی پاژن</title>
<title>مدیریت صورت‌حساب‌های مالیاتی سپاس</title>
<base href="/" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<meta name="theme-color" content="#ffffff" />
+20
View File
@@ -0,0 +1,20 @@
import { posAuthNamedRoutes } from '@/domains/pos/modules/auth/constants';
import { POS_ROUTES } from '@/domains/pos/routes';
import { PUBLIC_SALE_INVOICES_ROUTES } from '@/modules/saleInvoices/constants';
import { Notfound } from '@/pages/notfound/notfound.component';
import { Routes } from '@angular/router';
export const appRoutes: Routes = [
{
path: '',
loadComponent: () =>
import('@/domains/pos/layouts/layout.component').then((m) => m.PosLayoutComponent),
children: [POS_ROUTES],
},
{
...posAuthNamedRoutes.login,
path: 'auth',
},
...PUBLIC_SALE_INVOICES_ROUTES,
{ path: '**', component: Notfound },
];
Binary file not shown.

After

Width:  |  Height:  |  Size: 83 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 15 KiB

+27
View File
@@ -0,0 +1,27 @@
import { BrandingConfig } from '../default/branding.config';
export const brandingConfig: BrandingConfig = {
appTitle: 'پرداخت الکترونیک سپهر - مدیریت صورت‌حساب‌های مالیاتی',
manifestPath: '/favicon/site.webmanifest',
themeColor: '#ffffff',
enableInstallPrompt: true,
title: 'پرداخت الکترونیک سپهر',
fullTitle: 'پرداخت الکترونیک سپهر - مدیریت صورت‌حساب‌های مالیاتی',
support: {
phones: [
{
title: 'واحد پشتیبانی 1',
phones: ['021-91012345'],
},
{
title: 'واحد پشتیبانی 2',
phones: ['021-91012346'],
},
{
title: 'پاسخگویی اضطراری',
phones: ['0912-123-4567'],
},
],
workingHours: 'شنبه تا چهارشنبه: 8 صبح تا 5 عصر، پنجشنبه: 8 صبح تا 2 عصر',
},
};
+7
View File
@@ -0,0 +1,7 @@
import login from 'src/tenants/tis/assets/images/login.jpg';
import logo from 'src/tenants/tis/assets/images/logo.png';
export default {
logo,
login,
};
+3
View File
@@ -0,0 +1,3 @@
export default {
isPosApplication: true,
};