Compare commits
10 Commits
72c9248b81
...
master
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
96f2638668 | ||
|
|
fefe5b9a1f | ||
|
|
2d8008a7b9 | ||
|
|
8d9e8a489b | ||
|
|
16671c6f4a | ||
|
|
bb78ee4be6 | ||
|
|
937a6a9f87 | ||
|
|
eee0713817 | ||
|
|
92049925d4 | ||
|
|
edcccab7fe |
130
.dockerignore
Normal file
130
.dockerignore
Normal 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
|
||||||
55
.gitea/workflows/deploy.yml
Normal file
55
.gitea/workflows/deploy.yml
Normal 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
13
Dockerfile
Normal 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"]
|
||||||
@@ -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
3798
package-lock.json
generated
File diff suppressed because it is too large
Load Diff
10
package.json
10
package.json
@@ -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",
|
||||||
|
|||||||
@@ -17,6 +17,17 @@
|
|||||||
},
|
},
|
||||||
"description": {
|
"description": {
|
||||||
"type": "text"
|
"type": "text"
|
||||||
|
},
|
||||||
|
"contacts": {
|
||||||
|
"type": "component",
|
||||||
|
"component": "shared.contact",
|
||||||
|
"repeatable": true
|
||||||
|
},
|
||||||
|
"privacyPolicy": {
|
||||||
|
"type": "richtext"
|
||||||
|
},
|
||||||
|
"termsOfUse": {
|
||||||
|
"type": "richtext"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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",
|
||||||
|
|||||||
@@ -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",
|
||||||
|
|||||||
@@ -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",
|
||||||
|
|||||||
@@ -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",
|
||||||
|
|||||||
@@ -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",
|
||||||
|
|||||||
5
types/generated/components.d.ts
vendored
5
types/generated/components.d.ts
vendored
@@ -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;
|
||||||
|
|||||||
15
types/generated/contentTypes.d.ts
vendored
15
types/generated/contentTypes.d.ts
vendored
@@ -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'> &
|
||||||
|
|||||||
Reference in New Issue
Block a user