master
Boris Voropaev 2024-05-24 17:49:09 +03:00
parent fbedda1c51
commit a0e1257a40
43 changed files with 1713 additions and 32 deletions

View File

@ -10,14 +10,16 @@ import { filter } from "rxjs/operators";
})
export class SEOService {
constructor(private title: Title, private meta: Meta, router:Router) {
router.events
.pipe(
filter((event:any)=>{return event.routerEvent})
filter((event:any)=>event.url&&event.type == 1)
)
.subscribe(
(event)=>{
console.log('Seo', event.routerEvent.url);
let data = this.seoData[event.routerEvent.url]
console.log('Seo', event);
let url = event.url
let data = this.seoData[url]
if(data){
this.updateTitle(data.title);
this.updateDescription(data.description);

View File

@ -44,9 +44,9 @@
<div class="banner-text">
<h2>Остались вопросы?</h2>
<div>Мы с радостью на них ответим!</div>
<!-- <request>
<request>
<button class="btn white">Напишите нам</button>
</request> -->
</request>
</div>
<div class="banner-img"></div>
</div>
@ -91,8 +91,7 @@
<svg>
<use href="assets/ico/webpage_24.svg#ico"></use>
</svg>
<!-- <request>Напишите нам</request> -->
<request>Напишите нам</request>
</a>
</div>

View File

@ -1,17 +1,17 @@
import { Component } from '@angular/core';
import { CommonModule, DatePipe, ViewportScroller } from '@angular/common';
import { RouterOutlet, NavigationEnd, Router, RouterLink, RouterLinkActive } from '@angular/router';
import { RequestComponent } from './request/request.component';
@Component({
selector: 'app-root',
standalone: true,
imports: [CommonModule, RouterOutlet, RouterLink, RouterLinkActive, DatePipe],
imports: [CommonModule, RouterOutlet, RouterLink, RouterLinkActive, DatePipe, RequestComponent],
templateUrl: './app.component.html',
styleUrl: './app.component.scss'
})
export class AppComponent {
title = 'NIR';
dateNow?: Date;
navShow = false;

View File

@ -1,30 +1,30 @@
import { Routes } from '@angular/router';
import { HomeComponent } from './home/home.component';
import { AboutComponent } from './about/about.component';
// import { AutomatizationComponent } from './automatization/automatization.component';
// import { DevelopmentComponent } from './development/development.component';
// import { SitesComponent } from './sites/sites.component';
// import { ProjectsComponent } from './projects/projects.component';
// import { ContactsComponent } from './contacts/contacts.component';
// import { VniigazComponent } from './projects/vniigaz/vniigaz.component';
// import { FaufcsComponent } from './projects/faufcs/faufcs.component';
// import { Tk023Component } from './projects/tk023/tk023.component';
// import { Tk465Component } from './projects/tk465/tk465.component';
// import { ScvgComponent } from './projects/scvg/scvg.component';
// import { IntergazComponent } from './projects/intergaz/intergaz.app.routescomponent';
import { AutomatizationComponent } from './automatization/automatization.component';
import { DevelopmentComponent } from './development/development.component';
import { SitesComponent } from './sites/sites.component';
import { ContactsComponent } from './contacts/contacts.component';
import { ProjectsComponent } from './projects/projects.component';
import { VniigazComponent } from './projects/vniigaz/vniigaz.component';
import { FaufcsComponent } from './projects/faufcs/faufcs.component';
import { Tk023Component } from './projects/tk023/tk023.component';
import { Tk465Component } from './projects/tk465/tk465.component';
import { ScvgComponent } from './projects/scvg/scvg.component';
import { IntergazComponent } from './projects/intergaz/intergaz.component';
export const routes: Routes = [
{path: "", component: HomeComponent},
{path: "about", component: AboutComponent},
// {path: "automatization", component: AutomatizationComponent},
// {path: "development", component: DevelopmentComponent},
// {path: "contacts", component: ContactsComponent},
// {path: "sites", component: SitesComponent},
// {path: "projects", component: ProjectsComponent},
// {path:'projects/vniigaz', component: VniigazComponent},
// {path:'projects/faufcs', component: FaufcsComponent},
// {path:'projects/tk023', component: Tk023Component},
// {path:'projects/tk465', component: Tk465Component},
// {path:'projects/scvg', component: ScvgComponent},
// {path:'projects/intergaz', component: IntergazComponent}
{path: "automatization", component: AutomatizationComponent},
{path: "development", component: DevelopmentComponent},
{path: "contacts", component: ContactsComponent},
{path: "sites", component: SitesComponent},
{path: "projects", component: ProjectsComponent},
{path:'projects/vniigaz', component: VniigazComponent},
{path:'projects/faufcs', component: FaufcsComponent},
{path:'projects/tk023', component: Tk023Component},
{path:'projects/tk465', component: Tk465Component},
{path:'projects/scvg', component: ScvgComponent},
{path:'projects/intergaz', component: IntergazComponent}
];

View File

@ -0,0 +1,101 @@
<div class="row jumb">
<div class="col-6">
<h1>Автоматизация процессов</h1>
<h5 class="jumb-slogan">
Забирает рутину, возвращает результат
</h5>
<request>
<button class="btn primary">Напишите нам</button>
</request>
</div>
<div class="col-6">
<img class="jumb-card" src="assets/img/automatization.jpg" alt="">
</div>
</div>
<div class="row anchor-menu">
<a (click)="anchorRouting('about')" class="anchor-menu-item">О продукте</a>
<a (click)="anchorRouting('advantage')" class="anchor-menu-item">Преимущества</a>
<a (click)="anchorRouting('solutions')" class="anchor-menu-item">Решения</a>
<a (click)="anchorRouting('reply')" class="anchor-menu-item">Обратная связь</a>
</div>
<span id="about"></span>
<div class="row bg-light">
<div class="col col-6">
<h2>О продукте</h2>
<div>Мы можем автоматизировать для вас бизнес-процессы любой сложности, от простой автогенерации документов до комплексных решений по управлению производством, АИС или ФГИС.<br/><br/>
Больше не нужно заполнять отчеты, собирать рабочие группы, напоминать им о задачах и проверять комплектность документов. Мы создадим для Вас электронного секретаря, выполняющего всю скучную работу за Вас. А его обязанности зависят от Ваших пожеланий. </div>
</div>
<div class="col-6 col">
<h2>Для кого</h2>
<ul>
<li>Органы государственной власти федерального, регионального и муниципального уровней</li>
<li>Межведомственные организации</li>
<li>Коммерческие компании с большим оборотом документов</li>
</ul>
</div>
</div>
<div class="row wide">
<img-carusel [images]="images"></img-carusel>
</div>
<span id="advantage"></span>
<div class="row bg-light">
<div class="col-6 advantage-left">
<div></div>
<div></div>
<div></div>
<div></div>
</div>
<div class="col-6 col">
<h2>Функциональные преимущества</h2>
<ul>
<li>Все рутинные задачи собираются в одной программе и выполняются автоматически</li>
<li>Снижается трудоемкость процессов, повышается их прозрачность и скорость</li>
<li>Мгновенный срез всех событий по проектам, документам, пользователям, их статистика и история</li>
<li>Гибкие процессы, позволяющие решать задачи с поправкой на жизненные обстоятельства</li>
</ul>
</div>
</div>
<span id="solutions"></span>
<div class="row solution">
<div class="col-6 col">
<h2>Решения по автоматизации</h2>
<ul>
<li>Работа по процессам доступна с любого устройства и не требует дополнительных приложений</li>
<li>Мгновенный доступ к нормативно-правовым документам и справочным материалам</li>
<li>Ограничение доступа к информации по ролям участников</li>
<li>Автозаполнение полей, отчетов и документов необходимой информацией</li>
<li>Простой интерфейс, защищающий от ошибок пользователя</li>
<li>Собственная система автоматического развертывания АИС на вашем сервере</li>
</ul>
</div>
<div class="col-6 solution-right">
<div></div>
<div></div>
<div></div>
<div></div>
</div>
</div>
<div class="row bg-light">
<reviews></reviews>
</div>
<span id="reply"></span>

View File

@ -0,0 +1,98 @@
.advantage-left{
border-radius: 16px;
background-size: cover;
background-position: center;
background-image: url("/assets/img/automatization-advantage.jpg");
aspect-ratio: 582 / 336;
align-self: flex-start;
display: flex;
flex-direction: column;
flex-wrap: wrap;
gap: 30px;
>div{
width: calc(50% - 15px);
box-shadow: 0 0 0 30px var(--clr-gr-lt);
border-radius: 16px;
aspect-ratio: 1;
&:first-child, &:last-child{
width: auto;
margin-bottom: auto;
background-color: var(--clr-gr-lt);
aspect-ratio: none;
flex-grow: 1;
flex-shrink: 1;
border-radius: 0;
}
}
}
.solution-right{
border-radius: 16px;
background-size: cover;
background-position: center;
background-image: url("/assets/img/automatization-solution.png");
aspect-ratio: 582 / 582;
display: flex;
flex-direction: row-reverse;
flex-wrap: wrap;
gap: 30px;
>div{
width: 480px;
box-shadow: 0 0 0 30px #FFF;
border-radius: 16px;
aspect-ratio: 480 / 276;
&:first-child, &:last-child{
width: auto;
margin-left: auto;
background-color: #FFF;
aspect-ratio: none;
flex-grow: 1;
flex-shrink: 1;
border-radius: 0;
}
}
}
[id]{
position: static;
margin-block: -80px 80px;
}
@media screen and (max-width: 1240px){
.advantage-left{
height: 70%;
}
.solution-right{
height: 70%;
div{width: 80%};
}
}
@media screen and (max-width: 1024px){
.solution{
flex-direction: column-reverse;
}
.solution-right{
width: 100%;
>div{
width: 85%;
box-shadow: 0 0 0 30px #FFF;
border-radius: 16px;
aspect-ratio: 480 / 276;
&:first-child, &:last-child{
width: auto;
margin-left: auto;
background-color: #FFF;
aspect-ratio: none;
flex-grow: 1;
flex-shrink: 1;
border-radius: 0;
}
}
}
}

View File

@ -0,0 +1,23 @@
import { ComponentFixture, TestBed } from '@angular/core/testing';
import { AutomatizationComponent } from './automatization.component';
describe('AutomatizationComponent', () => {
let component: AutomatizationComponent;
let fixture: ComponentFixture<AutomatizationComponent>;
beforeEach(async () => {
await TestBed.configureTestingModule({
imports: [AutomatizationComponent]
})
.compileComponents();
fixture = TestBed.createComponent(AutomatizationComponent);
component = fixture.componentInstance;
fixture.detectChanges();
});
it('should create', () => {
expect(component).toBeTruthy();
});
});

View File

@ -0,0 +1,41 @@
import { Component } from '@angular/core';
import { Router } from '@angular/router';
import { SEOService } from '../_services/seo.service';
import { ReviewsComponent } from '../reviews/reviews.component';
import { RequestComponent } from '../request/request.component';
import { ImgCaruselComponent } from '../img-carusel/img-carusel.component';
@Component({
selector: 'app-automatization',
standalone: true,
imports: [ReviewsComponent, RequestComponent, ImgCaruselComponent],
templateUrl: './automatization.component.html',
styleUrl: './automatization.component.scss'
})
export class AutomatizationComponent {
constructor(
private router:Router, private seo:SEOService
){}
anchor?:string;
anchorRouting(anchor:string){
if(anchor==this.anchor){
this.router.navigate([`/automatization`]).then(
()=>this.router.navigate([`/automatization`], { fragment: anchor })
)
}else{
this.anchor = anchor;
console.log(anchor)
this.router.navigateByUrl(`/automatization#${anchor}`)
}
}
images = [
'assets/img/carusel/carusel-01.jpg',
'assets/img/carusel/carusel-02.jpg',
'assets/img/carusel/carusel-03.jpg',
'assets/img/carusel/carusel-04.jpg',
]
}

View File

@ -0,0 +1,58 @@
<div class="row jumb">
<div class="col-6">
<h1>Контакты</h1>
<h5 class="jumb-slogan">
&#8203;
</h5>
<request>
<button class="btn primary">Напишите нам</button>
</request>
</div>
<div class="col-6">
<img class="jumb-card" src="assets/img/contacts.jpg" alt="">
</div>
</div>
<div class="row">
<div class="col-6 col">
<h2>Наши контакты</h2>
<div class="contacts">
<a href="tel:+74994900465">
<svg>
<use href="assets/ico/call_24.svg#ico"></use>
</svg>
+7 (499) 490-04-65
</a>
<a href="mailto:info@nirgroup.ru">
<svg>
<use href="assets/ico/mail_24.svg#ico"></use>
</svg>
info&#64;nirgroup.ru
</a>
<a>
<svg>
<use href="assets/ico/pin_drop_24.svg#ico"></use>
</svg>
121170,&nbsp;г.&nbsp;Москва, Кутузовский&nbsp;проспект, д.&nbsp;36, стр.&nbsp;3, офис&nbsp;222
</a>
</div>
</div>
<div class="col-6 col">
<h2>Реквизиты</h2>
<div>
Юр. адрес: 121170, г. Москва, Вн. Тер. Г. Муниципальный Округ Дорогомилово, пр-кт Кутузовский, д. 36, стр. 3, офис 222<br><br>
ИНН: 9721017423<br><br>
ОГРН: 5167746179090<br><br>
Лицензия в Минцифры: №12571
</div>
</div>
</div>
<div class="row">
<div class="col-12 map">
<iframe src="https://yandex.ru/map-widget/v1/?um=constructor%3Afe145a4a4b45bde2e2a99bed333711362bc62bb832ece6d2b39c0db729bddc40&amp;source=constructor" width="100%" height="668" frameborder="0"></iframe>
</div>
</div>

View File

@ -0,0 +1,49 @@
.contacts{
display: flex;
flex-direction: column;
gap: 20px;
line-height: 24px;
a{
color: var(--clr-black);
text-decoration: none;
display: flex;
gap: 16px;
svg{
flex-shrink: 0;
color: var(--clr-black-lt);
}
}
>div{
flex: 1 1 0;
display: flex;
flex-direction: column;
gap: 16px;
}
.logo img{
width: 152px;
height: 152px;
}
}
.map{
border-radius: 16px;
overflow: hidden;
}
iframe{
max-height: calc(50vw - 30px);
}
@media screen and (max-width: 1240px){
iframe{
max-height: calc(50vw - 30px);
}
}
@media screen and (max-width: 1024px){
.jumb-slogan{
margin-block: 0;
}
iframe{
max-height: calc(100vw - 30px);
}
}

View File

@ -0,0 +1,23 @@
import { Component } from '@angular/core';
import { SEOService } from '../_services/seo.service';
import { ReviewsComponent } from '../reviews/reviews.component';
import { RequestComponent } from '../request/request.component';
import { ImgCaruselComponent } from '../img-carusel/img-carusel.component';
@Component({
selector: 'contacts',
standalone: true,
imports: [ReviewsComponent, RequestComponent, ImgCaruselComponent],
templateUrl: './contacts.component.html',
styleUrls: ['./contacts.component.scss']
})
export class ContactsComponent {
constructor(private seo:SEOService){}
ngOnInit(){
this.seo.updateTitle('Контакты | НИР Груп');
this.seo.updateDescription('Тел: +7 (499) 490-04-65; E-mail: info@nirgroup.ru; Адрес: 121170, г. Москва, Кутузовский проспект, д. 36, стр. 3, офис 222');
this.seo.updateImage('assets/img/contacts.jpg')
}
}

View File

@ -0,0 +1,71 @@
<div class="row jumb">
<div class="col-6">
<h1>Заказная разработка ПО</h1>
<h5 class="jumb-slogan">
Создадим ПО любой сложности под любые задачи
</h5>
<request>
<button class="btn primary">Напишите нам</button>
</request>
</div>
<div class="col-6">
<img class="jumb-card" src="assets/img/development.jpg" alt="">
</div>
</div>
<div class="row anchor-menu">
<a (click)="anchorRouting('about')" class="anchor-menu-item">О продукте</a>
<a (click)="anchorRouting('advantage')" class="anchor-menu-item">Преимущества</a>
<a (click)="anchorRouting('reply')" class="anchor-menu-item">Обратная связь</a>
</div>
<a id="about"></a>
<div class="row bg-light">
<div class="col col-6">
<h2>О продукте</h2>
<div>Разработка программного обеспечения любой сложности. Помогаем автоматизировать бизнес-процессы, избавляем от рутинных задач, освобождаем ваше время для более важных дел.</div>
</div>
<div class="col-6 col">
<h2>Для кого</h2>
<ul>
<li>Органы государственной власти федерального, регионального и муниципального уровней</li>
<li>Межведомственные организации</li>
<li>Коммерческие компании</li>
</ul>
</div>
</div>
<a id="function"></a>
<div class="row wide">
<img-carusel [images]="images"></img-carusel>
</div>
<a id="advantage"></a>
<div class="row bg-light advantage">
<div class="col-6 col">
<h2>Преимущества</h2>
<ul>
<li>Понимаем Ваши задачи и правильно переводим их в ТЗ</li>
<li>Профессиональная команда разработки полного цикла с опытом работы в масштабных проектах</li>
<li>Большой опыт работы в бюрократически сложных обстоятельствах</li>
<li>Широкие Best Practices в решении нетиповых задач</li>
<li>Глубокий анализ Ваших задач и процессов</li>
<li>Разработка ПО с учетом жизненных особенностей Вашей организации</li>
<li>Тесное сотрудничество на всех этапах взаимодействий</li>
</ul>
</div>
<div class="col-6 advantage-right">
<div></div>
<div></div>
<div></div>
<div></div>
</div>
</div>
<div class="row">
<reviews></reviews>
</div>
<a id="reply"></a>

View File

@ -0,0 +1,41 @@
.advantage-right{
border-radius: 16px;
background-size: cover;
background-position: center;
background-image: url("/assets/img/development-advantage.jpg");
aspect-ratio: 582 / 336;
display: flex;
flex-direction: column;
align-self: flex-start;
flex-wrap: wrap;
gap: 30px;
>div{
width: calc(50% - 15px);
box-shadow: 0 0 0 30px var(--clr-gr-lt);
border-radius: 16px;
aspect-ratio: 1;
&:first-child, &:last-child{
width: auto;
margin-bottom: auto;
background-color: var(--clr-gr-lt);
aspect-ratio: none;
flex-grow: 1;
flex-shrink: 1;
border-radius: 0;
}
}
}
[id]{
position: static;
margin-block: -80px 80px;
}
@media screen and (max-width: 1024px){
.advantage-right{
order: -1;
}
}

View File

@ -0,0 +1,46 @@
import { Component } from '@angular/core';
import { Router } from '@angular/router';
import { SEOService } from '../_services/seo.service';
import { ReviewsComponent } from '../reviews/reviews.component';
import { RequestComponent } from '../request/request.component';
import { ImgCaruselComponent } from '../img-carusel/img-carusel.component';
@Component({
selector: 'development',
standalone: true,
imports: [ReviewsComponent, RequestComponent, ImgCaruselComponent],
templateUrl: './development.component.html',
styleUrls: ['./development.component.scss']
})
export class DevelopmentComponent {
constructor(
private router:Router, private seo:SEOService
){}
ngOnInit(){
this.seo.updateTitle('Разработка программного обеспечения (ПО) на заказ');
this.seo.updateDescription('Разработка ПО любой сложности под любые задачи. Помогаем автоматизировать бизнес-процессы, избавляем от рутинных задач, находим новые решения.');
this.seo.updateImage('assets/img/development.jpg')
}
anchor?:string;
anchorRouting(anchor:string){
if(anchor==this.anchor){
this.router.navigate([`/development`]).then(
()=>this.router.navigate([`/development`], { fragment: anchor })
)
}else{
this.anchor = anchor;
this.router.navigate([`/development`], { fragment: anchor })
}
}
images = [
'assets/img/carusel/carusel-10.jpg',
'assets/img/carusel/carusel-11.jpg',
'assets/img/carusel/carusel-12.jpg',
'assets/img/carusel/carusel-13.jpg',
]
}

View File

@ -0,0 +1,38 @@
<div class="col-12 carusel-slides">
<swiper-container [config]="config" class="swiperDesktop" slides-per-view="3" space-between="10" [centered-slides]="true" [loop]="true" pagination-enabled="true" pagination-type="fraction" pagination-el=".carusel-navigation-counter" navigation-next-el=".swiper-button-next" navigation-prev-el=".swiper-button-prev" keyboard="true" mousewheel="true">
<swiper-slide *ngFor="let img of images">
<img class="carusel-item" [src]="img" (click)="select(img)">
</swiper-slide>
</swiper-container>
<swiper-container [config]="configMobile" class="swiperMobile" slides-per-view="1" space-between="10" [centered-slides]="true" [loop]="true" pagination-enabled="true" pagination-type="fraction" pagination-el=".carusel-navigation-counter" navigation-next-el=".swiper-button-next" navigation-prev-el=".swiper-button-prev" keyboard="true" mousewheel="true">
<swiper-slide swiperSlide *ngFor="let img of images">
<img class="carusel-item" [src]="img" (click)="select(img)">
</swiper-slide>
</swiper-container>
<!-- <div class="carusel-mask"></div> -->
</div>
<div class="carusel-navigation">
<button class="swiper-button-prev">
<svg>
<use href="assets/ico/chevron_left_big_24.svg#ico"></use>
</svg>
</button>
<div class="carusel-navigation-counter"></div>
<button class="swiper-button-next">
<svg>
<use href="assets/ico/chevron_right_big_24.svg#ico"></use>
</svg>
</button>
</div>
<div class="selected" (click)="selected = null" *ngIf="selected">
<img [src]="selected" alt="">
</div>

View File

@ -0,0 +1,138 @@
:host{
width: 100%;
position: relative;
display: flex;
flex-direction: column;
align-items: center;
gap: 60px
}
.carusel-slides{
width: 100%;
position: relative;
mask-image: linear-gradient(to right, transparent 0%, #FFF 10%, #FFF 90%, transparent 100%);;
swiper-container{
margin-inline: -220px;
.carusel-item{
display: block;
width: 582px;
height: 360px;
object-fit: cover;
border-radius: 16px;
cursor: pointer;
};
}
}
.carusel-mask{
position: absolute;
left: -220px;
top: 0;
width: calc(100% + 440px);
height: 100%;
background-color: rgba(255, 255, 255, 0.63);
z-index: 1;
pointer-events: none;
// background: linear-gradient(to right, var(--clr-gr-lt) 8%, transparent 15%, transparent 85%, var(--clr-gr-lt) 92%);
}
.carusel-navigation{
display: flex;
justify-content: center;
gap: 20px;
.carusel-navigation-counter{
width: auto;
top: auto;
}
button{
position: relative;
border: none !important;
background-color: transparent !important;
left: auto;
right: auto;
padding: 0;
&::after{
content: none !important;
}
}
}
.selected{
width: 100vw;
height: 100vh;
position:fixed;
top: 0;
left: 0;
background-color: var(--clr-black-lt);
display: flex;
justify-content: center;
align-items: center;
z-index: 20;
cursor: pointer;
img{
max-width: calc(100% - 30px);
max-height: calc(100% - 30px);
}
}
.swiperMobile{
display: none;
}
@media screen and (max-width: 1240px) {
.carusel-slides{
swiper-container{
.carusel-item{
width: 95%;
height: 85%;
};
}
}
}
@media screen and (max-width: 1024px) {
:host{
gap:20px;
}
.carusel-slides{
mask-image:none;
height: 75vw;
swiper.swiperMobile{
display: block;
margin-inline: 0;
height: auto;
.carusel-item{
display: block;
width: 100%;
object-fit: cover;
border-radius: 16px;
height: auto;
border-radius: 12px;
cursor: pointer;
};
}
.swiperDesktop{
display: none;
}
}
.selected{
img{
max-width: 100%;
max-height: 100%;
}
}
}

View File

@ -0,0 +1,23 @@
import { ComponentFixture, TestBed } from '@angular/core/testing';
import { ImgCaruselComponent } from './img-carusel.component';
describe('ImgCaruselComponent', () => {
let component: ImgCaruselComponent;
let fixture: ComponentFixture<ImgCaruselComponent>;
beforeEach(async () => {
await TestBed.configureTestingModule({
imports: [ImgCaruselComponent]
})
.compileComponents();
fixture = TestBed.createComponent(ImgCaruselComponent);
component = fixture.componentInstance;
fixture.detectChanges();
});
it('should create', () => {
expect(component).toBeTruthy();
});
});

View File

@ -0,0 +1,58 @@
import { NgFor, NgIf } from '@angular/common';
import { Component, CUSTOM_ELEMENTS_SCHEMA, Input } from '@angular/core';
@Component({
selector: 'img-carusel',
standalone: true,
imports: [NgFor, NgIf],
templateUrl: './img-carusel.component.html',
styleUrl: './img-carusel.component.scss',
schemas: [CUSTOM_ELEMENTS_SCHEMA]
})
export class ImgCaruselComponent {
@Input() images!:string[];
selected?: string | null;
public config = {
slidesPerView: 3,
initialSlide: 0,
spaceBetween: 10,
centeredSlides: true,
loop: true,
pagination:{
enabled: true,
type: 'fraction',
el:'.carusel-navigation-counter'
},
navigation: {
nextEl: '.swiper-button-next',
prevEl: '.swiper-button-prev',
},
keyboard: true,
mousewheel: true
};
public configMobile = {
slidesPerView: 1,
initialSlide: 0,
spaceBetween: 10,
centeredSlides: true,
loop: true,
pagination:{
enabled: true,
type: 'fraction',
el:'.carusel-navigation-counter'
},
navigation: {
nextEl: '.swiper-button-next',
prevEl: '.swiper-button-prev',
},
keyboard: true,
mousewheel: true
};
select(img:string){
this.selected = img
}
}

View File

@ -0,0 +1,57 @@
<div class="row jumb">
<div class="col-6">
<a routerLink="/projects" class="breadcrumbs">
<svg>
<use href="assets/ico/chevron_left_big_24.svg#ico"></use>
</svg>
Все проекты
</a>
<h1>ФАУ «ФЦС»</h1>
<h5 class="jumb-slogan">
Создание корпоративного сайта
</h5>
</div>
<div class="col-6">
<img class="jumb-card fit-contain" src="assets/img/faufcs/faufcs-top.png" alt="">
</div>
</div>
<div class="row bg-light">
<div class="col col-6">
<h2>Описание</h2>
<div>У учреждения уже имелся корпоративный сайт, выполнявший все задачи. Но функционал был настолько сложно реализован, что для выполнения простых операций с контентом требовалась помощь компании разработчика. Часть задач по процессу решалось в ручном режиме, а весь огромный массив данных был неструктурирован и хаотичен.</div>
</div>
<div class="col col-6">
<h2>Бизнес-задача</h2>
<div>Требовался корпоративный сайт, с простым и удобным конструктором контента.</div>
</div>
</div>
<div class="row">
<div class="col col-6">
<h2>ИТ-задача</h2>
<div>Создание собственной платформы для сайта, на которой был реализован специфический функционал по работе с данными, а также упрощенная версия электронного документооборота с привязкой к бизнес-процессам.</div>
</div>
<div class="col col-6">
<h2>Результат</h2>
<div>Разработали конструктор сайта, сделали закрытый контур для входа в личные кабинеты сотрудников Заказчика. Создали функционал подачи заявок из внешнего контура в конкретное структурное подразделение Заказчика. Перенесли всю информацию со старого сайта на новый. Развернули и запустили новый сайт на сервере Заказчика. Создали обучающий курс по эксплуатации из 8 видеоуроков.</div>
</div>
</div>
<div class="row wide bg-light">
<img-carusel [images]="images"></img-carusel>
</div>
<!-- <div class="row">
<div class="col-12">
<h2>Как работали</h2>
</div>
<div class="col-12 longread">
<p class="br">Встретились с заказчиком по вопросу создания информационной системы. После встречи сделали презентационные макеты интерфейсов предполагаемой системы, а также видеоролик с демонстрацией работы пользователя с ней. Заказчику все понравилось. Далее помогли Заказчику с написанием корректного ТЗ. После чего подписали договор и приступили к работе. Договор предусматривал сначала создание прототипа системы и, в случае одобрения Заказчиком результатов работ — дальнейшую разработку полноценной версии.</p>
<img src="assets/img/faufcs/faufcs03.png" alt="">
<p>В прототипе Заказчику было важно посмотреть, как работают отдельные элементы системы: автоматическое определение геолокации фотографий, загруженных в систему, а также запись и считывание rfid-меток. Для прототипа разработали макеты и согласовали с заказчиком, после чего разработали требуемый пр</p>
<p class="br">Пока велась разработка доп модулей, проводили демонстрацию работы системы сотрудникам Минцифры в рамках заявки на включение системы в реестр отечественного ПО. В результате разработали доп модули, синхронизировали их с системой, помогли Заказчику развернуть систему на их сервере и ввести систему в эксплуатацию.<br>В настоящее время занимаемся технической поддержкой системы. </p>
<p>Так как основной принцип системы был спроектирован и заложен на этапе прототипа, то подготовка новых макетов не заняла много времени. Согласование макетов с Заказчиком прошли также быстро и приступили к разработке. Полноценную систему создали за 4 месяца и сдали ее Заказчику.<br>После приемки помогали Заказчику в подготовке документов на регистрацию системы в Роспатенте, а также на включение системы в реестр отечественного ПО. Спустя 3 месяца с начала эксплуатации системы Заказчик обратился с предложение разработать дополнительные модули (доп функционал) к системе. Время на разработку новых модулей было немного (Заказчик торопил), поэтому проектирование макетов и разработка модулей велась параллельно. Здесь нам помог предыдущий опыт разработки данной системы.</p>
<img src="assets/img/faufcs/faufcs04.png" alt="">
</div>
</div> -->

View File

@ -0,0 +1,26 @@
import { Component } from '@angular/core';
import { SEOService } from '../../_services/seo.service';
import { RequestComponent } from '../../request/request.component';
import { ImgCaruselComponent } from '../../img-carusel/img-carusel.component';
import { RouterLink } from '@angular/router';
@Component({
selector: 'faufcs',
standalone: true,
imports: [RequestComponent, ImgCaruselComponent, RouterLink],
templateUrl: './faufcs.component.html',
styleUrls: ['./faufcs.component.scss']
})
export class FaufcsComponent {
constructor(private seo:SEOService){}
images = [
'assets/img/faufcs/faufcs01.png',
'assets/img/faufcs/faufcs02.png',
'assets/img/faufcs/faufcs03.png',
'assets/img/faufcs/faufcs04.png',
'assets/img/faufcs/faufcs05.png',
]
}

View File

@ -0,0 +1,57 @@
<div class="row jumb">
<div class="col-6">
<a href routerLink="/projects" class="breadcrumbs">
<svg>
<use href="assets/ico/chevron_left_big_24.svg#ico"></use>
</svg>
Все проекты
</a>
<h1>ИНТЕРГАЗСЕРТ</h1>
<h5 class="jumb-slogan">
Создание автоматизированной платрформы допуска продукции
</h5>
</div>
<div class="col-6">
<img class="jumb-card fit-contain" src="assets/img/intergaz/intergaz-top.png" alt="">
</div>
</div>
<div class="row bg-light">
<div class="col col-6">
<h2>Описание</h2>
<div>Рабочая информация хранилась частично в бумажном, частично в электронном виде, в нескольких местах. Их поиск и обработка замедляли все процессы и увеличивали нагрузку на сотрудников. Руководство хотело получать информацию об эффективности сотрудников и иметь на руках зафиксированные доказательства проведенных работ на случай возникновения претензий у других организаций.</div>
</div>
<div class="col col-6">
<h2>Бизнес-задача</h2>
<div>Создание единой стандартизированной базы данных по процессам оценки соответствия в системе добровольной сертификации ИНТЕРГАЗСЕРТ</div>
</div>
</div>
<div class="row">
<div class="col col-6">
<h2>ИТ-задача</h2>
<div>Разработать информационную систему для сбора, регистрации и учета информации</div>
</div>
<div class="col col-6">
<h2>Результат</h2>
<div>Разработали и внедрили систему, превосходящую по своим возможностям запланированный функционал. Оказали поддержку по аккредитации данной системы в реестре отечественного ПО Минцифры.</div>
</div>
</div>
<div class="row wide bg-light">
<img-carusel [images]="images"></img-carusel>
</div>
<!-- <div class="row">
<div class="col-12">
<h2>Как работали</h2>
</div>
<div class="col-12 longread">
<p class="br">Встретились с заказчиком по вопросу создания информационной системы. После встречи сделали презентационные макеты интерфейсов предполагаемой системы, а также видеоролик с демонстрацией работы пользователя с ней. Заказчику все понравилось. Далее помогли Заказчику с написанием корректного ТЗ. После чего подписали договор и приступили к работе. Договор предусматривал сначала создание прототипа системы и, в случае одобрения Заказчиком результатов работ — дальнейшую разработку полноценной версии.</p>
<img src="assets/img/intergaz/intergaz03.png" alt="">
<p>В прототипе Заказчику было важно посмотреть, как работают отдельные элементы системы: автоматическое определение геолокации фотографий, загруженных в систему, а также запись и считывание rfid-меток. Для прототипа разработали макеты и согласовали с заказчиком, после чего разработали требуемый пр</p>
<p class="br">Пока велась разработка доп модулей, проводили демонстрацию работы системы сотрудникам Минцифры в рамках заявки на включение системы в реестр отечественного ПО. В результате разработали доп модули, синхронизировали их с системой, помогли Заказчику развернуть систему на их сервере и ввести систему в эксплуатацию.<br>В настоящее время занимаемся технической поддержкой системы. </p>
<p>Так как основной принцип системы был спроектирован и заложен на этапе прототипа, то подготовка новых макетов не заняла много времени. Согласование макетов с Заказчиком прошли также быстро и приступили к разработке. Полноценную систему создали за 4 месяца и сдали ее Заказчику.<br>После приемки помогали Заказчику в подготовке документов на регистрацию системы в Роспатенте, а также на включение системы в реестр отечественного ПО. Спустя 3 месяца с начала эксплуатации системы Заказчик обратился с предложение разработать дополнительные модули (доп функционал) к системе. Время на разработку новых модулей было немного (Заказчик торопил), поэтому проектирование макетов и разработка модулей велась параллельно. Здесь нам помог предыдущий опыт разработки данной системы.</p>
<img src="assets/img/intergaz/intergaz04.png" alt="">
</div>
</div> -->

View File

@ -0,0 +1,24 @@
import { Component } from '@angular/core';
import { SEOService } from '../../_services/seo.service';
import { RequestComponent } from '../../request/request.component';
import { ImgCaruselComponent } from '../../img-carusel/img-carusel.component';
import { RouterLink } from '@angular/router';
@Component({
selector: 'intergaz',
standalone: true,
imports: [RequestComponent, ImgCaruselComponent, RouterLink],
templateUrl: './intergaz.component.html',
styleUrls: ['./intergaz.component.scss']
})
export class IntergazComponent {
constructor(private seo:SEOService){}
images = [
'assets/img/intergaz/intergaz01.png',
'assets/img/intergaz/intergaz02.png',
'assets/img/intergaz/intergaz03.png',
'assets/img/intergaz/intergaz04.png',
]
}

View File

@ -0,0 +1,108 @@
<div class="row jumb">
<div class="col-6">
<h1>Ключевые проекты</h1>
<h5 class="jumb-slogan">
&#8203;
</h5>
<request>
<button class="btn primary">Напишите нам</button>
</request>
</div>
<div class="col-6">
<img class="jumb-card" src="assets/img/projects.jpg" alt="">
</div>
</div>
<div class="row bg-light">
<div class="col-4">
<h2>Уважение ко всем</h2>
</div>
<div class="col-8">
Мы с уважением относимся к каждому клиенту и к себе. Поэтому мы работаем абсолютно прозрачно, четко укладываемся в оговоренные сроки и внимательно подходим к изучению стоящих перед Вами задач. Наша безупречная репутация сформирована восторженными отзывами клиентов.
</div>
</div>
<div class="row">
<div class="col-12 center">
<h2>Наши проекты</h2>
</div>
<div class="projects col-12">
<div class="project">
<img class="project-logo" src="assets/img/logo_tk23.svg" alt="">
<div class="project-type">
Интернет-портал
</div>
<h4 class="project-name">
ТК 023
</h4>
<button class="btn white" routerLink="../projects/tk023">
Подробнее
</button>
</div>
<div class="project">
<img class="project-logo" src="assets/img/logo_vniigazcert.svg" alt="">
<div class="project-type">
Корпоративный портал
</div>
<h4 class="project-name">
«ВНИИГАЗ-Сертификат»
</h4>
<button class="btn white" routerLink="../projects/vniigaz">
Подробнее
</button>
</div>
<div class="project">
<img class="project-logo" src="assets/img/logo_gazprom.svg" alt="">
<div class="project-type">
Автоматизированная платформа допуска продукции
</div>
<h4 class="project-name">
ЧУ СЦ «ВНИИГАЗ-Сертификат»
</h4>
<button class="btn white" routerLink="../projects/scvg">
Подробнее
</button>
</div>
<div class="project">
<img class="project-logo" src="assets/img/logo_tk465.png" alt="">
<div class="project-type">
Автоматизированная информационная система
</div>
<h4 class="project-name">
ТК 465
</h4>
<button class="btn white" routerLink="../projects/tk465">
Подробнее
</button>
</div>
<div class="project">
<img class="project-logo" src="assets/img/logo_fcns.svg" alt="">
<div class="project-type">
Корпоративный сайт
</div>
<h4 class="project-name">
ФАУ «ФЦС»
</h4>
<button class="btn white" routerLink="../projects/faufcs">
Подробнее
</button>
</div>
<div class="project">
<img class="project-logo" src="assets/img/logo_igc.png" alt="">
<div class="project-type">
Корпоративная система
</div>
<h4 class="project-name">
ИНТЕРГАЗСЕРТ
</h4>
<button class="btn white" routerLink="../projects/intergaz">
Подробнее
</button>
</div>
</div>
</div>
<div class="row bg-light">
<reviews></reviews>
</div>

View File

@ -0,0 +1,45 @@
.project{
display: flex;
flex-direction: column;
align-items: center;
height: 416px;
padding: 30px;
flex: 1 1 0;
background-color: #FFF;
flex-basis: 35%;
.project-logo{
width: 238px;
height: 136px;
object-fit: contain;
margin-bottom: 30px;
}
.project-type{
margin-bottom: 10px;
text-align: center;
}
.project-name{
text-align: center;
}
button{
margin-top: auto;
}
}
.projects{
display: flex;
flex-direction: row;
flex-wrap: wrap;
background-color: var(--clr-gr);
gap: 1px;
}
@media screen and (max-width: 1024px){
.project{
height: auto;
padding: 30px 0 60px 0;
button{
margin-top: 30px;
}
}
}

View File

@ -0,0 +1,21 @@
import { Component } from '@angular/core';
import { SEOService } from '../_services/seo.service';
import { ReviewsComponent } from '../reviews/reviews.component';
import { RequestComponent } from '../request/request.component';
import { ImgCaruselComponent } from '../img-carusel/img-carusel.component';
import { RouterLink } from '@angular/router';
@Component({
selector: 'projects',
standalone: true,
imports: [ReviewsComponent, RequestComponent, ImgCaruselComponent, RouterLink],
templateUrl: './projects.component.html',
styleUrls: ['./projects.component.scss']
})
export class ProjectsComponent {
constructor(private seo:SEOService){}
}

View File

@ -0,0 +1,57 @@
<div class="row jumb">
<div class="col-6">
<a routerLink="/projects" class="breadcrumbs">
<svg>
<use href="assets/ico/chevron_left_big_24.svg#ico"></use>
</svg>
Все проекты
</a>
<h1>ЧУ СЦ «ВНИИГАЗ-Сертификат»</h1>
<h5 class="jumb-slogan">
Создание автоматизированной платформы допуска продукции
</h5>
</div>
<div class="col-6">
<img class="jumb-card fit-contain" src="assets/img/scvg/scvg-top.png" alt="">
</div>
</div>
<div class="row bg-light">
<div class="col col-6">
<h2>Описание</h2>
<div>Процесс допуска труб к эксплуатации в ПАО «Газпром» сопряжен с большим количеством обязательных тестов и процедур. У каждого этапа есть ряд требований и нормативов. Из-за непрозрачности этого процесс затягивался на продолжительные сроки. Появилось понимание, что его можно ускорить и снизить риски, связанные с человеческим фактором с помощью автоматизации.</div>
</div>
<div class="col col-6">
<h2>Бизнес-задача</h2>
<div>Оцифровать процесс оценки продукции поставщиков и создать удобную рабочую среду, единую для всех участников.</div>
</div>
</div>
<div class="row">
<div class="col col-6">
<h2>ИТ-задача</h2>
<div>Разработать автоматизированную цифровую платформу для удаленного взаимодействия участников работ, рассмотрения проектов правил и тех.стандартов.</div>
</div>
<div class="col col-6">
<h2>Результат</h2>
<div>Система была разработана в срок, в последствии было проведено 4 волны модернизации. На данный момент она является основным ПО для решения вопросов допуска трубной продукции к применению на объектах ПАО «Газпром»</div>
</div>
</div>
<div class="row wide bg-light">
<img-carusel [images]="images"></img-carusel>
</div>
<!-- <div class="row">
<div class="col-12">
<h2>Как работали</h2>
</div>
<div class="col-12 longread">
<p class="br">Встретились с заказчиком по вопросу создания информационной системы. После встречи сделали презентационные макеты интерфейсов предполагаемой системы, а также видеоролик с демонстрацией работы пользователя с ней. Заказчику все понравилось. Далее помогли Заказчику с написанием корректного ТЗ. После чего подписали договор и приступили к работе. Договор предусматривал сначала создание прототипа системы и, в случае одобрения Заказчиком результатов работ — дальнейшую разработку полноценной версии.</p>
<img src="assets/img/scvg/scvg03.png" alt="">
<p>В прототипе Заказчику было важно посмотреть, как работают отдельные элементы системы: автоматическое определение геолокации фотографий, загруженных в систему, а также запись и считывание rfid-меток. Для прототипа разработали макеты и согласовали с заказчиком, после чего разработали требуемый пр</p>
<p class="br">Пока велась разработка доп модулей, проводили демонстрацию работы системы сотрудникам Минцифры в рамках заявки на включение системы в реестр отечественного ПО. В результате разработали доп модули, синхронизировали их с системой, помогли Заказчику развернуть систему на их сервере и ввести систему в эксплуатацию.<br>В настоящее время занимаемся технической поддержкой системы. </p>
<p>Так как основной принцип системы был спроектирован и заложен на этапе прототипа, то подготовка новых макетов не заняла много времени. Согласование макетов с Заказчиком прошли также быстро и приступили к разработке. Полноценную систему создали за 4 месяца и сдали ее Заказчику.<br>После приемки помогали Заказчику в подготовке документов на регистрацию системы в Роспатенте, а также на включение системы в реестр отечественного ПО. Спустя 3 месяца с начала эксплуатации системы Заказчик обратился с предложение разработать дополнительные модули (доп функционал) к системе. Время на разработку новых модулей было немного (Заказчик торопил), поэтому проектирование макетов и разработка модулей велась параллельно. Здесь нам помог предыдущий опыт разработки данной системы.</p>
<img src="assets/img/scvg/scvg04.png" alt="">
</div>
</div> -->

View File

@ -0,0 +1,26 @@
import { Component } from '@angular/core';
import { SEOService } from '../../_services/seo.service';
import { RequestComponent } from '../../request/request.component';
import { ImgCaruselComponent } from '../../img-carusel/img-carusel.component';
import { RouterLink } from '@angular/router';
@Component({
selector: 'app-scvg',
standalone: true,
imports: [RequestComponent, ImgCaruselComponent, RouterLink],
templateUrl: './scvg.component.html',
styleUrls: ['./scvg.component.scss']
})
export class ScvgComponent {
constructor(private seo:SEOService){}
images = [
'assets/img/scvg/scvg01.png',
'assets/img/scvg/scvg02.png',
'assets/img/scvg/scvg03.png',
'assets/img/scvg/scvg04.png',
'assets/img/scvg/scvg05.png',
]
}

View File

@ -0,0 +1,57 @@
<div class="row jumb">
<div class="col-6">
<a routerLink="/projects" class="breadcrumbs">
<svg>
<use href="assets/ico/chevron_left_big_24.svg#ico"></use>
</svg>
Все проекты
</a>
<h1>ТК-023</h1>
<h5 class="jumb-slogan">
Создание интернет-портала с АИС
</h5>
</div>
<div class="col-6">
<img class="jumb-card fit-contain" src="assets/img/tk023/tk023-top.png" alt="">
</div>
</div>
<div class="row bg-light">
<div class="col col-6">
<h2>Описание</h2>
<div>Заказчику необходимо было освободить секретариат от трудозатратной рутинной деятельности. В ходе разработки регулярно добавлялись новые пожелания к логике процессов. На финальном этапе вскрылись критичные изъяны в описанных в ТЗ процессах. Что повлекло глубокую модернизацию уже готового продукта.</div>
</div>
<div class="col col-6">
<h2>Бизнес-задача</h2>
<div>Оцифровка рутинных процессов с возможностью контроля их исполнения и сбора аналитических данных.</div>
</div>
</div>
<div class="row">
<div class="col col-6">
<h2>ИТ-задача</h2>
<div>Создание удобного облачного решения по автоматизации процессов с разветвленной ролевой моделью, автогенерацией требуемых документов и сбором моментальной статистики</div>
</div>
<div class="col col-6">
<h2>Результат</h2>
<div>Все оговоренные работы были выполнены к указанному сроку. Дальнейшая модернизация была проведена всего за несколько месяцев. Портал стал более функциональным за счет дополнительных возможностей. В настоящее время осуществляется техническая поддержка.</div>
</div>
</div>
<div class="row wide bg-light">
<img-carusel [images]="images"></img-carusel>
</div>
<!-- <div class="row">
<div class="col-12">
<h2>Как работали</h2>
</div>
<div class="col-12 longread">
<p class="br">Встретились с заказчиком по вопросу создания информационной системы. После встречи сделали презентационные макеты интерфейсов предполагаемой системы, а также видеоролик с демонстрацией работы пользователя с ней. Заказчику все понравилось. Далее помогли Заказчику с написанием корректного ТЗ. После чего подписали договор и приступили к работе. Договор предусматривал сначала создание прототипа системы и, в случае одобрения Заказчиком результатов работ — дальнейшую разработку полноценной версии.</p>
<img src="assets/img/tk023/tk02303.png" alt="">
<p>В прототипе Заказчику было важно посмотреть, как работают отдельные элементы системы: автоматическое определение геолокации фотографий, загруженных в систему, а также запись и считывание rfid-меток. Для прототипа разработали макеты и согласовали с заказчиком, после чего разработали требуемый пр</p>
<p class="br">Пока велась разработка доп модулей, проводили демонстрацию работы системы сотрудникам Минцифры в рамках заявки на включение системы в реестр отечественного ПО. В результате разработали доп модули, синхронизировали их с системой, помогли Заказчику развернуть систему на их сервере и ввести систему в эксплуатацию.<br>В настоящее время занимаемся технической поддержкой системы. </p>
<p>Так как основной принцип системы был спроектирован и заложен на этапе прототипа, то подготовка новых макетов не заняла много времени. Согласование макетов с Заказчиком прошли также быстро и приступили к разработке. Полноценную систему создали за 4 месяца и сдали ее Заказчику.<br>После приемки помогали Заказчику в подготовке документов на регистрацию системы в Роспатенте, а также на включение системы в реестр отечественного ПО. Спустя 3 месяца с начала эксплуатации системы Заказчик обратился с предложение разработать дополнительные модули (доп функционал) к системе. Время на разработку новых модулей было немного (Заказчик торопил), поэтому проектирование макетов и разработка модулей велась параллельно. Здесь нам помог предыдущий опыт разработки данной системы.</p>
<img src="assets/img/tk023/tk02304.png" alt="">
</div>
</div> -->

View File

@ -0,0 +1,25 @@
import { Component } from '@angular/core';
import { SEOService } from '../../_services/seo.service';
import { RequestComponent } from '../../request/request.component';
import { ImgCaruselComponent } from '../../img-carusel/img-carusel.component';
import { RouterLink } from '@angular/router';
@Component({
selector: 'tk023',
standalone: true,
imports: [RequestComponent, ImgCaruselComponent, RouterLink],
templateUrl: './tk023.component.html',
styleUrls: ['./tk023.component.scss']
})
export class Tk023Component {
constructor(private seo:SEOService){}
images = [
'assets/img/tk023/tk02301.png',
'assets/img/tk023/tk02302.png',
'assets/img/tk023/tk02303.png',
'assets/img/tk023/tk02304.png',
'assets/img/tk023/tk02305.png',
]
}

View File

@ -0,0 +1,57 @@
<div class="row jumb">
<div class="col-6">
<a routerLink="/projects" class="breadcrumbs">
<svg>
<use href="assets/ico/chevron_left_big_24.svg#ico"></use>
</svg>
Все проекты
</a>
<h1>ТК-465</h1>
<h5 class="jumb-slogan">
Создание Автоматизированной Информационной Системы
</h5>
</div>
<div class="col-6">
<img class="jumb-card fit-contain" src="assets/img/tk465/tk465-top.png" alt="">
</div>
</div>
<div class="row bg-light">
<div class="col col-6">
<h2>Описание</h2>
<div>Деятельность ТК осуществлялась через стандартный офисный набор ПО и почту. С ростом рабочей нагрузки эффективность сотрудников начала стремительно снижаться, появились ошибки и запутанность процессов. Отсутствовала системность и контроль, что сказывалось на результатах.</div>
</div>
<div class="col col-6">
<h2>Бизнес-задача</h2>
<div>Автоматизация процессов деятельности ТК-465 с повышением доступности актуальной нормативно-правовой базы для участников. Упрощение работы с ТК-465 для всех заинтересованных компаний, в том числе не являющихся членами ТК</div>
</div>
</div>
<div class="row">
<div class="col col-6">
<h2>ИТ-задача</h2>
<div>Создание облачной системы с гибкими процессами и сложной ролевой системой</div>
</div>
<div class="col col-6">
<h2>Результат</h2>
<div>Изначально описанные процессы не отражали реального состояния дел. В ходе разработки, совместно с Заказчиком, удалось в точности воспроизвести процессуальный ход внутри системы, уложившись в оговоренный срок.</div>
</div>
</div>
<div class="row wide bg-light">
<img-carusel [images]="images"></img-carusel>
</div>
<!-- <div class="row">
<div class="col-12">
<h2>Как работали</h2>
</div>
<div class="col-12 longread">
<p class="br">Встретились с заказчиком по вопросу создания информационной системы. После встречи сделали презентационные макеты интерфейсов предполагаемой системы, а также видеоролик с демонстрацией работы пользователя с ней. Заказчику все понравилось. Далее помогли Заказчику с написанием корректного ТЗ. После чего подписали договор и приступили к работе. Договор предусматривал сначала создание прототипа системы и, в случае одобрения Заказчиком результатов работ — дальнейшую разработку полноценной версии.</p>
<img src="assets/img/tk465/tk46503.png" alt="">
<p>В прототипе Заказчику было важно посмотреть, как работают отдельные элементы системы: автоматическое определение геолокации фотографий, загруженных в систему, а также запись и считывание rfid-меток. Для прототипа разработали макеты и согласовали с заказчиком, после чего разработали требуемый пр</p>
<p class="br">Пока велась разработка доп модулей, проводили демонстрацию работы системы сотрудникам Минцифры в рамках заявки на включение системы в реестр отечественного ПО. В результате разработали доп модули, синхронизировали их с системой, помогли Заказчику развернуть систему на их сервере и ввести систему в эксплуатацию.<br>В настоящее время занимаемся технической поддержкой системы. </p>
<p>Так как основной принцип системы был спроектирован и заложен на этапе прототипа, то подготовка новых макетов не заняла много времени. Согласование макетов с Заказчиком прошли также быстро и приступили к разработке. Полноценную систему создали за 4 месяца и сдали ее Заказчику.<br>После приемки помогали Заказчику в подготовке документов на регистрацию системы в Роспатенте, а также на включение системы в реестр отечественного ПО. Спустя 3 месяца с начала эксплуатации системы Заказчик обратился с предложение разработать дополнительные модули (доп функционал) к системе. Время на разработку новых модулей было немного (Заказчик торопил), поэтому проектирование макетов и разработка модулей велась параллельно. Здесь нам помог предыдущий опыт разработки данной системы.</p>
<img src="assets/img/tk465/tk46504.png" alt="">
</div>
</div> -->

View File

@ -0,0 +1,26 @@
import { Component } from '@angular/core';
import { SEOService } from '../../_services/seo.service';
import { RequestComponent } from '../../request/request.component';
import { ImgCaruselComponent } from '../../img-carusel/img-carusel.component';
import { RouterLink } from '@angular/router';
@Component({
selector: 'app-tk465',
standalone: true,
imports: [RequestComponent, ImgCaruselComponent, RouterLink],
templateUrl: './tk465.component.html',
styleUrls: ['./tk465.component.scss']
})
export class Tk465Component {
constructor(private seo:SEOService){}
images = [
'assets/img/tk465/tk46501.png',
'assets/img/tk465/tk46502.png',
'assets/img/tk465/tk46503.png',
'assets/img/tk465/tk46504.png',
'assets/img/tk465/tk46505.png',
]
}

View File

@ -0,0 +1,57 @@
<div class="row jumb">
<div class="col-6">
<a routerLink="/projects" class="breadcrumbs">
<svg>
<use href="assets/ico/chevron_left_big_24.svg#ico"></use>
</svg>
Все проекты
</a>
<h1>ВНИИГАЗ-Сертификат</h1>
<h5 class="jumb-slogan">
Создание корпоративного портала
</h5>
</div>
<div class="col-6">
<img class="jumb-card fit-contain" src="assets/img/vniigaz/vniigaz-top.png" alt="">
</div>
</div>
<div class="row bg-light">
<div class="col col-6">
<h2>Описание</h2>
<div>Из-за колоссальных объемов документооборота весь процесс терял прозрачность и регулярно допускались человеческие ошибки, способные привести к серьезным последствиям. А отсутствие возможности отследить их даже в ретроспективе мешало исправлению злокачественных элементов процесса.</div>
</div>
<div class="col col-6">
<h2>Бизнес-задача</h2>
<div>Предоставить удобный доступ к данным из реестров для всех участников процесса, актуализировать имеющиеся данные и отслеживать сроки истечения документов.</div>
</div>
</div>
<div class="row">
<div class="col col-6">
<h2>ИТ-задача</h2>
<div>Создание облачного решения для ведения реестров с моментальным сбором статистики и отслеживанием.</div>
</div>
<div class="col col-6">
<h2>Результат</h2>
<div>Проект был реализован за 4 месяца, с учетом дополнительных пожеланий заказчика. При переходе на систему мы конвертировали более 50 тысяч записей под новую структуру хранилища с более широким функционалом. Появились возможности многоуровневой системы фильтров и сквозной аналитики процессов.</div>
</div>
</div>
<div class="row wide bg-light">
<img-carusel [images]="images"></img-carusel>
</div>
<!--
<div class="row">
<div class="col-12">
<h2>Как работали</h2>
</div>
<div class="col-12 longread">
<p class="br">Встретились с заказчиком по вопросу создания информационной системы. После встречи сделали презентационные макеты интерфейсов предполагаемой системы, а также видеоролик с демонстрацией работы пользователя с ней. Заказчику все понравилось. Далее помогли Заказчику с написанием корректного ТЗ. После чего подписали договор и приступили к работе. Договор предусматривал сначала создание прототипа системы и, в случае одобрения Заказчиком результатов работ — дальнейшую разработку полноценной версии.</p>
<img src="assets/img/vniigaz/vniigaz03.png" alt="">
<p>В прототипе Заказчику было важно посмотреть, как работают отдельные элементы системы: автоматическое определение геолокации фотографий, загруженных в систему, а также запись и считывание rfid-меток. Для прототипа разработали макеты и согласовали с заказчиком, после чего разработали требуемый пр</p>
<p class="br">Пока велась разработка доп модулей, проводили демонстрацию работы системы сотрудникам Минцифры в рамках заявки на включение системы в реестр отечественного ПО. В результате разработали доп модули, синхронизировали их с системой, помогли Заказчику развернуть систему на их сервере и ввести систему в эксплуатацию.<br>В настоящее время занимаемся технической поддержкой системы. </p>
<p>Так как основной принцип системы был спроектирован и заложен на этапе прототипа, то подготовка новых макетов не заняла много времени. Согласование макетов с Заказчиком прошли также быстро и приступили к разработке. Полноценную систему создали за 4 месяца и сдали ее Заказчику.<br>После приемки помогали Заказчику в подготовке документов на регистрацию системы в Роспатенте, а также на включение системы в реестр отечественного ПО. Спустя 3 месяца с начала эксплуатации системы Заказчик обратился с предложение разработать дополнительные модули (доп функционал) к системе. Время на разработку новых модулей было немного (Заказчик торопил), поэтому проектирование макетов и разработка модулей велась параллельно. Здесь нам помог предыдущий опыт разработки данной системы.</p>
<img src="assets/img/vniigaz/vniigaz04.png" alt="">
</div>
</div> -->

View File

@ -0,0 +1,25 @@
import { Component } from '@angular/core';
import { SEOService } from '../../_services/seo.service';
import { RequestComponent } from '../../request/request.component';
import { ImgCaruselComponent } from '../../img-carusel/img-carusel.component';
import { RouterLink } from '@angular/router';
@Component({
selector: 'vniigaz',
standalone: true,
imports: [RequestComponent, ImgCaruselComponent, RouterLink],
templateUrl: './vniigaz.component.html',
styleUrls: ['./vniigaz.component.scss']
})
export class VniigazComponent {
constructor(private seo:SEOService){}
images = [
'assets/img/vniigaz/vniigaz01.png',
'assets/img/vniigaz/vniigaz02.png',
'assets/img/vniigaz/vniigaz03.png',
'assets/img/vniigaz/vniigaz04.png',
]
}

View File

@ -1,5 +1,5 @@
import { NgFor, NgIf } from '@angular/common';
import { Component, CUSTOM_ELEMENTS_SCHEMA, ElementRef, ViewChild } from '@angular/core';
import { Component, CUSTOM_ELEMENTS_SCHEMA, ViewChild } from '@angular/core';
@Component({
selector: 'reviews',

View File

@ -0,0 +1,99 @@
<div class="row jumb">
<div class="col-6">
<h1>Разработка информационно нагруженных сайтов</h1>
<h5 class="jumb-slogan">
Удобный и безопасный сайт для работы с массивными данными и документами
</h5>
<request>
<button class="btn primary">Напишите нам</button>
</request>
</div>
<div class="col-6">
<img class="jumb-card" src="assets/img/sites.jpg" alt="">
</div>
</div>
<div class="row anchor-menu">
<a (click)="anchorRouting('about')" class="anchor-menu-item">О продукте</a>
<a (click)="anchorRouting('advantage')" class="anchor-menu-item">Особенности</a>
<a (click)="anchorRouting('function')" class="anchor-menu-item">Функционал</a>
<a (click)="anchorRouting('reply')" class="anchor-menu-item">Обратная связь</a>
</div>
<a id="about"></a>
<div class="row bg-light">
<div class="col col-6">
<h2>О продукте</h2>
<div> <div>Разрабатываем сайты на собственной платформе, способные успешно работать с большим количеством информации и документов. <br/><br/>
Все данные хранятся в безопасности на вашем сервере, функционал легко адаптируется под Ваши задачи, а простота работы с контентом позволяет размещать и редактировать его, без привлечения ИТ-специалистов. </div></div>
</div>
<div class="col-6 col">
<h2>Для кого</h2>
<ul>
<li>Органы государственной власти федерального, регионального и муниципального уровней</li>
<li>Межведомственные организации</li>
<li>Крупные и средние коммерческие компании</li>
</ul>
</div>
</div>
<div class="row wide">
<img-carusel [images]="images"></img-carusel>
</div>
<a id="advantage"></a>
<div class="row bg-light">
<div class="col-6 advantage-left">
<div></div>
<div></div>
<div></div>
<div></div>
</div>
<div class="col-6 col">
<h2>Особенности платформы</h2>
<ul>
<li>Возможность добавить любой стандартный и нестандартный функционал напрямую в сайт</li>
<li>Автоматическая стилизация размещаемого контента согласно вашему брендбуку</li>
<li>Простой и понятный интерфейс. Не требуется привлечение ИТ-специалиста для редактирования</li>
<li>Многоуровневая ролевая система с настраиваемыми правилами для каждой роли</li>
<li>Возможность «заморозки» сайта с сохранением всех данных </li>
<li>Локальное хранение всех данных на ваших серверах</li>
<li>Отсутствие готовых решений по взлому сайта злоумышлениками</li>
</ul>
</div>
</div>
<a id="function"></a>
<div class="row">
<div class="col-6 col">
<h2>Функционал</h2>
<ul>
<li>Встроенная работа с реестрами, документами, массивами данных</li>
<li>Удобное создание локалей многоязычных сайтов</li>
<li>Тонкая настройка учетных записей пользователей</li>
<li>Система обработки входящих заявок</li>
<li>Гибкий функционал с любым дизайном</li>
</ul>
</div>
<div class="col-6 solution-right">
<div></div>
<div></div>
<div></div>
<div></div>
</div>
</div>
<div class="row bg-light">
<reviews></reviews>
</div>
<a id="reply"></a>

View File

@ -0,0 +1,63 @@
.advantage-left{
border-radius: 16px;
background-size: cover;
background-position: center;
background-image: url("/assets/img/sites-features.jpg");
aspect-ratio: 582 / 336;
align-self: center;
display: flex;
flex-direction: column;
flex-wrap: wrap;
gap: 30px;
>div{
width: calc(50% - 15px);
box-shadow: 0 0 0 30px var(--clr-gr-lt);
border-radius: 16px;
aspect-ratio: 1;
&:first-child, &:last-child{
width: auto;
margin-bottom: auto;
background-color: var(--clr-gr-lt);
aspect-ratio: none;
flex-grow: 1;
flex-shrink: 1;
border-radius: 0;
}
}
}
.solution-right{
border-radius: 16px;
background-size: cover;
background-position: center;
background-image: url("/assets/img/sites-functions.jpg");
aspect-ratio: 582 / 336;
align-self: center;
display: flex;
flex-direction: column-reverse;
flex-wrap: wrap;
gap: 30px;
order: -1;
>div{
width: calc(50% - 15px);
box-shadow: 0 0 0 30px #FFF;
border-radius: 16px;
aspect-ratio: 1;
&:first-child, &:last-child{
width: auto;
margin-bottom: auto;
background-color: #FFF;
aspect-ratio: none;
flex-grow: 1;
flex-shrink: 1;
border-radius: 0;
}
}
}
[id]{
position: static;
margin-block: -80px 80px;
}

View File

@ -0,0 +1,42 @@
import { Component } from '@angular/core';
import { Router } from '@angular/router';
import { SEOService } from '../_services/seo.service';
import { ReviewsComponent } from '../reviews/reviews.component';
import { RequestComponent } from '../request/request.component';
import { ImgCaruselComponent } from '../img-carusel/img-carusel.component';
@Component({
selector: 'sites',
standalone: true,
imports: [ReviewsComponent, RequestComponent, ImgCaruselComponent],
templateUrl: './sites.component.html',
styleUrls: ['./sites.component.scss']
})
export class SitesComponent {
constructor(
private router:Router, private seo:SEOService
){};
anchor?:string;
anchorRouting(anchor:string){
if(anchor==this.anchor){
this.router.navigate([`/sites`]).then(
()=>this.router.navigate([`/sites`], { fragment: anchor })
)
}else{
this.anchor = anchor;
this.router.navigate([`/sites`], { fragment: anchor })
}
}
images = [
'assets/img/carusel/carusel-05.jpg',
'assets/img/carusel/carusel-06.jpg',
'assets/img/carusel/carusel-07.jpg',
'assets/img/carusel/carusel-08.jpg',
'assets/img/carusel/carusel-09.jpg',
]
}