Compare commits

..

10 Commits

Author SHA1 Message Date
Zotov Ivan Yuryevich
96f2638668 chore: update types of privacy policy and terms of use
Some checks failed
release-tag / build-and-deploy (push) Has been cancelled
2026-07-03 22:11:15 +03:00
Zotov Ivan Yuryevich
fefe5b9a1f chore: add privacy policy and term of use 2026-06-01 22:05:37 +03:00
Zotov Ivan Yuryevich
2d8008a7b9 chore: bump strapi version 2026-06-01 21:13:08 +03:00
Zotov Ivan Yuryevich
8d9e8a489b feat: add anchore to sections 2026-05-03 18:43:52 +03:00
Zotov Ivan Yuryevich
16671c6f4a chore: bump strapi version 2026-05-03 18:26:12 +03:00
Zotov Ivan Yuryevich
bb78ee4be6 ci: add basic alias to docker file 2026-05-02 16:32:38 +03:00
Zotov Ivan Yuryevich
937a6a9f87 ci: add gitea workflow 2026-05-02 16:23:42 +03:00
Zotov Ivan Yuryevich
eee0713817 chore: add pg driver 2026-05-01 19:01:58 +03:00
Zotov Ivan Yuryevich
92049925d4 ci: add dockerfile 2026-05-01 15:27:29 +03:00
Zotov Ivan Yuryevich
edcccab7fe add contacts 2026-04-22 21:54:00 +03:00
14 changed files with 2366 additions and 1688 deletions

130
.dockerignore Normal file
View File

@@ -0,0 +1,130 @@
############################
# OS X
############################
.DS_Store
.AppleDouble
.LSOverride
Icon
.Spotlight-V100
.Trashes
._*
############################
# Linux
############################
*~
############################
# Windows
############################
Thumbs.db
ehthumbs.db
Desktop.ini
$RECYCLE.BIN/
*.cab
*.msi
*.msm
*.msp
############################
# Packages
############################
*.7z
*.csv
*.dat
*.dmg
*.gz
*.iso
*.jar
*.rar
*.tar
*.zip
*.com
*.class
*.dll
*.exe
*.o
*.seed
*.so
*.swo
*.swp
*.swn
*.swm
*.out
*.pid
############################
# Logs and databases
############################
.tmp
*.log
*.sql
*.sqlite
*.sqlite3
############################
# Misc.
############################
*#
ssl
.idea
nbproject
public/uploads/*
!public/uploads/.gitkeep
.tsbuildinfo
.eslintcache
############################
# Node.js
############################
lib-cov
lcov.info
pids
logs
results
node_modules
.node_history
############################
# Package managers
############################
.yarn/*
!.yarn/cache
!.yarn/unplugged
!.yarn/patches
!.yarn/releases
!.yarn/sdks
!.yarn/versions
.pnp.*
yarn-error.log
############################
# Tests
############################
coverage
############################
# Strapi
############################
license.txt
exports
.strapi
dist
build
.strapi-updater.json
.strapi-cloud.json

View File

@@ -0,0 +1,55 @@
name: release-tag
on:
push:
branches:
- master
jobs:
build-and-deploy:
env:
DOCKER_LATEST: latest
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v2
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v1
- name: Get Meta
id: meta
run: |
echo REPO_NAME=$(echo ${GITHUB_REPOSITORY} | awk -F"/" '{print $2}') >> $GITHUB_OUTPUT
echo REPO_VERSION=${GITHUB_REF_NAME#v} >> $GITHUB_OUTPUT
- name: Log in to Docker registry
uses: docker/login-action@v3
with:
registry: ${{ vars.DOCKER_REGISTRY }}
username: ${{ secrets.DOCKER_USERNAME }}
password: ${{ secrets.DOCKER_PASSWORD }}
- name: Build and push
uses: docker/build-push-action@v5
with:
context: .
file: ./Dockerfile
target: basic
push: true
tags: |
${{ vars.DOCKER_REGISTRY }}/${{ steps.meta.outputs.REPO_NAME }}:${{ steps.meta.outputs.REPO_VERSION }}
${{ vars.DOCKER_REGISTRY }}/${{ steps.meta.outputs.REPO_NAME }}:${{ env.DOCKER_LATEST }}
- name: Trigger Dokploy Deployment
run: |
curl -X 'POST' \
'https://${{ vars.DOKPLOY_DOMAIN }}/api/trpc/application.deploy' \
-H 'accept: application/json' \
-H 'x-api-key:${{ secrets.DOKPLOY_API_KEY }}' \
-H 'Content-Type: application/json' \
-d '{
"json":{
"applicationId": "${{ vars.DOKPLOY_APPLICATION_ID }}"
}
}'

13
Dockerfile Normal file
View File

@@ -0,0 +1,13 @@
FROM node:22 as basic
WORKDIR /app
COPY package.json ./
COPY package-lock.json ./
RUN npm ci
COPY . .
RUN npm run build
EXPOSE 1337
CMD ["npm", "start"]

View File

@@ -2,7 +2,7 @@ import path from 'path';
import type { Core } from '@strapi/strapi'; import type { Core } from '@strapi/strapi';
const config = ({ env }: Core.Config.Shared.ConfigParams): Core.Config.Database => { const config = ({ env }: Core.Config.Shared.ConfigParams): Core.Config.Database => {
const client = env('DATABASE_CLIENT', 'sqlite'); const client = env('DATABASE_CLIENT', 'postgres');
const connections = { const connections = {
mysql: { mysql: {

3798
package-lock.json generated

File diff suppressed because it is too large Load Diff

View File

@@ -15,11 +15,11 @@
"upgrade:dry": "npx @strapi/upgrade latest --dry" "upgrade:dry": "npx @strapi/upgrade latest --dry"
}, },
"dependencies": { "dependencies": {
"@strapi/plugin-cloud": "5.41.1", "@strapi/plugin-cloud": "^5.45.1",
"@strapi/plugin-graphql": "^5.41.1", "@strapi/plugin-graphql": "^5.45.1",
"@strapi/plugin-users-permissions": "5.41.1", "@strapi/plugin-users-permissions": "^5.45.1",
"@strapi/strapi": "^5.42.0", "@strapi/strapi": "^5.45.1",
"better-sqlite3": "12.8.0", "pg": "^8.20.0",
"react": "^18.0.0", "react": "^18.0.0",
"react-dom": "^18.0.0", "react-dom": "^18.0.0",
"react-router-dom": "^6.0.0", "react-router-dom": "^6.0.0",

View File

@@ -17,6 +17,17 @@
}, },
"description": { "description": {
"type": "text" "type": "text"
},
"contacts": {
"type": "component",
"component": "shared.contact",
"repeatable": true
},
"privacyPolicy": {
"type": "richtext"
},
"termsOfUse": {
"type": "richtext"
} }
} }
} }

View File

@@ -11,6 +11,9 @@
"description": { "description": {
"type": "text" "type": "text"
}, },
"anchor": {
"type": "string"
},
"partners": { "partners": {
"type": "component", "type": "component",
"component": "shared.string", "component": "shared.string",

View File

@@ -11,6 +11,9 @@
"description": { "description": {
"type": "string" "type": "string"
}, },
"anchor": {
"type": "string"
},
"cards": { "cards": {
"type": "component", "type": "component",
"component": "cards.case", "component": "cards.case",

View File

@@ -14,6 +14,9 @@
"badge": { "badge": {
"type": "string" "type": "string"
}, },
"anchor": {
"type": "string"
},
"stats": { "stats": {
"type": "component", "type": "component",
"component": "shared.attribute", "component": "shared.attribute",

View File

@@ -11,6 +11,9 @@
"description": { "description": {
"type": "string" "type": "string"
}, },
"anchor": {
"type": "string"
},
"cards": { "cards": {
"type": "component", "type": "component",
"component": "cards.service", "component": "cards.service",

View File

@@ -11,6 +11,9 @@
"description": { "description": {
"type": "text" "type": "text"
}, },
"anchor": {
"type": "string"
},
"cards": { "cards": {
"type": "component", "type": "component",
"component": "cards.solution", "component": "cards.solution",

View File

@@ -63,6 +63,7 @@ export interface SectionsAbout extends Struct.ComponentSchema {
displayName: 'About'; displayName: 'About';
}; };
attributes: { attributes: {
anchor: Schema.Attribute.String;
cards: Schema.Attribute.Component<'cards.advantage', true>; cards: Schema.Attribute.Component<'cards.advantage', true>;
description: Schema.Attribute.Text; description: Schema.Attribute.Text;
partners: Schema.Attribute.Component<'shared.string', true>; partners: Schema.Attribute.Component<'shared.string', true>;
@@ -76,6 +77,7 @@ export interface SectionsCases extends Struct.ComponentSchema {
displayName: 'Cases'; displayName: 'Cases';
}; };
attributes: { attributes: {
anchor: Schema.Attribute.String;
cards: Schema.Attribute.Component<'cards.case', true>; cards: Schema.Attribute.Component<'cards.case', true>;
description: Schema.Attribute.String; description: Schema.Attribute.String;
title: Schema.Attribute.String; title: Schema.Attribute.String;
@@ -88,6 +90,7 @@ export interface SectionsHomeHero extends Struct.ComponentSchema {
displayName: 'HomeHero'; displayName: 'HomeHero';
}; };
attributes: { attributes: {
anchor: Schema.Attribute.String;
badge: Schema.Attribute.String; badge: Schema.Attribute.String;
description: Schema.Attribute.Text; description: Schema.Attribute.Text;
stats: Schema.Attribute.Component<'shared.attribute', true>; stats: Schema.Attribute.Component<'shared.attribute', true>;
@@ -101,6 +104,7 @@ export interface SectionsServices extends Struct.ComponentSchema {
displayName: 'Services'; displayName: 'Services';
}; };
attributes: { attributes: {
anchor: Schema.Attribute.String;
cards: Schema.Attribute.Component<'cards.service', true>; cards: Schema.Attribute.Component<'cards.service', true>;
description: Schema.Attribute.String; description: Schema.Attribute.String;
title: Schema.Attribute.String; title: Schema.Attribute.String;
@@ -113,6 +117,7 @@ export interface SectionsSolutions extends Struct.ComponentSchema {
displayName: 'Solutions'; displayName: 'Solutions';
}; };
attributes: { attributes: {
anchor: Schema.Attribute.String;
cards: Schema.Attribute.Component<'cards.solution', true>; cards: Schema.Attribute.Component<'cards.solution', true>;
description: Schema.Attribute.Text; description: Schema.Attribute.Text;
title: Schema.Attribute.String; title: Schema.Attribute.String;

View File

@@ -26,6 +26,11 @@ export interface AdminApiToken extends Struct.CollectionTypeSchema {
Schema.Attribute.SetMinMaxLength<{ Schema.Attribute.SetMinMaxLength<{
minLength: 1; minLength: 1;
}>; }>;
adminPermissions: Schema.Attribute.Relation<
'oneToMany',
'admin::permission'
>;
adminUserOwner: Schema.Attribute.Relation<'manyToOne', 'admin::user'>;
createdAt: Schema.Attribute.DateTime; createdAt: Schema.Attribute.DateTime;
createdBy: Schema.Attribute.Relation<'oneToOne', 'admin::user'> & createdBy: Schema.Attribute.Relation<'oneToOne', 'admin::user'> &
Schema.Attribute.Private; Schema.Attribute.Private;
@@ -39,6 +44,9 @@ export interface AdminApiToken extends Struct.CollectionTypeSchema {
minLength: 1; minLength: 1;
}>; }>;
expiresAt: Schema.Attribute.DateTime; expiresAt: Schema.Attribute.DateTime;
kind: Schema.Attribute.Enumeration<['content-api', 'admin']> &
Schema.Attribute.Required &
Schema.Attribute.DefaultTo<'content-api'>;
lastUsedAt: Schema.Attribute.DateTime; lastUsedAt: Schema.Attribute.DateTime;
lifespan: Schema.Attribute.BigInteger; lifespan: Schema.Attribute.BigInteger;
locale: Schema.Attribute.String & Schema.Attribute.Private; locale: Schema.Attribute.String & Schema.Attribute.Private;
@@ -56,7 +64,6 @@ export interface AdminApiToken extends Struct.CollectionTypeSchema {
>; >;
publishedAt: Schema.Attribute.DateTime; publishedAt: Schema.Attribute.DateTime;
type: Schema.Attribute.Enumeration<['read-only', 'full-access', 'custom']> & type: Schema.Attribute.Enumeration<['read-only', 'full-access', 'custom']> &
Schema.Attribute.Required &
Schema.Attribute.DefaultTo<'read-only'>; Schema.Attribute.DefaultTo<'read-only'>;
updatedAt: Schema.Attribute.DateTime; updatedAt: Schema.Attribute.DateTime;
updatedBy: Schema.Attribute.Relation<'oneToOne', 'admin::user'> & updatedBy: Schema.Attribute.Relation<'oneToOne', 'admin::user'> &
@@ -134,6 +141,7 @@ export interface AdminPermission extends Struct.CollectionTypeSchema {
minLength: 1; minLength: 1;
}>; }>;
actionParameters: Schema.Attribute.JSON & Schema.Attribute.DefaultTo<{}>; actionParameters: Schema.Attribute.JSON & Schema.Attribute.DefaultTo<{}>;
apiToken: Schema.Attribute.Relation<'manyToOne', 'admin::api-token'>;
conditions: Schema.Attribute.JSON & Schema.Attribute.DefaultTo<[]>; conditions: Schema.Attribute.JSON & Schema.Attribute.DefaultTo<[]>;
createdAt: Schema.Attribute.DateTime; createdAt: Schema.Attribute.DateTime;
createdBy: Schema.Attribute.Relation<'oneToOne', 'admin::user'> & createdBy: Schema.Attribute.Relation<'oneToOne', 'admin::user'> &
@@ -385,6 +393,8 @@ export interface AdminUser extends Struct.CollectionTypeSchema {
}; };
}; };
attributes: { attributes: {
apiTokens: Schema.Attribute.Relation<'oneToMany', 'admin::api-token'> &
Schema.Attribute.Private;
blocked: Schema.Attribute.Boolean & blocked: Schema.Attribute.Boolean &
Schema.Attribute.Private & Schema.Attribute.Private &
Schema.Attribute.DefaultTo<false>; Schema.Attribute.DefaultTo<false>;
@@ -514,6 +524,7 @@ export interface ApiSiteConfigSiteConfig extends Struct.SingleTypeSchema {
draftAndPublish: true; draftAndPublish: true;
}; };
attributes: { attributes: {
contacts: Schema.Attribute.Component<'shared.contact', true>;
createdAt: Schema.Attribute.DateTime; createdAt: Schema.Attribute.DateTime;
createdBy: Schema.Attribute.Relation<'oneToOne', 'admin::user'> & createdBy: Schema.Attribute.Relation<'oneToOne', 'admin::user'> &
Schema.Attribute.Private; Schema.Attribute.Private;
@@ -524,7 +535,9 @@ export interface ApiSiteConfigSiteConfig extends Struct.SingleTypeSchema {
'api::site-config.site-config' 'api::site-config.site-config'
> & > &
Schema.Attribute.Private; Schema.Attribute.Private;
privacyPolicy: Schema.Attribute.RichText;
publishedAt: Schema.Attribute.DateTime; publishedAt: Schema.Attribute.DateTime;
termsOfUse: Schema.Attribute.RichText;
title: Schema.Attribute.String & Schema.Attribute.Required; title: Schema.Attribute.String & Schema.Attribute.Required;
updatedAt: Schema.Attribute.DateTime; updatedAt: Schema.Attribute.DateTime;
updatedBy: Schema.Attribute.Relation<'oneToOne', 'admin::user'> & updatedBy: Schema.Attribute.Relation<'oneToOne', 'admin::user'> &