feat: versão inicial + actions
Some checks are pending
Build and Deploy JobMaker / build (push) Waiting to run
Build and Deploy JobMaker / deploy (push) Blocked by required conditions
Build and Deploy JobMaker / notify (push) Blocked by required conditions

This commit is contained in:
Ricardo Carneiro 2025-06-17 16:25:23 -03:00
parent 1c00ba0339
commit 55384f40b7
70 changed files with 25418 additions and 0 deletions

155
.gitea/workflows/deploy.yml Normal file
View File

@ -0,0 +1,155 @@
# .gitea/workflows/deploy.yml
name: Build and Deploy JobMaker
on:
push:
branches: [ main ]
pull_request:
branches: [ main ]
env:
REGISTRY: registry.redecarneir.us
IMAGE_NAME: jobmaker-website
DEPLOY_HOST: 92.246.130.58
DEPLOY_USER: root
CONTAINER_NAME: jobmaker-web
jobs:
build:
runs-on: ubuntu-latest
steps:
- name: 📥 Checkout code
uses: actions/checkout@v4
- name: 🐳 Set up Docker Buildx
uses: docker/setup-buildx-action@v3
- name: 🏷️ Generate tags
id: meta
run: |
echo "VERSION=v$(date +%Y%m%d)-${GITHUB_SHA::8}" >> $GITHUB_OUTPUT
echo "LATEST_TAG=${REGISTRY}/${IMAGE_NAME}:latest" >> $GITHUB_OUTPUT
echo "VERSION_TAG=${REGISTRY}/${IMAGE_NAME}:v$(date +%Y%m%d)-${GITHUB_SHA::8}" >> $GITHUB_OUTPUT
- name: 🔨 Build Docker image
run: |
echo "🔨 Building Docker image..."
docker build \
-t ${{ steps.meta.outputs.LATEST_TAG }} \
-t ${{ steps.meta.outputs.VERSION_TAG }} \
.
- name: 🧪 Test container
run: |
echo "🧪 Testing container..."
# Iniciar container de teste
docker run -d --name test-container -p 8080:80 ${{ steps.meta.outputs.LATEST_TAG }}
# Aguardar container iniciar
sleep 10
# Testar se está respondendo
curl -f http://localhost:8080 || exit 1
curl -f http://localhost:8080/robots.txt || exit 1
curl -f http://localhost:8080/sitemap.xml || exit 1
curl -f http://localhost:8080/en/ || exit 1
# Parar container de teste
docker stop test-container
docker rm test-container
echo "✅ Container tests passed!"
- name: 📤 Push to registry
run: |
echo "📤 Pushing to registry..."
docker push ${{ steps.meta.outputs.LATEST_TAG }}
docker push ${{ steps.meta.outputs.VERSION_TAG }}
echo "✅ Images pushed successfully!"
deploy:
needs: build
runs-on: ubuntu-latest
if: github.ref == 'refs/heads/main'
steps:
- name: 🔑 Setup SSH
run: |
mkdir -p ~/.ssh
echo "${{ secrets.DEPLOY_SSH_KEY }}" > ~/.ssh/id_rsa
chmod 600 ~/.ssh/id_rsa
ssh-keyscan -H ${{ env.DEPLOY_HOST }} >> ~/.ssh/known_hosts
- name: 🚀 Deploy to server
run: |
echo "🚀 Starting deployment..."
ssh ${{ env.DEPLOY_USER }}@${{ env.DEPLOY_HOST }} << 'EOF'
set -e
echo "📥 Pulling latest image..."
docker pull ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}:latest
echo "🛑 Stopping current container..."
docker stop ${{ env.CONTAINER_NAME }} || true
docker rm ${{ env.CONTAINER_NAME }} || true
echo "🚀 Starting new container..."
docker run -d \
--name ${{ env.CONTAINER_NAME }} \
--restart unless-stopped \
-p 80:80 \
-p 443:443 \
${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}:latest
echo "🧪 Testing deployment..."
sleep 5
# Testar se está respondendo
curl -f http://localhost/ || exit 1
curl -f http://localhost/en/ || exit 1
echo "🧹 Cleaning up old images..."
docker image prune -f
echo "✅ Deployment completed successfully!"
EOF
- name: 📊 Deployment status
run: |
echo "📊 Checking deployment status..."
ssh ${{ env.DEPLOY_USER }}@${{ env.DEPLOY_HOST }} << 'EOF'
echo "=== Container Status ==="
docker ps | grep ${{ env.CONTAINER_NAME }}
echo "=== Container Logs (last 20 lines) ==="
docker logs --tail 20 ${{ env.CONTAINER_NAME }}
echo "=== Disk Usage ==="
df -h
echo "=== Docker Images ==="
docker images | grep ${{ env.IMAGE_NAME }}
EOF
notify:
needs: [build, deploy]
runs-on: ubuntu-latest
if: always()
steps:
- name: 📢 Notify deployment result
run: |
if [[ "${{ needs.deploy.result }}" == "success" ]]; then
echo "🎉 Deployment successful!"
echo "✅ JobMaker is live at: http://${{ env.DEPLOY_HOST }}"
echo "✅ English version: http://${{ env.DEPLOY_HOST }}/en/"
else
echo "❌ Deployment failed!"
echo "Check the logs above for details."
exit 1
fi

22
Dockerfile Normal file
View File

@ -0,0 +1,22 @@
# Dockerfile
FROM nginx:alpine
# Remover configuração padrão do Nginx
RUN rm /etc/nginx/conf.d/default.conf
# Copiar nossa configuração personalizada
COPY nginx.conf /etc/nginx/conf.d/
# Copiar arquivos do site
COPY . /usr/share/nginx/html/
# Garantir que robots.txt e sitemap.xml estão no lugar correto
COPY robots.txt /usr/share/nginx/html/robots.txt
COPY sitemap.xml /usr/share/nginx/html/sitemap.xml
# Expor porta 80
EXPOSE 80
# Comando padrão
CMD ["nginx", "-g", "daemon off;"]

BIN
assets/favicon.ico Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.6 KiB

BIN
assets/favicon_old.ico Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 23 KiB

BIN
assets/img/Sem título.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 23 KiB

BIN
assets/img/about/1.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 19 KiB

BIN
assets/img/about/2.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.9 KiB

BIN
assets/img/about/3.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 18 KiB

BIN
assets/img/about/4.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 16 KiB

View File

@ -0,0 +1 @@
<svg id="Layer_1" data-name="Layer 1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 579.74 579.74"><defs><style>.cls-1{fill:none;stroke:#000;stroke-miterlimit:10;stroke-width:6px;}</style></defs><line class="cls-1" x1="2.12" y1="2.12" x2="577.62" y2="577.62"/><line class="cls-1" x1="2.12" y1="577.62" x2="577.62" y2="2.12"/></svg>

After

Width:  |  Height:  |  Size: 333 B

BIN
assets/img/header-bg.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 541 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 233 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 MiB

View File

@ -0,0 +1,34 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Generator: Adobe Illustrator 25.2.1, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
viewBox="0 0 2030.6 546.3" style="enable-background:new 0 0 2030.6 546.3;" xml:space="preserve">
<style type="text/css">
.st0{fill:#CED4DA;}
</style>
<g>
<path class="st0" d="M1045.4,269.1c-16.8,0-28.9,5.5-41.1,11.1v126.7c11.7,1.1,18.5,1.1,29.6,1.1c40.2,0,45.8-18.4,45.8-44.2v-60.5
C1079.7,284.3,1073.4,269.1,1045.4,269.1L1045.4,269.1z M778.1,262.2c-27.9,0-34.3,15.3-34.3,34.3v10.7h68.6v-10.7
C812.4,277.5,806,262.2,778.1,262.2z M260.4,394.1c0,15,7.1,22.8,22.7,22.8c16.8,0,26.7-5.5,39-11.1v-30.1h-36.7
C268,375.7,260.4,379,260.4,394.1L260.4,394.1z M1305.4,269.1c-28,0-37.7,15.3-37.7,34.3v69.4c0,19.1,9.7,34.4,37.7,34.4
c27.9,0,37.7-15.3,37.7-34.4v-69.4C1343,284.3,1333.3,269.1,1305.4,269.1z M123.3,471.8H41.1v-199H0v-68.6h41.1v-41.2
c0-55.9,23.2-89.2,89.1-89.2H185v68.6h-34.3c-25.7,0-27.3,9.6-27.3,27.5l-0.1,34.3h62.1l-7.3,68.6h-54.9L123.3,471.8L123.3,471.8z
M404.3,472.4h-68.5l-3-17.3c-31.3,17.3-59.2,20.1-77.6,20.1c-50.3,0-77-33.6-77-80c0-54.8,31.2-74.3,87-74.3H322V309
c0-28-3.2-36.2-46.2-36.2h-70.3l6.9-68.6h76.8c94.3,0,115,29.8,115,105.3L404.3,472.4L404.3,472.4z M637.3,277.9
c-42.6-7.3-54.9-8.9-75.4-8.9c-36.9,0-48,8.1-48,39.4v59.2c0,31.3,11.1,39.5,48,39.5c20.5,0,32.8-1.6,75.4-9V465
c-37.3,8.4-61.7,10.6-82.2,10.6c-88.3,0-123.4-46.4-123.4-113.5v-48c0-67.1,35.1-113.6,123.4-113.6c20.6,0,44.9,2.2,82.2,10.6
V277.9L637.3,277.9z M894.6,362H743.8v5.5c0,31.3,11.1,39.5,48,39.5c33.1,0,53.3-1.6,95.9-9V465c-41.1,8.4-62.4,10.6-102.7,10.6
c-88.3,0-123.4-46.4-123.4-113.5v-54.9c0-58.7,26-106.7,116.5-106.7s116.5,47.5,116.5,106.7V362z M1161.9,363.3
c0,64.8-18.5,112.1-130.7,112.1c-40.5,0-64.3-3.6-109-10.4V94.5l82.2-13.7v129.6c17.8-6.6,40.8-10,61.7-10
c82.2,0,95.9,36.9,95.9,96.1L1161.9,363.3L1161.9,363.3z M1425.3,364.7c0,55.9-23.1,110.1-119.7,110.1
c-96.6,0-120.1-54.2-120.1-110.1v-54c0-55.9,23.5-110.2,120.1-110.2c96.6,0,119.7,54.2,119.7,110.2V364.7L1425.3,364.7z
M1688.6,364.7c0,55.9-23.1,110.1-119.7,110.1c-96.6,0-120.1-54.2-120.1-110.1v-54c0-55.9,23.5-110.2,120.1-110.2
c96.6,0,119.7,54.2,119.7,110.2V364.7L1688.6,364.7z M1958.8,471.8h-89.1l-75.3-125.8v125.8h-82.2V94.5l82.2-13.7v242.9l75.3-119.4
h89.1l-82.3,130.3L1958.8,471.8z M1568.7,269.1c-27.9,0-37.6,15.3-37.6,34.3v69.4c0,19.1,9.7,34.4,37.6,34.4
c27.9,0,37.8-15.3,37.8-34.4v-69.4C1606.4,284.3,1596.6,269.1,1568.7,269.1L1568.7,269.1z M2005.7,424.9
c13.8,0,24.9,11.3,24.9,25.4c0,14.3-11,25.5-25,25.5c-13.9,0-25.1-11.2-25.1-25.5c0-14.1,11.3-25.4,25.1-25.4H2005.7z
M2005.6,428.9c-11.2,0-20.3,9.6-20.3,21.4c0,12.1,9.1,21.5,20.4,21.5c11.3,0.1,20.3-9.5,20.3-21.4c0-11.9-9-21.6-20.3-21.6H2005.6
z M2000.9,465.1h-4.5v-28.3c2.4-0.3,4.6-0.7,8-0.7c4.3,0,7.1,0.9,8.8,2.1c1.7,1.3,2.6,3.2,2.6,5.9c0,3.7-2.5,6-5.5,6.9v0.2
c2.5,0.5,4.2,2.7,4.7,6.9c0.7,4.4,1.3,6.1,1.8,7h-4.7c-0.7-0.9-1.4-3.5-1.9-7.2c-0.7-3.6-2.5-5-6.1-5h-3.1L2000.9,465.1
L2000.9,465.1z M2000.9,449.4h3.3c3.7,0,6.9-1.4,6.9-4.9c0-2.5-1.8-5-6.9-5c-1.5,0-2.5,0.1-3.3,0.2V449.4L2000.9,449.4z"/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 3.1 KiB

View File

@ -0,0 +1,35 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Generator: Adobe Illustrator 25.2.1, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
viewBox="0 0 2500 928" style="enable-background:new 0 0 2500 928;" xml:space="preserve">
<style type="text/css">
.st0{fill:#CED4DA;}
</style>
<path class="st0" d="M307.9,112.1h22.2c77.2,1.7,153.1,32.7,207.6,87.7c-20.1,20.6-40.7,40.3-60.4,60.8
c-30.6-27.7-67.5-49.1-107.8-56.6c-59.6-12.6-123.7-1.3-173.7,32.7c-54.5,35.7-91.4,96.1-99.4,160.7c-8.8,63.8,9.2,130.9,50.8,180.4
c39.8,48.2,100.7,78.4,163.6,80.5c58.7,3.4,120-14.7,162.8-55.8c33.6-28.9,49.1-73,54.1-115.8c-69.6,0-139.3,0.4-208.9,0v-86.4H612
c15.1,92.7-6.7,197.1-77.2,263.4c-47,47-112,74.7-178.3,80.1c-64.2,6.3-130.5-5.9-187.5-36.9c-68.4-36.5-122.9-98.2-149.7-170.7
C-5.9,469.5-6.3,394,17.2,326.8c21.4-61.2,62.5-115.4,115.4-153.1C183.3,136.4,245,115.8,307.9,112.1z"/>
<path class="st0" d="M1989.9,133.9h89.8v599c-29.8,0-60,0.4-89.8-0.4C1990.4,533.2,1989.9,333.5,1989.9,133.9L1989.9,133.9z"/>
<path class="st0" d="M811.7,341.5C867,331,927,342.8,972.7,375.9c41.5,29.4,70.5,75.5,79.3,125.8c11.3,58.3-2.9,122.1-40.7,168.2
c-40.7,51.6-107.4,79.3-172.4,75.1c-59.6-3.4-117.4-33.1-152.7-81.8c-39.8-53.7-49.5-127.5-27.7-190.4
C680.4,405.3,742,353.7,811.7,341.5 M824.2,421.2c-22.7,5.9-43.6,18.9-58.7,37.3c-40.7,48.7-38.2,127.9,6.7,173.2
c25.6,26,64.2,38.2,99.8,31c33.1-5.9,62.1-28.1,78-57.5c27.7-49.9,19.7-118.7-22.7-157.7C900.2,422.5,860.3,412,824.2,421.2
L824.2,421.2z"/>
<path class="st0" d="M1256.3,341.5c63.3-12.2,132.6,5.5,179.9,49.9c77.2,69.2,85.6,198.8,19.7,278.5c-39.8,50.3-104.4,78-168.2,75.1
c-60.8-1.7-120.8-31.9-156.9-81.8c-40.7-54.9-49.5-130.5-26.4-194.6C1127.5,403.2,1187.9,353.3,1256.3,341.5 M1268.9,421.2
c-22.7,5.9-43.6,18.9-58.7,36.9c-40.3,47.8-38.6,125.8,4.6,171.6c25.6,27.3,65.4,40.7,102.3,33.1c32.7-6.3,62.1-28.1,78-57.5
c27.3-50.3,19.3-119.1-23.5-158.1C1344.4,422.1,1304.5,412,1268.9,421.2L1268.9,421.2z"/>
<path class="st0" d="M1633.4,365.8c48.2-30.2,112.4-38.6,164.4-12.6c16.4,7.1,29.8,19.3,42.8,31.5c0.4-11.3,0-23.1,0.4-34.8
c28.1,0.4,56.2,0,84.7,0.4v370c-0.4,55.8-14.7,114.9-54.9,155.6c-44,44.9-111.6,58.7-172.4,49.5c-65-9.6-121.6-57-146.8-117
c25.2-12.2,51.6-21.8,77.6-33.1c14.7,34.4,44.5,63.8,81.8,70.5c37.3,6.7,80.5-2.5,104.9-33.6c26-31.9,26-75.5,24.7-114.5
c-19.3,18.9-41.5,35.7-68.4,41.9c-58.3,16.4-122.5-3.8-167.4-43.2c-45.3-39.4-72.1-100.3-69.6-160.7
C1536.5,467.4,1575.1,401.5,1633.4,365.8 M1720.2,419.5c-25.6,4.2-49.5,18.5-65.9,38.2c-39.4,47-39.4,122.1,0.4,168.2
c22.7,27.3,59.1,42.4,94.4,38.6c33.1-3.4,63.8-24.3,80.1-53.3c27.7-49.1,23.1-115.8-14.3-158.6
C1791.9,426.2,1755,413.2,1720.2,419.5L1720.2,419.5z"/>
<path class="st0" d="M2187.5,387.2c50.3-47,127.9-62.9,192.5-38.2c61.2,23.1,100.3,81.4,120,141.4c-91,37.8-181.6,75.1-272.7,112.8
c12.6,23.9,31.9,45.7,57.9,54.5c36.5,13,80.1,8.4,110.7-15.9c12.2-9.2,21.8-21.4,31-33.1c23.1,15.5,46.1,30.6,69.2,46.1
c-32.7,49.1-87.7,83.5-146.8,88.9c-65.4,8-135.1-17.2-177.4-68.4C2102.3,594.9,2109.1,459.8,2187.5,387.2 M2232.4,464.8
c-14.3,20.6-20.1,45.7-19.7,70.5c60.8-25.2,121.6-50.3,182.5-75.9c-10.1-23.5-34.4-37.8-59.1-41.5
C2296.1,410.7,2254.6,432.1,2232.4,464.8z"/>
</svg>

After

Width:  |  Height:  |  Size: 3.2 KiB

24
assets/img/logos/ibm.svg Normal file
View File

@ -0,0 +1,24 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Generator: Adobe Illustrator 25.2.1, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
viewBox="0 0 2500 1000" style="enable-background:new 0 0 2500 1000;" xml:space="preserve">
<style type="text/css">
.st0{fill:#CED4DA;}
</style>
<path class="st0" d="M0,0v68.4h486.6V0H0z M555.6,0v68.4H1249c0,0-70.8-68.4-164.6-68.4H555.6z M1385.1,0v68.4h419.5L1779.7,0
H1385.1z M2105.4,0l-24.9,68.4h415.7V0H2105.4z M0,133.1v68.4h486.6v-68.4H0z M555.6,133.2v68.3h773.9c0,0-9-52.7-24.8-68.3
L555.6,133.2L555.6,133.2z M1385.1,133.2v68.3h465.5l-23-68.3L1385.1,133.2L1385.1,133.2z M2055.6,133.2l-23,68.3h463.7v-68.3
H2055.6z M139.8,266.1v68.5h210.7v-68.5L139.8,266.1L139.8,266.1z M695.4,266.1v68.5h210.7v-68.5L695.4,266.1L695.4,266.1z
M1111.1,266.1v68.5h210.7c0,0,13.4-36.2,13.4-68.5L1111.1,266.1L1111.1,266.1z M1524.9,266.1v68.5h373.6l-24.9-68.5L1524.9,266.1
L1524.9,266.1z M2009.7,266.1l-25,68.5h375.5v-68.5L2009.7,266.1L2009.7,266.1z M139.8,399.3v68.4h210.7v-68.4H139.8L139.8,399.3z
M695.4,399.3v68.4h538.3c0,0,45-35.1,59.4-68.4H695.4z M1524.9,399.3v68.4h210.7v-38.1l13.4,38.1h386l14.4-38.1v38.1h210.7v-68.4
h-395.6l-21,57.9l-21.1-57.9H1524.9z M139.8,532.3v68.4h210.7v-68.4H139.8z M695.4,532.3v68.4h597.7c-14.3-33.2-59.4-68.4-59.4-68.4
H695.4z M1524.9,532.3v68.4h210.7v-68.4H1524.9z M1773.9,532.3l25.5,68.4h289.5l24.2-68.4H1773.9z M2149.4,532.3v68.4h210.7v-68.4
H2149.4z M139.8,665.4v68.4h210.7v-68.4H139.8z M695.4,665.4v68.4h210.7v-68.4H695.4z M1111.1,665.4v68.4h224.1
c0-32.3-13.4-68.4-13.4-68.4H1111.1L1111.1,665.4z M1524.9,665.4v68.4h210.7v-68.4H1524.9z M1821.8,665.4l24.7,68.4h194l24.9-68.4
H1821.8z M2149.4,665.4v68.4h210.7v-68.4H2149.4z M3.8,798.4v68.5h486.6v-68.5H3.8z M555.6,798.4v68.5h749.1
c15.8-15.7,24.8-68.5,24.8-68.5H555.6L555.6,798.4z M1388.9,798.4v68.5h346.8v-68.5H1388.9z M1869.7,798.4l25.4,68.5h98.7l23.8-68.5
H1869.7z M2149.4,798.4v68.5H2500v-68.5H2149.4z M3.8,931.6v68.4h486.6v-68.4H3.8z M555.6,931.6v68.3h528.8
c93.8,0,164.6-68.3,164.6-68.3H555.6z M1388.9,931.6v68.4h346.8v-68.4H1388.9z M1917.9,931.6l24.4,68.2l4.2,0.1l24.8-68.3H1917.9z
M2149.4,931.6v68.4H2500v-68.4H2149.4z"/>
</svg>

After

Width:  |  Height:  |  Size: 2.2 KiB

View File

@ -0,0 +1,42 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Generator: Adobe Illustrator 25.2.1, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
viewBox="0 0 2500 534" style="enable-background:new 0 0 2500 534;" xml:space="preserve">
<style type="text/css">
.st0{fill:#CED4DA;}
</style>
<path class="st0" d="M2500,241.6v-44h-54.6v-68.4l-1.8,0.6l-51.3,15.7l-1,0.3v51.8h-80.9v-28.9c0-13.4,3-23.7,8.9-30.6
c5.9-6.8,14.3-10.2,25-10.2c7.7,0,15.7,1.8,23.7,5.4l2,0.9V88l-0.9-0.3c-7.5-2.7-17.7-4.1-30.3-4.1c-15.9,0-30.4,3.5-43,10.3
c-12.6,6.9-22.6,16.7-29.5,29.2c-6.9,12.5-10.5,26.9-10.5,42.8v31.7h-38v44h38v185.2h54.6V241.6h80.9v117.7c0,48.5,22.9,73,68,73
c7.4,0,15.2-0.9,23.2-2.6c8.1-1.7,13.6-3.5,16.9-5.4l0.7-0.4v-44.4l-2.2,1.5c-3,2-6.7,3.6-11,4.8c-4.3,1.2-8,1.8-10.8,1.8
c-10.6,0-18.4-2.8-23.2-8.5c-4.9-5.7-7.4-15.6-7.4-29.4V241.6H2500L2500,241.6z M2095.9,387.7c-19.8,0-35.4-6.6-46.4-19.5
c-11.1-13-16.7-31.5-16.7-55.1c0-24.3,5.6-43.3,16.7-56.6c11-13.1,26.5-19.8,46-19.8c18.9,0,34,6.4,44.8,19
c10.8,12.6,16.3,31.5,16.3,56.1c0,24.9-5.2,44-15.4,56.8C2131,381.3,2115.8,387.7,2095.9,387.7 M2098.3,192.1
c-37.8,0-67.8,11.1-89.2,32.9c-21.4,21.8-32.2,52.1-32.2,89.9c0,35.9,10.6,64.7,31.5,85.8c20.9,21,49.3,31.7,84.5,31.7
c36.6,0,66.1-11.2,87.4-33.4c21.4-22.1,32.2-52.1,32.2-89c0-36.4-10.2-65.5-30.2-86.4C2162.1,202.7,2133.9,192.1,2098.3,192.1
M1888.8,192.1c-25.7,0-47,6.6-63.2,19.5c-16.3,13-24.6,30.1-24.6,50.8c0,10.8,1.8,20.3,5.3,28.4c3.5,8.1,9,15.3,16.3,21.3
c7.2,6,18.4,12.2,33.2,18.6c12.4,5.1,21.7,9.4,27.6,12.9c5.8,3.3,9.8,6.7,12.1,10c2.2,3.2,3.4,7.6,3.4,13
c0,15.4-11.5,22.9-35.3,22.9c-8.8,0-18.8-1.8-29.8-5.5c-10.9-3.6-21.2-8.8-30.6-15.5l-2.3-1.6v52.5l0.8,0.4
c7.7,3.6,17.5,6.6,28.9,8.9c11.5,2.4,21.9,3.6,30.9,3.6c27.9,0,50.4-6.6,66.8-19.6c16.5-13.1,24.9-30.6,24.9-52.1
c0-15.4-4.5-28.7-13.4-39.4c-8.8-10.6-24.1-20.3-45.4-28.9c-17-6.8-27.9-12.5-32.4-16.8c-4.3-4.2-6.5-10.1-6.5-17.7
c0-6.7,2.7-12,8.3-16.3c5.6-4.3,13.4-6.6,23.2-6.6c9.1,0,18.4,1.4,27.6,4.3c9.2,2.8,17.4,6.6,24.1,11.2l2.2,1.5v-49.8l-0.9-0.4
c-6.3-2.7-14.5-5-24.5-6.8C1905.8,193,1896.7,192.1,1888.8,192.1 M1658.7,387.7c-19.8,0-35.4-6.6-46.4-19.5
c-11.1-13-16.7-31.5-16.7-55.1c0-24.3,5.6-43.3,16.7-56.6c11-13.1,26.5-19.8,46-19.8c18.9,0,34,6.4,44.8,19
c10.8,12.6,16.3,31.5,16.3,56.1c0,24.9-5.2,44-15.4,56.8C1693.9,381.3,1678.7,387.7,1658.7,387.7 M1661.2,192.1
c-37.8,0-67.8,11.1-89.2,32.9c-21.4,21.8-32.2,52.1-32.2,89.9c0,35.9,10.6,64.7,31.5,85.8c20.9,21,49.3,31.7,84.5,31.7
c36.6,0,66.1-11.2,87.4-33.4c21.4-22.1,32.2-52.1,32.2-89c0-36.4-10.2-65.5-30.2-86.4C1725,202.7,1696.7,192.1,1661.2,192.1
M1456.9,237.3v-39.7h-53.9v229.2h53.9V309.6c0-19.9,4.5-36.3,13.4-48.7c8.8-12.2,20.5-18.4,34.9-18.4c4.9,0,10.3,0.8,16.2,2.4
c5.8,1.6,10.1,3.3,12.6,5.1l2.3,1.6v-54.4l-0.9-0.4c-5-2.1-12.1-3.2-21.1-3.2c-13.5,0-25.7,4.4-36.1,12.9
c-9.1,7.5-15.7,17.9-20.7,30.7H1456.9z M1306.4,192.1c-24.7,0-46.8,5.3-65.6,15.8c-18.8,10.5-33.3,25.4-43.2,44.5
c-9.9,19-14.9,41.1-14.9,65.9c0,21.7,4.8,41.5,14.4,59c9.6,17.5,23.2,31.3,40.3,40.8c17.2,9.5,37,14.3,58.9,14.3
c25.6,0,47.5-5.1,65-15.2l0.7-0.4v-49.4l-2.3,1.7c-7.9,5.8-16.8,10.4-26.4,13.7c-9.5,3.3-18.2,5-25.8,5c-21.2,0-38.1-6.6-50.5-19.7
c-12.4-13.1-18.6-31.4-18.6-54.5c0-23.2,6.5-42.1,19.4-55.9c12.8-13.8,29.8-20.9,50.6-20.9c17.7,0,35,6,51.3,17.9l2.3,1.6v-52
l-0.7-0.4c-6.1-3.4-14.5-6.3-24.9-8.4C1326.2,193.2,1316,192.1,1306.4,192.1 M1145.6,197.6h-53.9v229.2h53.9V197.6L1145.6,197.6z
M1119.2,100c-8.9,0-16.6,3-23,9c-6.4,6-9.6,13.6-9.6,22.5c0,8.8,3.2,16.2,9.5,22c6.3,5.8,14,8.8,23.1,8.8c9,0,16.8-3,23.2-8.8
c6.4-5.9,9.6-13.3,9.6-22.1c0-8.6-3.2-16.1-9.4-22.2C1136.4,103.1,1128.6,100,1119.2,100 M984.7,180.7v246.1h55V107h-76.1
l-96.8,237.5L772.9,107h-79.2v319.8h51.7V180.7h1.8l99.2,246.1h39l97.6-246.1L984.7,180.7L984.7,180.7z"/>
<path class="st0" d="M253.6,253.7H0V0.1h253.6V253.7z"/>
<path class="st0" d="M533.6,253.7H280V0.1h253.6L533.6,253.7L533.6,253.7z"/>
<path class="st0" d="M253.6,533.9H0V280.3h253.6V533.9z"/>
<path class="st0" d="M533.6,533.9H280V280.3h253.6L533.6,533.9L533.6,533.9z"/>
</svg>

After

Width:  |  Height:  |  Size: 4.0 KiB

BIN
assets/img/map-image.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 356 KiB

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 14 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 MiB

BIN
assets/img/portfolio/1.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 18 KiB

BIN
assets/img/portfolio/2.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 32 KiB

BIN
assets/img/portfolio/3.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 17 KiB

BIN
assets/img/portfolio/4.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 26 KiB

BIN
assets/img/portfolio/5.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 17 KiB

BIN
assets/img/portfolio/6.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 32 KiB

BIN
assets/img/team/1.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 39 KiB

BIN
assets/img/team/2.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 60 KiB

BIN
assets/img/team/3.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 56 KiB

244
build.sh Normal file
View File

@ -0,0 +1,244 @@
#!/bin/bash
# build.sh - Script para build e deploy do JobMaker
set -e
echo "🚀 JobMaker Build & Deploy Script"
echo "================================="
# Cores para output
RED='\033[0;31m'
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
BLUE='\033[0;34m'
NC='\033[0m' # No Color
# Função para logs coloridos
log_info() {
echo -e "${BLUE} $1${NC}"
}
log_success() {
echo -e "${GREEN}$1${NC}"
}
log_warning() {
echo -e "${YELLOW}⚠️ $1${NC}"
}
log_error() {
echo -e "${RED}$1${NC}"
}
# Verificar se Docker está instalado
if ! command -v docker &> /dev/null; then
log_error "Docker não está instalado!"
exit 1
fi
# Verificar estrutura de arquivos
log_info "Verificando estrutura de arquivos..."
required_files=(
"index.html"
"en/index.html"
"css/styles.css"
"js/scripts.js"
"assets/img/jobmaker_logo.png"
"Dockerfile"
"nginx.conf"
)
for file in "${required_files[@]}"; do
if [[ ! -f "$file" ]]; then
log_error "Arquivo obrigatório não encontrado: $file"
exit 1
fi
done
log_success "Todos os arquivos obrigatórios encontrados!"
# Build da imagem Docker
log_info "Construindo imagem Docker..."
IMAGE_NAME="jobmaker-website"
IMAGE_TAG="latest"
docker build -t $IMAGE_NAME:$IMAGE_TAG . || {
log_error "Falha no build da imagem Docker!"
exit 1
}
log_success "Imagem Docker construída: $IMAGE_NAME:$IMAGE_TAG"
# Parar container existente se estiver rodando
if docker ps -q -f name=jobmaker-web &> /dev/null; then
log_info "Parando container existente..."
docker stop jobmaker-web || true
docker rm jobmaker-web || true
fi
# Executar novo container
log_info "Iniciando novo container..."
docker run -d \
--name jobmaker-web \
-p 8080:80 \
--restart unless-stopped \
$IMAGE_NAME:$IMAGE_TAG || {
log_error "Falha ao iniciar container!"
exit 1
}
log_success "Container iniciado com sucesso!"
# Verificar se o site está respondendo
log_info "Verificando se o site está respondendo..."
sleep 3
if curl -f http://localhost:8080 &> /dev/null; then
log_success "Site está online! 🎉"
echo ""
echo "📍 URLs disponíveis:"
echo " Português: http://localhost:8080"
echo " English: http://localhost:8080/en/"
echo ""
echo "🐳 Comandos Docker úteis:"
echo " Ver logs: docker logs jobmaker-web"
echo " Parar: docker stop jobmaker-web"
echo " Reiniciar: docker restart jobmaker-web"
echo " Remover: docker rm -f jobmaker-web"
else
log_error "Site não está respondendo!"
echo ""
echo "🔍 Para debug, verifique os logs:"
echo " docker logs jobmaker-web"
exit 1
fi
# Mostrar informações do container
echo ""
log_info "Informações do container:"
docker ps | grep jobmaker-web
echo ""
log_success "Deploy concluído com sucesso! 🚀"
---
#!/bin/bash
# deploy-production.sh - Script para deploy em produção
set -e
echo "🚀 JobMaker Production Deploy"
echo "============================"
# Verificar se estamos na branch main
BRANCH=$(git branch --show-current)
if [[ "$BRANCH" != "main" ]]; then
log_error "Deploy de produção deve ser feito da branch main!"
log_info "Branch atual: $BRANCH"
exit 1
fi
# Verificar se não há mudanças pendentes
if [[ -n $(git status --porcelain) ]]; then
log_error "Há mudanças não commitadas!"
log_info "Commit suas mudanças antes do deploy."
exit 1
fi
# Configurações de produção
REGISTRY="your-registry.com" # Substituir pelo seu registry
IMAGE_NAME="jobmaker-website"
VERSION=$(git rev-parse --short HEAD)
PRODUCTION_TAG="$REGISTRY/$IMAGE_NAME:$VERSION"
LATEST_TAG="$REGISTRY/$IMAGE_NAME:latest"
log_info "Versão: $VERSION"
# Build da imagem
log_info "Construindo imagem para produção..."
docker build -t $PRODUCTION_TAG -t $LATEST_TAG .
# Push para registry
log_info "Enviando imagem para registry..."
docker push $PRODUCTION_TAG
docker push $LATEST_TAG
# Deploy (exemplo para Docker Swarm)
log_info "Fazendo deploy em produção..."
# Criar/atualizar serviço Docker Swarm
docker service create \
--name jobmaker-web \
--publish 80:80 \
--replicas 2 \
--update-parallelism 1 \
--update-delay 10s \
--restart-condition on-failure \
--restart-max-attempts 3 \
$LATEST_TAG || \
docker service update \
--image $LATEST_TAG \
jobmaker-web
log_success "Deploy de produção concluído!"
echo ""
echo "🌐 Site em produção:"
echo " https://jobmaker.com.br"
echo " https://jobmaker.com.br/en/"
---
# docker-compose.yml - Para desenvolvimento local
version: '3.8'
services:
jobmaker-web:
build: .
ports:
- "8080:80"
volumes:
- .:/usr/share/nginx/html:ro
restart: unless-stopped
container_name: jobmaker-web-dev
# Nginx para HTTPS local (desenvolvimento)
nginx-ssl:
image: nginx:alpine
ports:
- "443:443"
volumes:
- ./nginx-ssl.conf:/etc/nginx/conf.d/default.conf
- ./ssl/:/etc/ssl/certs/
depends_on:
- jobmaker-web
profiles:
- ssl
---
# .dockerignore
.git
.gitignore
README.md
*.md
.env
.env.*
node_modules
*.log
.DS_Store
Thumbs.db
# Arquivos de desenvolvimento
*.sh
docker-compose.yml
.dockerignore
# Arquivos temporários
*.tmp
*.temp

11318
css/styles.css Normal file

File diff suppressed because it is too large Load Diff

BIN
en/assets/favicon.ico Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.6 KiB

BIN
en/assets/favicon_old.ico Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 23 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 23 KiB

BIN
en/assets/img/about/1.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 19 KiB

BIN
en/assets/img/about/2.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.9 KiB

BIN
en/assets/img/about/3.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 18 KiB

BIN
en/assets/img/about/4.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 16 KiB

View File

@ -0,0 +1 @@
<svg id="Layer_1" data-name="Layer 1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 579.74 579.74"><defs><style>.cls-1{fill:none;stroke:#000;stroke-miterlimit:10;stroke-width:6px;}</style></defs><line class="cls-1" x1="2.12" y1="2.12" x2="577.62" y2="577.62"/><line class="cls-1" x1="2.12" y1="577.62" x2="577.62" y2="2.12"/></svg>

After

Width:  |  Height:  |  Size: 333 B

BIN
en/assets/img/header-bg.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 541 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 233 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 MiB

View File

@ -0,0 +1,34 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Generator: Adobe Illustrator 25.2.1, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
viewBox="0 0 2030.6 546.3" style="enable-background:new 0 0 2030.6 546.3;" xml:space="preserve">
<style type="text/css">
.st0{fill:#CED4DA;}
</style>
<g>
<path class="st0" d="M1045.4,269.1c-16.8,0-28.9,5.5-41.1,11.1v126.7c11.7,1.1,18.5,1.1,29.6,1.1c40.2,0,45.8-18.4,45.8-44.2v-60.5
C1079.7,284.3,1073.4,269.1,1045.4,269.1L1045.4,269.1z M778.1,262.2c-27.9,0-34.3,15.3-34.3,34.3v10.7h68.6v-10.7
C812.4,277.5,806,262.2,778.1,262.2z M260.4,394.1c0,15,7.1,22.8,22.7,22.8c16.8,0,26.7-5.5,39-11.1v-30.1h-36.7
C268,375.7,260.4,379,260.4,394.1L260.4,394.1z M1305.4,269.1c-28,0-37.7,15.3-37.7,34.3v69.4c0,19.1,9.7,34.4,37.7,34.4
c27.9,0,37.7-15.3,37.7-34.4v-69.4C1343,284.3,1333.3,269.1,1305.4,269.1z M123.3,471.8H41.1v-199H0v-68.6h41.1v-41.2
c0-55.9,23.2-89.2,89.1-89.2H185v68.6h-34.3c-25.7,0-27.3,9.6-27.3,27.5l-0.1,34.3h62.1l-7.3,68.6h-54.9L123.3,471.8L123.3,471.8z
M404.3,472.4h-68.5l-3-17.3c-31.3,17.3-59.2,20.1-77.6,20.1c-50.3,0-77-33.6-77-80c0-54.8,31.2-74.3,87-74.3H322V309
c0-28-3.2-36.2-46.2-36.2h-70.3l6.9-68.6h76.8c94.3,0,115,29.8,115,105.3L404.3,472.4L404.3,472.4z M637.3,277.9
c-42.6-7.3-54.9-8.9-75.4-8.9c-36.9,0-48,8.1-48,39.4v59.2c0,31.3,11.1,39.5,48,39.5c20.5,0,32.8-1.6,75.4-9V465
c-37.3,8.4-61.7,10.6-82.2,10.6c-88.3,0-123.4-46.4-123.4-113.5v-48c0-67.1,35.1-113.6,123.4-113.6c20.6,0,44.9,2.2,82.2,10.6
V277.9L637.3,277.9z M894.6,362H743.8v5.5c0,31.3,11.1,39.5,48,39.5c33.1,0,53.3-1.6,95.9-9V465c-41.1,8.4-62.4,10.6-102.7,10.6
c-88.3,0-123.4-46.4-123.4-113.5v-54.9c0-58.7,26-106.7,116.5-106.7s116.5,47.5,116.5,106.7V362z M1161.9,363.3
c0,64.8-18.5,112.1-130.7,112.1c-40.5,0-64.3-3.6-109-10.4V94.5l82.2-13.7v129.6c17.8-6.6,40.8-10,61.7-10
c82.2,0,95.9,36.9,95.9,96.1L1161.9,363.3L1161.9,363.3z M1425.3,364.7c0,55.9-23.1,110.1-119.7,110.1
c-96.6,0-120.1-54.2-120.1-110.1v-54c0-55.9,23.5-110.2,120.1-110.2c96.6,0,119.7,54.2,119.7,110.2V364.7L1425.3,364.7z
M1688.6,364.7c0,55.9-23.1,110.1-119.7,110.1c-96.6,0-120.1-54.2-120.1-110.1v-54c0-55.9,23.5-110.2,120.1-110.2
c96.6,0,119.7,54.2,119.7,110.2V364.7L1688.6,364.7z M1958.8,471.8h-89.1l-75.3-125.8v125.8h-82.2V94.5l82.2-13.7v242.9l75.3-119.4
h89.1l-82.3,130.3L1958.8,471.8z M1568.7,269.1c-27.9,0-37.6,15.3-37.6,34.3v69.4c0,19.1,9.7,34.4,37.6,34.4
c27.9,0,37.8-15.3,37.8-34.4v-69.4C1606.4,284.3,1596.6,269.1,1568.7,269.1L1568.7,269.1z M2005.7,424.9
c13.8,0,24.9,11.3,24.9,25.4c0,14.3-11,25.5-25,25.5c-13.9,0-25.1-11.2-25.1-25.5c0-14.1,11.3-25.4,25.1-25.4H2005.7z
M2005.6,428.9c-11.2,0-20.3,9.6-20.3,21.4c0,12.1,9.1,21.5,20.4,21.5c11.3,0.1,20.3-9.5,20.3-21.4c0-11.9-9-21.6-20.3-21.6H2005.6
z M2000.9,465.1h-4.5v-28.3c2.4-0.3,4.6-0.7,8-0.7c4.3,0,7.1,0.9,8.8,2.1c1.7,1.3,2.6,3.2,2.6,5.9c0,3.7-2.5,6-5.5,6.9v0.2
c2.5,0.5,4.2,2.7,4.7,6.9c0.7,4.4,1.3,6.1,1.8,7h-4.7c-0.7-0.9-1.4-3.5-1.9-7.2c-0.7-3.6-2.5-5-6.1-5h-3.1L2000.9,465.1
L2000.9,465.1z M2000.9,449.4h3.3c3.7,0,6.9-1.4,6.9-4.9c0-2.5-1.8-5-6.9-5c-1.5,0-2.5,0.1-3.3,0.2V449.4L2000.9,449.4z"/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 3.1 KiB

View File

@ -0,0 +1,35 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Generator: Adobe Illustrator 25.2.1, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
viewBox="0 0 2500 928" style="enable-background:new 0 0 2500 928;" xml:space="preserve">
<style type="text/css">
.st0{fill:#CED4DA;}
</style>
<path class="st0" d="M307.9,112.1h22.2c77.2,1.7,153.1,32.7,207.6,87.7c-20.1,20.6-40.7,40.3-60.4,60.8
c-30.6-27.7-67.5-49.1-107.8-56.6c-59.6-12.6-123.7-1.3-173.7,32.7c-54.5,35.7-91.4,96.1-99.4,160.7c-8.8,63.8,9.2,130.9,50.8,180.4
c39.8,48.2,100.7,78.4,163.6,80.5c58.7,3.4,120-14.7,162.8-55.8c33.6-28.9,49.1-73,54.1-115.8c-69.6,0-139.3,0.4-208.9,0v-86.4H612
c15.1,92.7-6.7,197.1-77.2,263.4c-47,47-112,74.7-178.3,80.1c-64.2,6.3-130.5-5.9-187.5-36.9c-68.4-36.5-122.9-98.2-149.7-170.7
C-5.9,469.5-6.3,394,17.2,326.8c21.4-61.2,62.5-115.4,115.4-153.1C183.3,136.4,245,115.8,307.9,112.1z"/>
<path class="st0" d="M1989.9,133.9h89.8v599c-29.8,0-60,0.4-89.8-0.4C1990.4,533.2,1989.9,333.5,1989.9,133.9L1989.9,133.9z"/>
<path class="st0" d="M811.7,341.5C867,331,927,342.8,972.7,375.9c41.5,29.4,70.5,75.5,79.3,125.8c11.3,58.3-2.9,122.1-40.7,168.2
c-40.7,51.6-107.4,79.3-172.4,75.1c-59.6-3.4-117.4-33.1-152.7-81.8c-39.8-53.7-49.5-127.5-27.7-190.4
C680.4,405.3,742,353.7,811.7,341.5 M824.2,421.2c-22.7,5.9-43.6,18.9-58.7,37.3c-40.7,48.7-38.2,127.9,6.7,173.2
c25.6,26,64.2,38.2,99.8,31c33.1-5.9,62.1-28.1,78-57.5c27.7-49.9,19.7-118.7-22.7-157.7C900.2,422.5,860.3,412,824.2,421.2
L824.2,421.2z"/>
<path class="st0" d="M1256.3,341.5c63.3-12.2,132.6,5.5,179.9,49.9c77.2,69.2,85.6,198.8,19.7,278.5c-39.8,50.3-104.4,78-168.2,75.1
c-60.8-1.7-120.8-31.9-156.9-81.8c-40.7-54.9-49.5-130.5-26.4-194.6C1127.5,403.2,1187.9,353.3,1256.3,341.5 M1268.9,421.2
c-22.7,5.9-43.6,18.9-58.7,36.9c-40.3,47.8-38.6,125.8,4.6,171.6c25.6,27.3,65.4,40.7,102.3,33.1c32.7-6.3,62.1-28.1,78-57.5
c27.3-50.3,19.3-119.1-23.5-158.1C1344.4,422.1,1304.5,412,1268.9,421.2L1268.9,421.2z"/>
<path class="st0" d="M1633.4,365.8c48.2-30.2,112.4-38.6,164.4-12.6c16.4,7.1,29.8,19.3,42.8,31.5c0.4-11.3,0-23.1,0.4-34.8
c28.1,0.4,56.2,0,84.7,0.4v370c-0.4,55.8-14.7,114.9-54.9,155.6c-44,44.9-111.6,58.7-172.4,49.5c-65-9.6-121.6-57-146.8-117
c25.2-12.2,51.6-21.8,77.6-33.1c14.7,34.4,44.5,63.8,81.8,70.5c37.3,6.7,80.5-2.5,104.9-33.6c26-31.9,26-75.5,24.7-114.5
c-19.3,18.9-41.5,35.7-68.4,41.9c-58.3,16.4-122.5-3.8-167.4-43.2c-45.3-39.4-72.1-100.3-69.6-160.7
C1536.5,467.4,1575.1,401.5,1633.4,365.8 M1720.2,419.5c-25.6,4.2-49.5,18.5-65.9,38.2c-39.4,47-39.4,122.1,0.4,168.2
c22.7,27.3,59.1,42.4,94.4,38.6c33.1-3.4,63.8-24.3,80.1-53.3c27.7-49.1,23.1-115.8-14.3-158.6
C1791.9,426.2,1755,413.2,1720.2,419.5L1720.2,419.5z"/>
<path class="st0" d="M2187.5,387.2c50.3-47,127.9-62.9,192.5-38.2c61.2,23.1,100.3,81.4,120,141.4c-91,37.8-181.6,75.1-272.7,112.8
c12.6,23.9,31.9,45.7,57.9,54.5c36.5,13,80.1,8.4,110.7-15.9c12.2-9.2,21.8-21.4,31-33.1c23.1,15.5,46.1,30.6,69.2,46.1
c-32.7,49.1-87.7,83.5-146.8,88.9c-65.4,8-135.1-17.2-177.4-68.4C2102.3,594.9,2109.1,459.8,2187.5,387.2 M2232.4,464.8
c-14.3,20.6-20.1,45.7-19.7,70.5c60.8-25.2,121.6-50.3,182.5-75.9c-10.1-23.5-34.4-37.8-59.1-41.5
C2296.1,410.7,2254.6,432.1,2232.4,464.8z"/>
</svg>

After

Width:  |  Height:  |  Size: 3.2 KiB

View File

@ -0,0 +1,24 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Generator: Adobe Illustrator 25.2.1, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
viewBox="0 0 2500 1000" style="enable-background:new 0 0 2500 1000;" xml:space="preserve">
<style type="text/css">
.st0{fill:#CED4DA;}
</style>
<path class="st0" d="M0,0v68.4h486.6V0H0z M555.6,0v68.4H1249c0,0-70.8-68.4-164.6-68.4H555.6z M1385.1,0v68.4h419.5L1779.7,0
H1385.1z M2105.4,0l-24.9,68.4h415.7V0H2105.4z M0,133.1v68.4h486.6v-68.4H0z M555.6,133.2v68.3h773.9c0,0-9-52.7-24.8-68.3
L555.6,133.2L555.6,133.2z M1385.1,133.2v68.3h465.5l-23-68.3L1385.1,133.2L1385.1,133.2z M2055.6,133.2l-23,68.3h463.7v-68.3
H2055.6z M139.8,266.1v68.5h210.7v-68.5L139.8,266.1L139.8,266.1z M695.4,266.1v68.5h210.7v-68.5L695.4,266.1L695.4,266.1z
M1111.1,266.1v68.5h210.7c0,0,13.4-36.2,13.4-68.5L1111.1,266.1L1111.1,266.1z M1524.9,266.1v68.5h373.6l-24.9-68.5L1524.9,266.1
L1524.9,266.1z M2009.7,266.1l-25,68.5h375.5v-68.5L2009.7,266.1L2009.7,266.1z M139.8,399.3v68.4h210.7v-68.4H139.8L139.8,399.3z
M695.4,399.3v68.4h538.3c0,0,45-35.1,59.4-68.4H695.4z M1524.9,399.3v68.4h210.7v-38.1l13.4,38.1h386l14.4-38.1v38.1h210.7v-68.4
h-395.6l-21,57.9l-21.1-57.9H1524.9z M139.8,532.3v68.4h210.7v-68.4H139.8z M695.4,532.3v68.4h597.7c-14.3-33.2-59.4-68.4-59.4-68.4
H695.4z M1524.9,532.3v68.4h210.7v-68.4H1524.9z M1773.9,532.3l25.5,68.4h289.5l24.2-68.4H1773.9z M2149.4,532.3v68.4h210.7v-68.4
H2149.4z M139.8,665.4v68.4h210.7v-68.4H139.8z M695.4,665.4v68.4h210.7v-68.4H695.4z M1111.1,665.4v68.4h224.1
c0-32.3-13.4-68.4-13.4-68.4H1111.1L1111.1,665.4z M1524.9,665.4v68.4h210.7v-68.4H1524.9z M1821.8,665.4l24.7,68.4h194l24.9-68.4
H1821.8z M2149.4,665.4v68.4h210.7v-68.4H2149.4z M3.8,798.4v68.5h486.6v-68.5H3.8z M555.6,798.4v68.5h749.1
c15.8-15.7,24.8-68.5,24.8-68.5H555.6L555.6,798.4z M1388.9,798.4v68.5h346.8v-68.5H1388.9z M1869.7,798.4l25.4,68.5h98.7l23.8-68.5
H1869.7z M2149.4,798.4v68.5H2500v-68.5H2149.4z M3.8,931.6v68.4h486.6v-68.4H3.8z M555.6,931.6v68.3h528.8
c93.8,0,164.6-68.3,164.6-68.3H555.6z M1388.9,931.6v68.4h346.8v-68.4H1388.9z M1917.9,931.6l24.4,68.2l4.2,0.1l24.8-68.3H1917.9z
M2149.4,931.6v68.4H2500v-68.4H2149.4z"/>
</svg>

After

Width:  |  Height:  |  Size: 2.2 KiB

View File

@ -0,0 +1,42 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Generator: Adobe Illustrator 25.2.1, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
viewBox="0 0 2500 534" style="enable-background:new 0 0 2500 534;" xml:space="preserve">
<style type="text/css">
.st0{fill:#CED4DA;}
</style>
<path class="st0" d="M2500,241.6v-44h-54.6v-68.4l-1.8,0.6l-51.3,15.7l-1,0.3v51.8h-80.9v-28.9c0-13.4,3-23.7,8.9-30.6
c5.9-6.8,14.3-10.2,25-10.2c7.7,0,15.7,1.8,23.7,5.4l2,0.9V88l-0.9-0.3c-7.5-2.7-17.7-4.1-30.3-4.1c-15.9,0-30.4,3.5-43,10.3
c-12.6,6.9-22.6,16.7-29.5,29.2c-6.9,12.5-10.5,26.9-10.5,42.8v31.7h-38v44h38v185.2h54.6V241.6h80.9v117.7c0,48.5,22.9,73,68,73
c7.4,0,15.2-0.9,23.2-2.6c8.1-1.7,13.6-3.5,16.9-5.4l0.7-0.4v-44.4l-2.2,1.5c-3,2-6.7,3.6-11,4.8c-4.3,1.2-8,1.8-10.8,1.8
c-10.6,0-18.4-2.8-23.2-8.5c-4.9-5.7-7.4-15.6-7.4-29.4V241.6H2500L2500,241.6z M2095.9,387.7c-19.8,0-35.4-6.6-46.4-19.5
c-11.1-13-16.7-31.5-16.7-55.1c0-24.3,5.6-43.3,16.7-56.6c11-13.1,26.5-19.8,46-19.8c18.9,0,34,6.4,44.8,19
c10.8,12.6,16.3,31.5,16.3,56.1c0,24.9-5.2,44-15.4,56.8C2131,381.3,2115.8,387.7,2095.9,387.7 M2098.3,192.1
c-37.8,0-67.8,11.1-89.2,32.9c-21.4,21.8-32.2,52.1-32.2,89.9c0,35.9,10.6,64.7,31.5,85.8c20.9,21,49.3,31.7,84.5,31.7
c36.6,0,66.1-11.2,87.4-33.4c21.4-22.1,32.2-52.1,32.2-89c0-36.4-10.2-65.5-30.2-86.4C2162.1,202.7,2133.9,192.1,2098.3,192.1
M1888.8,192.1c-25.7,0-47,6.6-63.2,19.5c-16.3,13-24.6,30.1-24.6,50.8c0,10.8,1.8,20.3,5.3,28.4c3.5,8.1,9,15.3,16.3,21.3
c7.2,6,18.4,12.2,33.2,18.6c12.4,5.1,21.7,9.4,27.6,12.9c5.8,3.3,9.8,6.7,12.1,10c2.2,3.2,3.4,7.6,3.4,13
c0,15.4-11.5,22.9-35.3,22.9c-8.8,0-18.8-1.8-29.8-5.5c-10.9-3.6-21.2-8.8-30.6-15.5l-2.3-1.6v52.5l0.8,0.4
c7.7,3.6,17.5,6.6,28.9,8.9c11.5,2.4,21.9,3.6,30.9,3.6c27.9,0,50.4-6.6,66.8-19.6c16.5-13.1,24.9-30.6,24.9-52.1
c0-15.4-4.5-28.7-13.4-39.4c-8.8-10.6-24.1-20.3-45.4-28.9c-17-6.8-27.9-12.5-32.4-16.8c-4.3-4.2-6.5-10.1-6.5-17.7
c0-6.7,2.7-12,8.3-16.3c5.6-4.3,13.4-6.6,23.2-6.6c9.1,0,18.4,1.4,27.6,4.3c9.2,2.8,17.4,6.6,24.1,11.2l2.2,1.5v-49.8l-0.9-0.4
c-6.3-2.7-14.5-5-24.5-6.8C1905.8,193,1896.7,192.1,1888.8,192.1 M1658.7,387.7c-19.8,0-35.4-6.6-46.4-19.5
c-11.1-13-16.7-31.5-16.7-55.1c0-24.3,5.6-43.3,16.7-56.6c11-13.1,26.5-19.8,46-19.8c18.9,0,34,6.4,44.8,19
c10.8,12.6,16.3,31.5,16.3,56.1c0,24.9-5.2,44-15.4,56.8C1693.9,381.3,1678.7,387.7,1658.7,387.7 M1661.2,192.1
c-37.8,0-67.8,11.1-89.2,32.9c-21.4,21.8-32.2,52.1-32.2,89.9c0,35.9,10.6,64.7,31.5,85.8c20.9,21,49.3,31.7,84.5,31.7
c36.6,0,66.1-11.2,87.4-33.4c21.4-22.1,32.2-52.1,32.2-89c0-36.4-10.2-65.5-30.2-86.4C1725,202.7,1696.7,192.1,1661.2,192.1
M1456.9,237.3v-39.7h-53.9v229.2h53.9V309.6c0-19.9,4.5-36.3,13.4-48.7c8.8-12.2,20.5-18.4,34.9-18.4c4.9,0,10.3,0.8,16.2,2.4
c5.8,1.6,10.1,3.3,12.6,5.1l2.3,1.6v-54.4l-0.9-0.4c-5-2.1-12.1-3.2-21.1-3.2c-13.5,0-25.7,4.4-36.1,12.9
c-9.1,7.5-15.7,17.9-20.7,30.7H1456.9z M1306.4,192.1c-24.7,0-46.8,5.3-65.6,15.8c-18.8,10.5-33.3,25.4-43.2,44.5
c-9.9,19-14.9,41.1-14.9,65.9c0,21.7,4.8,41.5,14.4,59c9.6,17.5,23.2,31.3,40.3,40.8c17.2,9.5,37,14.3,58.9,14.3
c25.6,0,47.5-5.1,65-15.2l0.7-0.4v-49.4l-2.3,1.7c-7.9,5.8-16.8,10.4-26.4,13.7c-9.5,3.3-18.2,5-25.8,5c-21.2,0-38.1-6.6-50.5-19.7
c-12.4-13.1-18.6-31.4-18.6-54.5c0-23.2,6.5-42.1,19.4-55.9c12.8-13.8,29.8-20.9,50.6-20.9c17.7,0,35,6,51.3,17.9l2.3,1.6v-52
l-0.7-0.4c-6.1-3.4-14.5-6.3-24.9-8.4C1326.2,193.2,1316,192.1,1306.4,192.1 M1145.6,197.6h-53.9v229.2h53.9V197.6L1145.6,197.6z
M1119.2,100c-8.9,0-16.6,3-23,9c-6.4,6-9.6,13.6-9.6,22.5c0,8.8,3.2,16.2,9.5,22c6.3,5.8,14,8.8,23.1,8.8c9,0,16.8-3,23.2-8.8
c6.4-5.9,9.6-13.3,9.6-22.1c0-8.6-3.2-16.1-9.4-22.2C1136.4,103.1,1128.6,100,1119.2,100 M984.7,180.7v246.1h55V107h-76.1
l-96.8,237.5L772.9,107h-79.2v319.8h51.7V180.7h1.8l99.2,246.1h39l97.6-246.1L984.7,180.7L984.7,180.7z"/>
<path class="st0" d="M253.6,253.7H0V0.1h253.6V253.7z"/>
<path class="st0" d="M533.6,253.7H280V0.1h253.6L533.6,253.7L533.6,253.7z"/>
<path class="st0" d="M253.6,533.9H0V280.3h253.6V533.9z"/>
<path class="st0" d="M533.6,533.9H280V280.3h253.6L533.6,533.9L533.6,533.9z"/>
</svg>

After

Width:  |  Height:  |  Size: 4.0 KiB

BIN
en/assets/img/map-image.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 356 KiB

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 14 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 18 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 32 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 17 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 26 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 17 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 32 KiB

BIN
en/assets/img/team/1.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 39 KiB

BIN
en/assets/img/team/2.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 60 KiB

BIN
en/assets/img/team/3.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 56 KiB

11318
en/css/styles.css Normal file

File diff suppressed because it is too large Load Diff

862
en/index.html Normal file
View File

@ -0,0 +1,862 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no" />
<meta name="description" content="Consultoria especializada em RAG e IA empresarial com C#/.NET. Reduza custos e aumente performance com soluções enterprise-grade." />
<meta name="author" content="JobMaker - Ricardo Carneiro" />
<title>JobMaker - Consultoria RAG e IA Empresarial | C#/.NET</title>
<!-- Favicon-->
<link rel="icon" type="image/x-icon" href="assets/favicon.ico" />
<!-- Font Awesome icons (free version)-->
<script src="https://use.fontawesome.com/releases/v6.3.0/js/all.js" crossorigin="anonymous"></script>
<!-- Google fonts-->
<link href="https://fonts.googleapis.com/css?family=Montserrat:400,700" rel="stylesheet" type="text/css" />
<link href="https://fonts.googleapis.com/css?family=Roboto+Slab:400,100,300,700" rel="stylesheet" type="text/css" />
<!-- Core theme CSS (includes Bootstrap)-->
<link href="css/styles.css" rel="stylesheet" />
<style>
/* Custom CSS integrado */
:root {
--bs-primary: #667eea;
--bs-primary-rgb: 102, 126, 234;
}
body {
font-family: 'Roboto Slab', -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, sans-serif;
line-height: 1.6;
}
/* Navbar styles profissionais */
#mainNav {
background-color: #212529;
transition: all 0.3s;
padding-top: 1rem;
padding-bottom: 1rem;
}
#mainNav .navbar-brand {
color: #ffc800;
font-family: "Montserrat", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;
font-weight: 700;
letter-spacing: 0.0625em;
text-transform: uppercase;
font-size: 1.5rem;
}
#mainNav .navbar-brand:hover {
color: #ffc800;
}
#mainNav .navbar-nav .nav-item .nav-link {
font-family: "Montserrat", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;
font-size: 0.95rem;
color: #fff;
letter-spacing: 0.0625em;
font-weight: 400;
transition: color 0.3s;
}
#mainNav .navbar-nav .nav-item .nav-link.active,
#mainNav .navbar-nav .nav-item .nav-link:hover {
color: #ffc800;
}
#mainNav.navbar-shrink {
padding-top: 0.5rem;
padding-bottom: 0.5rem;
}
#mainNav.navbar-shrink .navbar-brand {
font-size: 1.25rem;
}
.masthead {
padding-top: 10.5rem;
padding-bottom: 6rem;
text-align: center;
color: #fff;
background: linear-gradient(to bottom, rgba(22, 22, 22, 0.3) 0%, rgba(22, 22, 22, 0.7) 75%, #161616 100%), url("data:image/svg+xml,%3Csvg width='60' height='60' viewBox='0 0 60 60' xmlns='http://www.w3.org/2000/svg'%3E%3Cg fill='none' fill-rule='evenodd'%3E%3Cg fill='%23667eea' fill-opacity='0.1'%3E%3Ccircle cx='30' cy='30' r='4'/%3E%3Ccircle cx='0' cy='30' r='4'/%3E%3Ccircle cx='60' cy='30' r='4'/%3E%3Ccircle cx='30' cy='0' r='4'/%3E%3Ccircle cx='30' cy='60' r='4'/%3E%3C/g%3E%3C/g%3E%3C/svg%3E");
background-attachment: scroll;
background-position: center center;
background-repeat: repeat;
background-size: 60px 60px;
}
.masthead .masthead-subheading {
font-size: 4rem; /* MAIOR - título principal */
font-style: normal; /* SEM itálico */
line-height: 4rem;
margin-bottom: 25px;
color: #ffc800; /* BRANCO PURO - máximo contraste */
text-shadow: 2px 2px 4px rgba(0,0,0,0.8); /* Sombra para destacar */
font-family: "Roboto Slab", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;
font-weight: 700;
text-transform: uppercase;
}
.masthead .masthead-heading {
font-size: 1.8rem; /* MENOR - subtítulo */
font-weight: 400;
line-height: 2.2rem;
margin-bottom: 2rem;
color: #ffc800; /* Dourado para destaque secundário */
text-shadow: 1px 1px 3px rgba(0,0,0,0.7); /* Sombra para legibilidade */
font-family: "Roboto Slab", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;
}
.btn-primary {
background: linear-gradient(45deg, #667eea, #764ba2);
border: none;
transition: transform 0.3s, box-shadow 0.3s;
font-family: "Montserrat", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;
font-weight: 700;
letter-spacing: 0.0625em;
padding: 1.25rem 2.5rem;
font-size: 0.875rem;
}
.btn-primary:hover {
transform: translateY(-2px);
box-shadow: 0 10px 20px rgba(102, 126, 234, 0.4);
}
.btn-outline-light {
font-family: "Montserrat", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;
font-weight: 700;
letter-spacing: 0.0625em;
padding: 1.25rem 2.5rem;
font-size: 0.875rem;
transition: all 0.3s;
}
.btn-outline-light:hover {
background-color: #ffc800;
border-color: #ffc800;
color: #212529;
}
.section-heading {
color: #333;
font-family: "Montserrat", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;
font-weight: 700;
}
.text-muted { color: #6c757d !important; }
/* Comparativo C# vs Python */
.comparison-section {
background: linear-gradient(135deg, #f5f7fa 0%, #c3cfe2 100%);
padding: 80px 0;
}
.comparison-table {
background: white;
border-radius: 15px;
overflow: hidden;
box-shadow: 0 10px 30px rgba(0,0,0,0.1);
margin: 3rem 0;
}
.table-header {
background: linear-gradient(45deg, #667eea, #764ba2);
color: white;
padding: 1.5rem;
text-align: center;
font-size: 1.5rem;
font-weight: bold;
}
.comparison-grid {
display: grid;
grid-template-columns: 1fr 1fr 1fr;
gap: 0;
}
.comparison-header {
background: #f8f9fa;
padding: 1rem;
font-weight: bold;
text-align: center;
border-bottom: 2px solid #e9ecef;
}
.comparison-item {
padding: 1rem;
border-bottom: 1px solid #e9ecef;
border-right: 1px solid #e9ecef;
text-align: center;
}
.comparison-item:nth-child(3n) { border-right: none; }
.advantage {
background: linear-gradient(45deg, #d4edda, #c3e6cb);
color: #155724;
font-weight: bold;
}
.cost-highlight {
background: linear-gradient(45deg, #fff3cd, #ffeaa7);
color: #856404;
font-weight: bold;
}
/* Serviços com layout melhorado */
.page-section {
padding: 6rem 0;
}
.row.text-center {
margin-top: 3rem;
}
.service-col {
margin-bottom: 3rem;
}
.service-card {
background: white;
padding: 2rem;
border-radius: 15px;
box-shadow: 0 10px 30px rgba(0,0,0,0.1);
height: 100%;
border-left: 5px solid #667eea;
transition: transform 0.3s;
}
.service-card:hover {
transform: translateY(-5px);
}
.service-card .service-icon {
font-size: 3rem;
color: #667eea;
margin-bottom: 1rem;
}
.service-card ul {
text-align: left;
padding-left: 0;
list-style: none;
}
.service-card ul li {
margin-bottom: 0.5rem;
padding-left: 1.5rem;
position: relative;
}
.service-card ul li::before {
content: "✅";
position: absolute;
left: 0;
}
.pricing-tier {
display: inline-block;
background: linear-gradient(45deg, #667eea, #764ba2);
color: white;
padding: 0.5rem 1rem;
border-radius: 20px;
font-size: 0.9rem;
margin: 1rem 0;
}
/* Timeline styles */
.timeline {
list-style: none;
padding: 0;
position: relative;
}
.timeline:before {
top: 0;
bottom: 0;
position: absolute;
content: "";
width: 2px;
background-color: #e9ecef;
left: 40px;
margin-left: -1.5px;
}
.timeline > li {
margin-bottom: 50px;
position: relative;
min-height: 50px;
}
.timeline > li:after,
.timeline > li:before {
content: " ";
display: table;
}
.timeline > li:after {
clear: both;
}
.timeline > li .timeline-panel {
width: 100%;
float: right;
padding: 0 20px 0 100px;
position: relative;
text-align: left;
}
.timeline > li .timeline-panel:before {
border-left-width: 0;
border-right-width: 15px;
left: -15px;
right: auto;
}
.timeline > li .timeline-panel:after {
border-left-width: 0;
border-right-width: 14px;
left: -14px;
right: auto;
}
.timeline > li .timeline-image {
left: 0;
margin-left: 0;
width: 80px;
height: 80px;
position: absolute;
z-index: 100;
background-color: #667eea;
color: white;
border-radius: 100%;
border: 7px solid #e9ecef;
text-align: center;
}
.timeline > li .timeline-image h4 {
font-size: 10px;
margin-top: 12px;
line-height: 14px;
}
.timeline > li.timeline-inverted > .timeline-panel {
float: right;
text-align: left;
padding: 0 20px 0 100px;
}
.timeline > li.timeline-inverted > .timeline-panel:before {
border-left-width: 0;
border-right-width: 15px;
left: -15px;
right: auto;
}
.timeline > li.timeline-inverted > .timeline-panel:after {
border-left-width: 0;
border-right-width: 14px;
left: -14px;
right: auto;
}
.timeline-heading h4 {
margin-top: 0;
color: inherit;
}
.timeline-heading h4.subheading {
text-transform: none;
}
.timeline-body > p,
.timeline-body > ul {
margin-bottom: 0;
}
/* WhatsApp Button */
.whatsapp-float {
position: fixed;
width: 60px;
height: 60px;
bottom: 40px;
right: 40px;
background-color: #25d366;
color: #FFF;
border-radius: 50px;
text-align: center;
font-size: 30px;
box-shadow: 2px 2px 3px #999;
z-index: 100;
display: flex;
align-items: center;
justify-content: center;
transition: all 0.3s;
}
@media (max-width: 768px) {
.masthead .masthead-subheading {
font-size: 2.5rem;
line-height: 2.5rem;
}
.masthead .masthead-heading {
font-size: 1.6rem;
line-height: 1.6rem;
}
}
.whatsapp-float:hover {
transform: scale(1.1);
color: #FFF;
text-decoration: none;
}
.footer {
text-align: center;
font-size: 0.9rem;
font-family: "Montserrat", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;
background-color: #212529;
color: #fff;
}
/* Responsive */
@media (max-width: 768px) {
.comparison-grid { grid-template-columns: 1fr; }
.comparison-header { display: none; }
.masthead { min-height: 70vh; }
.masthead .masthead-heading { font-size: 2.25rem; line-height: 2.25rem; }
.masthead .masthead-subheading { font-size: 1.25rem; }
.timeline:before { left: 40px; }
.timeline > li > .timeline-panel { width: 100%; float: right; padding: 0 20px 0 100px; }
.timeline > li > .timeline-image { left: 0; width: 80px; height: 80px; }
}
@media (min-width: 768px) {
.timeline:before { left: 50%; }
.timeline > li { margin-bottom: 100px; min-height: 100px; }
.timeline > li > .timeline-panel { width: 41%; float: left; padding: 0 20px 20px 30px; text-align: right; }
.timeline > li > .timeline-image { width: 100px; height: 100px; left: 50%; margin-left: -50px; }
.timeline > li > .timeline-image h4 { font-size: 13px; margin-top: 16px; line-height: 18px; }
.timeline > li.timeline-inverted > .timeline-panel { float: right; text-align: left; padding: 0 30px 20px 20px; }
}
@media (min-width: 992px) {
.timeline > li { min-height: 150px; }
.timeline > li > .timeline-panel { padding: 0 20px 20px; }
.timeline > li > .timeline-image { width: 150px; height: 150px; margin-left: -75px; }
.timeline > li > .timeline-image h4 { font-size: 18px; margin-top: 30px; line-height: 26px; }
.timeline > li.timeline-inverted > .timeline-panel { padding: 0 20px 20px; }
}
</style>
</head>
<body id="page-top">
<!-- Navigation-->
<nav class="navbar navbar-expand-lg navbar-dark fixed-top" id="mainNav">
<div class="container">
<a class="navbar-brand" href="#page-top"><img src="../assets/img/jobmaker_logo.png" alt="..." /></a>
<button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbarResponsive" aria-controls="navbarResponsive" aria-expanded="false" aria-label="Toggle navigation">
Menu
<i class="fas fa-bars ms-1"></i>
</button>
<div class="collapse navbar-collapse" id="navbarResponsive">
<ul class="navbar-nav text-uppercase ms-auto py-4 py-lg-0">
<li class="nav-item"><a class="nav-link" href="#advantages">C# Advantages</a></li>
<li class="nav-item"><a class="nav-link" href="#services">Services</a></li>
<li class="nav-item"><a class="nav-link" href="#about">Expertise</a></li>
<li class="nav-item"><a class="nav-link" href="#contact">Contact</a></li>
</ul>
</div>
</div>
</nav>
<!-- Masthead-->
<header class="masthead">
<div class="container">
<div class="masthead-subheading">Enterprise RAG & AI Consulting</div>
<div class="masthead-heading text-uppercase">Cost Reduction with C#/.NET</div>
<a class="btn btn-primary btn-xl text-uppercase" href="#services">Discover the Advantages</a>
</div>
</header>
<!-- Services-->
<section class="page-section" id="vantagens">
<div class="container">
<div class="text-center">
<h2 class="section-heading text-uppercase">C# Advantages</h2>
<!-- <h3 class="section-subheading text-muted">Lorem ipsum dolor sit amet consectetur.</h3> -->
</div>
<div class="row text-center">
<div class="comparison-table">
<div class="table-header">
Comparison: C#/.NET vs Python for Enterprise RAG
</div>
<div class="comparison-grid">
<div class="comparison-header">Aspect</div>
<div class="comparison-header">C#/.NET</div>
<div class="comparison-header">Python</div>
<div class="comparison-item"><strong>Performance</strong></div>
<div class="comparison-item advantage">3-5x faster<br>Lower memory usage</div>
<div class="comparison-item">Market standard<br>Slower</div>
<div class="comparison-item"><strong>Operating Cost</strong></div>
<div class="comparison-item cost-highlight">40-60% lower<br>Fewer servers</div>
<div class="comparison-item">Standard cost<br>More resources</div>
<div class="comparison-item"><strong>Enterprise Integration</strong></div>
<div class="comparison-item advantage">Native Microsoft<br>Azure, Office 365</div>
<div class="comparison-item">Requires adaptations<br>More complex</div>
<div class="comparison-item"><strong>Security</strong></div>
<div class="comparison-item advantage">Enterprise-grade<br>Native compliance</div>
<div class="comparison-item">Requires config<br>Third-party libs</div>
<div class="comparison-item"><strong>Maintenance</strong></div>
<div class="comparison-item advantage">Strongly typed<br>Fewer bugs</div>
<div class="comparison-item">Runtime errors<br>More debugging</div>
</div>
</div>
</div>
<div class="text-center mt-4">
<p class="lead"><strong>Result:</strong> 40-60% savings in infrastructure + 3-5x superior performance</p>
</div>
</div>
</section>
<!-- Portfolio Grid-->
<section class="page-section bg-light" id="services">
<div class="container">
<div class="text-center">
<h2 class="section-heading text-uppercase">Specialized Services</h2>
<h3 class="section-subheading text-muted">RAG/AI solutions with C#/.NET for enterprise cost reduction.</h3>
</div>
<div class="row text-center">
<div class="col-md-6 service-col">
<div class="service-card">
<div class="service-icon">
<i class="fas fa-lightbulb"></i>
</div>
<h4>Strategic RAG Consulting</h4>
<div class="pricing-tier">Strategic Investment</div>
<p>Complete analysis, custom architecture, and implementation roadmap. ROI definition and projected cost reduction.</p>
<ul>
<li>Complete technical assessment</li>
<li>Custom RAG architecture</li>
<li>ROI and cost reduction analysis</li>
<li>Detailed roadmap</li>
</ul>
</div>
</div>
<div class="col-md-6 service-col">
<div class="service-card">
<div class="service-icon">
<i class="fas fa-rocket"></i>
</div>
<h4>Complete RAG Implementation</h4>
<div class="pricing-tier">Enterprise Project</div>
<p>Full development with C#, Semantic Kernel, and corporate data integration. Production-ready system.</p>
<ul>
<li>Complete RAG system</li>
<li>APIs and interfaces</li>
<li>Existing data integration</li>
<li>Deployment and documentation</li>
</ul>
</div>
</div>
<div class="col-md-6 service-col">
<div class="service-card">
<div class="service-icon">
<i class="fas fa-chart-line"></i>
</div>
<h4>Migration & Optimization</h4>
<div class="pricing-tier">Guaranteed Savings</div>
<p>Python→C#/.NET migration with performance optimization. 40-60% reduction in operating costs.</p>
<ul>
<li>Python → C# migration</li>
<li>Performance optimization</li>
<li>40-60% cost reduction</li>
<li>Post-migration support</li>
</ul>
</div>
</div>
<div class="col-md-6 service-col">
<div class="service-card">
<div class="service-icon">
<i class="fas fa-graduation-cap"></i>
</div>
<h4>Technical Training</h4>
<div class="pricing-tier">Team Development</div>
<p>Hands-on workshop in RAG and Semantic Kernel. Train your team for internal AI development.</p>
<ul>
<li>Hands-on workshop</li>
<li>Educational materials</li>
<li>Practical project</li>
<li>Technical certificate</li>
</ul>
</div>
</div>
</div>
</div>
</section>
<!-- About-->
<section class="page-section" id="about">
<div class="container">
<div class="text-center">
<h2 class="section-heading text-uppercase">Technical Expertise</h2>
<h3 class="section-subheading text-muted">20+ years enterprise development, specialized in AI/RAG.</h3>
</div>
<ul class="timeline">
<li>
<div class="timeline-image">
<img class="rounded-circle img-fluid" src="data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' width='100' height='100' viewBox='0 0 100 100'><rect width='100' height='100' fill='%23667eea'/><text x='50' y='55' text-anchor='middle' fill='white' font-size='30' font-family='Arial'>C%23</text></svg>" alt="C# Logo" />
</div>
<div class="timeline-panel">
<div class="timeline-heading">
<h4>2004-2024</h4>
<h4 class="subheading">20 Years C#/.NET</h4>
</div>
<div class="timeline-body">
<p class="text-muted">Enterprise development with C#/.NET, scalable system architecture, Microsoft integration, and experience in large-scale corporate projects.</p>
</div>
</div>
</li>
<li class="timeline-inverted">
<div class="timeline-image">
<img class="rounded-circle img-fluid" src="data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' width='100' height='100' viewBox='0 0 100 100'><rect width='100' height='100' fill='%23667eea'/><text x='50' y='55' text-anchor='middle' fill='white' font-size='20' font-family='Arial'>RAG</text></svg>" alt="RAG" />
</div>
<div class="timeline-panel">
<div class="timeline-heading">
<h4>2024</h4>
<h4 class="subheading">RAG/AI Specialization</h4>
</div>
<div class="timeline-body">
<p class="text-muted">Specialization in Retrieval-Augmented Generation with Microsoft Semantic Kernel. Complete RAG system in production with superior performance.</p>
</div>
</div>
</li>
<li>
<div class="timeline-image">
<img class="rounded-circle img-fluid" src="data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' width='100' height='100' viewBox='0 0 100 100'><rect width='100' height='100' fill='%23667eea'/><text x='50' y='55' text-anchor='middle' fill='white' font-size='16' font-family='Arial'>DEMO</text></svg>" alt="Demo" />
</div>
<div class="timeline-panel">
<div class="timeline-heading">
<h4>2024</h4>
<h4 class="subheading">Demonstrable RAG System</h4>
</div>
<div class="timeline-body">
<p class="text-muted">Functional RAG with MongoDB→Qdrant, Ollama integration, C# APIs. Demo available showing real system capabilities.</p>
</div>
</div>
</li>
<li class="timeline-inverted">
<div class="timeline-image">
<h4>
Your
<br />
Project
<br />
Here!
</h4>
</div>
</li>
</ul>
</div>
</section>
<section class="page-section bg-light" id="integration">
<div class="container">
<div class="text-center">
<h3 class="section-subheading">Complementary Enterprise Integrations</h3>
<p class="text-muted">Beyond RAG, development of complex integrations:</p>
</div>
<div class="row text-center">
<div class="col-md-4">
<i class="fas fa-plug fa-2x mb-3" style="color: #667eea;"></i>
<h5>APIs & Web Services</h5>
<p>SAP, Salesforce, legacy systems</p>
</div>
<div class="col-md-4">
<i class="fas fa-robot fa-2x mb-3" style="color: #667eea;"></i>
<h5>Web Automation</h5>
<p>Data extraction from applications, web scraping, RPA</p>
</div>
<div class="col-md-4">
<i class="fas fa-database fa-2x mb-3" style="color: #667eea;"></i>
<h5>Data Migration</h5>
<p>ETL, system synchronization</p>
</div>
</div>
</div>
</section>
<!-- Contact-->
<section class="page-section" id="contact">
<div class="row align-items-stretch">
<div class="col-lg-6">
<div class="d-flex flex-column justify-content-between h-100 text-center">
<div>
<h4 style="color: #667eea;">RAG/AI Specialist</h4>
<p class="lead text-white">Ricardo Carneiro</p>
<p class="text-white">20+ years enterprise development<br>
Microsoft Semantic Kernel Specialist<br>
São Bernardo do Campo, SP - Brazil</p>
</div>
<div class="mt-auto">
<a href="https://www.linkedin.com/in/ricardo-carneiro" target="_blank" class="btn btn-outline-light me-3">
<i class="fab fa-linkedin-in me-2"></i>LinkedIn
</a>
<a id="btnEmail2" click="openEmail()" target="_blank" class="btn btn-outline-light me-3">
<i class="fas fa-envelope me-2"></i>E-mail
</a>
<a href="https://www.upwork.com/freelancers/~01aa5eed59c1535ac0?viewMode=1" target="_blank" class="btn btn-outline-light">
<i class="fas fa-globe me-2"></i>Upwork
</a>
</div>
</div>
</div>
<div class="col-lg-6">
<div class="d-flex flex-column justify-content-between h-100 text-center">
<div>
<h4 style="color: #667eea;">Technical Demo</h4>
<p class="text-white">See the RAG system in action:</p>
</div>
<div class="mt-auto">
<a href="https://youtu.be/u0Jai_OZByw" target="_blank" class="btn btn-primary btn-lg">
<i class="fas fa-play me-2"></i>Watch RAG Demo
</a>
<div class="mt-4">
<p class="text-white"><small>Complete RAG system • C#/.NET + Semantic Kernel<br>
MongoDB/Qdrant • Enterprise Performance</small></p>
</div>
</div>
</div>
</div>
</div>
</section>
<!-- Footer-->
<footer class="footer py-4">
<div class="container">
<div class="row align-items-center">
<div class="col-lg-4 text-lg-start" style="color: white;">
Copyright &copy; 2024 JobMaker
</div>
<div class="col-lg-4 my-3 my-lg-0">
<a class="btn btn-dark btn-social mx-2" href="https://www.linkedin.com/in/ricardo-jobmaker" target="_blank">
<i class="fab fa-linkedin-in"></i>
</a>
<a class="btn btn-dark btn-social mx-2" id="btnEmail1" click="openEmail()" target="_blank">
<i class="fas fa-envelope"></i>
</a>
<a class="btn btn-dark btn-social mx-2" href="https://www.upwork.com/freelancers/ricardo-jobmaker" target="_blank">
<i class="fas fa-globe"></i>
</a>
</div>
<div class="col-lg-4 text-lg-end">
<span style="color: #adb5bd;">Ricardo Carneiro • RAG/AI Enterprise • C#/.NET</span>
</div>
</div>
</div>
</footer>
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.2.3/dist/js/bootstrap.bundle.min.js"></script>
<!-- Core theme JS-->
<script src="js/scripts.js"></script>
<!-- WhatsApp Float Button -->
<a href="#" onclick="openWhatsApp()" class="whatsapp-float" title="WhatsApp">
<i class="fab fa-whatsapp"></i>
</a>
<!-- Bootstrap core JS-->
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.2.3/dist/js/bootstrap.bundle.min.js"></script>
<script>
// Navbar shrink function
window.addEventListener('DOMContentLoaded', event => {
var navbarShrink = function () {
const navbarCollapsible = document.body.querySelector('#mainNav');
if (!navbarCollapsible) return;
if (window.scrollY === 0) {
navbarCollapsible.classList.remove('navbar-shrink')
} else {
navbarCollapsible.classList.add('navbar-shrink')
}
};
navbarShrink();
document.addEventListener('scroll', navbarShrink);
// Smooth scrolling
document.querySelectorAll('a[href^="#"]').forEach(anchor => {
anchor.addEventListener('click', function (e) {
e.preventDefault();
const target = document.querySelector(this.getAttribute('href'));
if (target) {
target.scrollIntoView({
behavior: 'smooth',
block: 'start'
});
}
});
});
// Bootstrap ScrollSpy
const mainNav = document.body.querySelector('#mainNav');
if (mainNav) {
new bootstrap.ScrollSpy(document.body, {
target: '#mainNav',
rootMargin: '0px 0px -40%',
});
}
// Collapse responsive navbar when toggler is visible
const navbarToggler = document.body.querySelector('.navbar-toggler');
const responsiveNavItems = [].slice.call(
document.querySelectorAll('#navbarResponsive .nav-link')
);
responsiveNavItems.map(function (responsiveNavItem) {
responsiveNavItem.addEventListener('click', () => {
if (window.getComputedStyle(navbarToggler).display !== 'none') {
navbarToggler.click();
}
});
});
});
function revealEmail() {
const parts = ['ricardo', '.carneiro', '@', 'jobmaker.com.br'];
const email = parts.join('');
const emailA = document.getElementById('btnEmail1');
const emailB = document.getElementById('btnEmail2');
emailA.href = 'mailto:' + email;
emailB.href = 'mailto:' + email;
}
function openEmail() {
const parts = ['ricardo', '.carneiro', '@', 'jobmaker.com.br'];
const email = parts.join('');
const subject = 'Interest in RAG/AI Consulting';
const body = 'Hello,\n\nI am interested in learning more about your RAG and AI consulting services.\n\nI look forward to hearing from you.';
const mailto = `mailto:${email}?subject=${encodeURIComponent(subject)}&body=${encodeURIComponent(body)}`;
window.location.href = mailto;
}
//revealEmail();
function openWhatsApp() {
const parts = ['5511', '9', '6153', '4225']; // SUBSTITUA pelo seu número real
const number = parts.join('');
const message = encodeURIComponent('Olá! Vi seu site e gostaria de agendar uma consultoria RAG/IA. Quando podemos conversar?');
const url = `https://api.whatsapp.com/send?phone=${number}&text=${message}`;
window.open(url, '_blank');
}
</script>
</body>
</html>

54
en/js/scripts.js Normal file
View File

@ -0,0 +1,54 @@
/*!
* Start Bootstrap - Agency v7.0.12 (https://startbootstrap.com/theme/agency)
* Copyright 2013-2023 Start Bootstrap
* Licensed under MIT (https://github.com/StartBootstrap/startbootstrap-agency/blob/master/LICENSE)
*/
//
// Scripts
//
window.addEventListener('DOMContentLoaded', event => {
// Navbar shrink function
var navbarShrink = function () {
const navbarCollapsible = document.body.querySelector('#mainNav');
if (!navbarCollapsible) {
return;
}
if (window.scrollY === 0) {
navbarCollapsible.classList.remove('navbar-shrink')
} else {
navbarCollapsible.classList.add('navbar-shrink')
}
};
// Shrink the navbar
navbarShrink();
// Shrink the navbar when page is scrolled
document.addEventListener('scroll', navbarShrink);
// Activate Bootstrap scrollspy on the main nav element
const mainNav = document.body.querySelector('#mainNav');
if (mainNav) {
new bootstrap.ScrollSpy(document.body, {
target: '#mainNav',
rootMargin: '0px 0px -40%',
});
};
// Collapse responsive navbar when toggler is visible
const navbarToggler = document.body.querySelector('.navbar-toggler');
const responsiveNavItems = [].slice.call(
document.querySelectorAll('#navbarResponsive .nav-link')
);
responsiveNavItems.map(function (responsiveNavItem) {
responsiveNavItem.addEventListener('click', () => {
if (window.getComputedStyle(navbarToggler).display !== 'none') {
navbarToggler.click();
}
});
});
});

862
index.html Normal file
View File

@ -0,0 +1,862 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no" />
<meta name="description" content="Consultoria especializada em RAG e IA empresarial com C#/.NET. Reduza custos e aumente performance com soluções enterprise-grade." />
<meta name="author" content="JobMaker - Ricardo Carneiro" />
<title>JobMaker - Consultoria RAG e IA Empresarial | C#/.NET</title>
<!-- Favicon-->
<link rel="icon" type="image/x-icon" href="assets/favicon.ico" />
<!-- Font Awesome icons (free version)-->
<script src="https://use.fontawesome.com/releases/v6.3.0/js/all.js" crossorigin="anonymous"></script>
<!-- Google fonts-->
<link href="https://fonts.googleapis.com/css?family=Montserrat:400,700" rel="stylesheet" type="text/css" />
<link href="https://fonts.googleapis.com/css?family=Roboto+Slab:400,100,300,700" rel="stylesheet" type="text/css" />
<!-- Core theme CSS (includes Bootstrap)-->
<link href="css/styles.css" rel="stylesheet" />
<style>
/* Custom CSS integrado */
:root {
--bs-primary: #667eea;
--bs-primary-rgb: 102, 126, 234;
}
body {
font-family: 'Roboto Slab', -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, sans-serif;
line-height: 1.6;
}
/* Navbar styles profissionais */
#mainNav {
background-color: #212529;
transition: all 0.3s;
padding-top: 1rem;
padding-bottom: 1rem;
}
#mainNav .navbar-brand {
color: #ffc800;
font-family: "Montserrat", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;
font-weight: 700;
letter-spacing: 0.0625em;
text-transform: uppercase;
font-size: 1.5rem;
}
#mainNav .navbar-brand:hover {
color: #ffc800;
}
#mainNav .navbar-nav .nav-item .nav-link {
font-family: "Montserrat", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;
font-size: 0.95rem;
color: #fff;
letter-spacing: 0.0625em;
font-weight: 400;
transition: color 0.3s;
}
#mainNav .navbar-nav .nav-item .nav-link.active,
#mainNav .navbar-nav .nav-item .nav-link:hover {
color: #ffc800;
}
#mainNav.navbar-shrink {
padding-top: 0.5rem;
padding-bottom: 0.5rem;
}
#mainNav.navbar-shrink .navbar-brand {
font-size: 1.25rem;
}
.masthead {
padding-top: 10.5rem;
padding-bottom: 6rem;
text-align: center;
color: #fff;
background: linear-gradient(to bottom, rgba(22, 22, 22, 0.3) 0%, rgba(22, 22, 22, 0.7) 75%, #161616 100%), url("data:image/svg+xml,%3Csvg width='60' height='60' viewBox='0 0 60 60' xmlns='http://www.w3.org/2000/svg'%3E%3Cg fill='none' fill-rule='evenodd'%3E%3Cg fill='%23667eea' fill-opacity='0.1'%3E%3Ccircle cx='30' cy='30' r='4'/%3E%3Ccircle cx='0' cy='30' r='4'/%3E%3Ccircle cx='60' cy='30' r='4'/%3E%3Ccircle cx='30' cy='0' r='4'/%3E%3Ccircle cx='30' cy='60' r='4'/%3E%3C/g%3E%3C/g%3E%3C/svg%3E");
background-attachment: scroll;
background-position: center center;
background-repeat: repeat;
background-size: 60px 60px;
}
.masthead .masthead-subheading {
font-size: 4rem; /* MAIOR - título principal */
font-style: normal; /* SEM itálico */
line-height: 4rem;
margin-bottom: 25px;
color: #ffc800; /* BRANCO PURO - máximo contraste */
text-shadow: 2px 2px 4px rgba(0,0,0,0.8); /* Sombra para destacar */
font-family: "Roboto Slab", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;
font-weight: 700;
text-transform: uppercase;
}
.masthead .masthead-heading {
font-size: 1.8rem; /* MENOR - subtítulo */
font-weight: 400;
line-height: 2.2rem;
margin-bottom: 2rem;
color: #ffc800; /* Dourado para destaque secundário */
text-shadow: 1px 1px 3px rgba(0,0,0,0.7); /* Sombra para legibilidade */
font-family: "Roboto Slab", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;
}
.btn-primary {
background: linear-gradient(45deg, #667eea, #764ba2);
border: none;
transition: transform 0.3s, box-shadow 0.3s;
font-family: "Montserrat", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;
font-weight: 700;
letter-spacing: 0.0625em;
padding: 1.25rem 2.5rem;
font-size: 0.875rem;
}
.btn-primary:hover {
transform: translateY(-2px);
box-shadow: 0 10px 20px rgba(102, 126, 234, 0.4);
}
.btn-outline-light {
font-family: "Montserrat", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;
font-weight: 700;
letter-spacing: 0.0625em;
padding: 1.25rem 2.5rem;
font-size: 0.875rem;
transition: all 0.3s;
}
.btn-outline-light:hover {
background-color: #ffc800;
border-color: #ffc800;
color: #212529;
}
.section-heading {
color: #333;
font-family: "Montserrat", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;
font-weight: 700;
}
.text-muted { color: #6c757d !important; }
/* Comparativo C# vs Python */
.comparison-section {
background: linear-gradient(135deg, #f5f7fa 0%, #c3cfe2 100%);
padding: 80px 0;
}
.comparison-table {
background: white;
border-radius: 15px;
overflow: hidden;
box-shadow: 0 10px 30px rgba(0,0,0,0.1);
margin: 3rem 0;
}
.table-header {
background: linear-gradient(45deg, #667eea, #764ba2);
color: white;
padding: 1.5rem;
text-align: center;
font-size: 1.5rem;
font-weight: bold;
}
.comparison-grid {
display: grid;
grid-template-columns: 1fr 1fr 1fr;
gap: 0;
}
.comparison-header {
background: #f8f9fa;
padding: 1rem;
font-weight: bold;
text-align: center;
border-bottom: 2px solid #e9ecef;
}
.comparison-item {
padding: 1rem;
border-bottom: 1px solid #e9ecef;
border-right: 1px solid #e9ecef;
text-align: center;
}
.comparison-item:nth-child(3n) { border-right: none; }
.advantage {
background: linear-gradient(45deg, #d4edda, #c3e6cb);
color: #155724;
font-weight: bold;
}
.cost-highlight {
background: linear-gradient(45deg, #fff3cd, #ffeaa7);
color: #856404;
font-weight: bold;
}
/* Serviços com layout melhorado */
.page-section {
padding: 6rem 0;
}
.row.text-center {
margin-top: 3rem;
}
.service-col {
margin-bottom: 3rem;
}
.service-card {
background: white;
padding: 2rem;
border-radius: 15px;
box-shadow: 0 10px 30px rgba(0,0,0,0.1);
height: 100%;
border-left: 5px solid #667eea;
transition: transform 0.3s;
}
.service-card:hover {
transform: translateY(-5px);
}
.service-card .service-icon {
font-size: 3rem;
color: #667eea;
margin-bottom: 1rem;
}
.service-card ul {
text-align: left;
padding-left: 0;
list-style: none;
}
.service-card ul li {
margin-bottom: 0.5rem;
padding-left: 1.5rem;
position: relative;
}
.service-card ul li::before {
content: "✅";
position: absolute;
left: 0;
}
.pricing-tier {
display: inline-block;
background: linear-gradient(45deg, #667eea, #764ba2);
color: white;
padding: 0.5rem 1rem;
border-radius: 20px;
font-size: 0.9rem;
margin: 1rem 0;
}
/* Timeline styles */
.timeline {
list-style: none;
padding: 0;
position: relative;
}
.timeline:before {
top: 0;
bottom: 0;
position: absolute;
content: "";
width: 2px;
background-color: #e9ecef;
left: 40px;
margin-left: -1.5px;
}
.timeline > li {
margin-bottom: 50px;
position: relative;
min-height: 50px;
}
.timeline > li:after,
.timeline > li:before {
content: " ";
display: table;
}
.timeline > li:after {
clear: both;
}
.timeline > li .timeline-panel {
width: 100%;
float: right;
padding: 0 20px 0 100px;
position: relative;
text-align: left;
}
.timeline > li .timeline-panel:before {
border-left-width: 0;
border-right-width: 15px;
left: -15px;
right: auto;
}
.timeline > li .timeline-panel:after {
border-left-width: 0;
border-right-width: 14px;
left: -14px;
right: auto;
}
.timeline > li .timeline-image {
left: 0;
margin-left: 0;
width: 80px;
height: 80px;
position: absolute;
z-index: 100;
background-color: #667eea;
color: white;
border-radius: 100%;
border: 7px solid #e9ecef;
text-align: center;
}
.timeline > li .timeline-image h4 {
font-size: 10px;
margin-top: 12px;
line-height: 14px;
}
.timeline > li.timeline-inverted > .timeline-panel {
float: right;
text-align: left;
padding: 0 20px 0 100px;
}
.timeline > li.timeline-inverted > .timeline-panel:before {
border-left-width: 0;
border-right-width: 15px;
left: -15px;
right: auto;
}
.timeline > li.timeline-inverted > .timeline-panel:after {
border-left-width: 0;
border-right-width: 14px;
left: -14px;
right: auto;
}
.timeline-heading h4 {
margin-top: 0;
color: inherit;
}
.timeline-heading h4.subheading {
text-transform: none;
}
.timeline-body > p,
.timeline-body > ul {
margin-bottom: 0;
}
/* WhatsApp Button */
.whatsapp-float {
position: fixed;
width: 60px;
height: 60px;
bottom: 40px;
right: 40px;
background-color: #25d366;
color: #FFF;
border-radius: 50px;
text-align: center;
font-size: 30px;
box-shadow: 2px 2px 3px #999;
z-index: 100;
display: flex;
align-items: center;
justify-content: center;
transition: all 0.3s;
}
@media (max-width: 768px) {
.masthead .masthead-subheading {
font-size: 2.5rem;
line-height: 2.5rem;
}
.masthead .masthead-heading {
font-size: 1.6rem;
line-height: 1.6rem;
}
}
.whatsapp-float:hover {
transform: scale(1.1);
color: #FFF;
text-decoration: none;
}
.footer {
text-align: center;
font-size: 0.9rem;
font-family: "Montserrat", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;
background-color: #212529;
color: #fff;
}
/* Responsive */
@media (max-width: 768px) {
.comparison-grid { grid-template-columns: 1fr; }
.comparison-header { display: none; }
.masthead { min-height: 70vh; }
.masthead .masthead-heading { font-size: 2.25rem; line-height: 2.25rem; }
.masthead .masthead-subheading { font-size: 1.25rem; }
.timeline:before { left: 40px; }
.timeline > li > .timeline-panel { width: 100%; float: right; padding: 0 20px 0 100px; }
.timeline > li > .timeline-image { left: 0; width: 80px; height: 80px; }
}
@media (min-width: 768px) {
.timeline:before { left: 50%; }
.timeline > li { margin-bottom: 100px; min-height: 100px; }
.timeline > li > .timeline-panel { width: 41%; float: left; padding: 0 20px 20px 30px; text-align: right; }
.timeline > li > .timeline-image { width: 100px; height: 100px; left: 50%; margin-left: -50px; }
.timeline > li > .timeline-image h4 { font-size: 13px; margin-top: 16px; line-height: 18px; }
.timeline > li.timeline-inverted > .timeline-panel { float: right; text-align: left; padding: 0 30px 20px 20px; }
}
@media (min-width: 992px) {
.timeline > li { min-height: 150px; }
.timeline > li > .timeline-panel { padding: 0 20px 20px; }
.timeline > li > .timeline-image { width: 150px; height: 150px; margin-left: -75px; }
.timeline > li > .timeline-image h4 { font-size: 18px; margin-top: 30px; line-height: 26px; }
.timeline > li.timeline-inverted > .timeline-panel { padding: 0 20px 20px; }
}
</style>
</head>
<body id="page-top">
<!-- Navigation-->
<nav class="navbar navbar-expand-lg navbar-dark fixed-top" id="mainNav">
<div class="container">
<a class="navbar-brand" href="#page-top"><img src="assets/img/jobmaker_logo.png" alt="..." /></a>
<button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbarResponsive" aria-controls="navbarResponsive" aria-expanded="false" aria-label="Toggle navigation">
Menu
<i class="fas fa-bars ms-1"></i>
</button>
<div class="collapse navbar-collapse" id="navbarResponsive">
<ul class="navbar-nav text-uppercase ms-auto py-4 py-lg-0">
<li class="nav-item"><a class="nav-link" href="#vantagens">Vantagens C#</a></li>
<li class="nav-item"><a class="nav-link" href="#services">Serviços</a></li>
<li class="nav-item"><a class="nav-link" href="#about">Expertise</a></li>
<li class="nav-item"><a class="nav-link" href="#contact">Contato</a></li>
</ul>
</div>
</div>
</nav>
<!-- Masthead-->
<header class="masthead">
<div class="container">
<div class="masthead-subheading">Consultoria RAG e IA Empresarial</div>
<div class="masthead-heading text-uppercase">Redução de Custos com C#/.NET</div>
<a class="btn btn-primary btn-xl text-uppercase" href="#services">Descubra as vantagens</a>
</div>
</header>
<!-- Services-->
<section class="page-section" id="vantagens">
<div class="container">
<div class="text-center">
<h2 class="section-heading text-uppercase">Vantagens do C#</h2>
<!-- <h3 class="section-subheading text-muted">Lorem ipsum dolor sit amet consectetur.</h3> -->
</div>
<div class="row text-center">
<div class="comparison-table">
<div class="table-header">
Comparativo: C#/.NET vs Python para RAG Empresarial
</div>
<div class="comparison-grid">
<div class="comparison-header">Aspecto</div>
<div class="comparison-header">C#/.NET</div>
<div class="comparison-header">Python</div>
<div class="comparison-item"><strong>Performance</strong></div>
<div class="comparison-item advantage">3-5x mais rápido<br>Menor uso de memória</div>
<div class="comparison-item">Padrão mercado<br>Mais lento</div>
<div class="comparison-item"><strong>Custo Operacional</strong></div>
<div class="comparison-item cost-highlight">40-60% menor<br>Menos servidores</div>
<div class="comparison-item">Custo padrão<br>Mais recursos</div>
<div class="comparison-item"><strong>Integração Enterprise</strong></div>
<div class="comparison-item advantage">Nativa Microsoft<br>Azure, Office 365</div>
<div class="comparison-item">Requer adaptações<br>Mais complexo</div>
<div class="comparison-item"><strong>Segurança</strong></div>
<div class="comparison-item advantage">Enterprise-grade<br>Compliance nativo</div>
<div class="comparison-item">Requer config<br>Libs terceiros</div>
<div class="comparison-item"><strong>Manutenção</strong></div>
<div class="comparison-item advantage">Strongly typed<br>Menos bugs</div>
<div class="comparison-item">Runtime errors<br>Mais debugging</div>
</div>
</div>
</div>
<div class="text-center mt-4">
<p class="lead"><strong>Resultado:</strong> Economia de 40-60% em infraestrutura + Performance 3-5x superior</p>
</div>
</div>
</section>
<!-- Portfolio Grid-->
<section class="page-section bg-light" id="services">
<div class="container">
<div class="text-center">
<h2 class="section-heading text-uppercase">Serviços Especializados</h2>
<h3 class="section-subheading text-muted">Soluções RAG/IA com C#/.NET para redução de custos empresariais.</h3>
</div>
<div class="row text-center">
<div class="col-md-6 service-col">
<div class="service-card">
<div class="service-icon">
<i class="fas fa-lightbulb"></i>
</div>
<h4>Consultoria Estratégica RAG</h4>
<div class="pricing-tier">Investimento Estratégico</div>
<p>Análise completa, arquitetura customizada e roadmap de implementação. Definição de ROI e redução de custos projetada.</p>
<ul>
<li>Avaliação técnica completa</li>
<li>Arquitetura RAG personalizada</li>
<li>Análise ROI e redução custos</li>
<li>Roadmap detalhado</li>
</ul>
</div>
</div>
<div class="col-md-6 service-col">
<div class="service-card">
<div class="service-icon">
<i class="fas fa-rocket"></i>
</div>
<h4>Implementação RAG Completa</h4>
<div class="pricing-tier">Projeto Enterprise</div>
<p>Desenvolvimento completo com C#, Semantic Kernel e integração dados corporativos. Sistema pronto para produção.</p>
<ul>
<li>Sistema RAG completo</li>
<li>APIs e interfaces</li>
<li>Integração dados existentes</li>
<li>Deploy e documentação</li>
</ul>
</div>
</div>
<div class="col-md-6 service-col">
<div class="service-card">
<div class="service-icon">
<i class="fas fa-chart-line"></i>
</div>
<h4>Migração & Otimização</h4>
<div class="pricing-tier">Economia Garantida</div>
<p>Migração Python→C#/.NET com otimização de performance. Redução de custos operacionais de 40-60%.</p>
<ul>
<li>Migração Python → C#</li>
<li>Otimização performance</li>
<li>Redução custos 40-60%</li>
<li>Suporte pós-migração</li>
</ul>
</div>
</div>
<div class="col-md-6 service-col">
<div class="service-card">
<div class="service-icon">
<i class="fas fa-graduation-cap"></i>
</div>
<h4>Treinamento Técnico</h4>
<div class="pricing-tier">Capacitação</div>
<p>Workshop hands-on em RAG e Semantic Kernel. Capacite sua equipe para desenvolvimento IA interno.</p>
<ul>
<li>Workshop hands-on</li>
<li>Material didático</li>
<li>Projeto prático</li>
<li>Certificado técnico</li>
</ul>
</div>
</div>
</div>
</div>
</section>
<!-- About-->
<section class="page-section" id="about">
<div class="container">
<div class="text-center">
<h2 class="section-heading text-uppercase">Expertise Técnica</h2>
<h3 class="section-subheading text-muted">20+ anos desenvolvimento enterprise, especializado em IA/RAG.</h3>
</div>
<ul class="timeline">
<li>
<div class="timeline-image">
<img class="rounded-circle img-fluid" src="data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' width='100' height='100' viewBox='0 0 100 100'><rect width='100' height='100' fill='%23667eea'/><text x='50' y='55' text-anchor='middle' fill='white' font-size='30' font-family='Arial'>C%23</text></svg>" alt="C# Logo" />
</div>
<div class="timeline-panel">
<div class="timeline-heading">
<h4>2004-2024</h4>
<h4 class="subheading">20 Anos C#/.NET</h4>
</div>
<div class="timeline-body">
<p class="text-muted">Desenvolvimento enterprise com C#/.NET, arquitetura de sistemas escaláveis, integração Microsoft e experiência em projetos corporativos de grande porte.</p>
</div>
</div>
</li>
<li class="timeline-inverted">
<div class="timeline-image">
<img class="rounded-circle img-fluid" src="data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' width='100' height='100' viewBox='0 0 100 100'><rect width='100' height='100' fill='%23667eea'/><text x='50' y='55' text-anchor='middle' fill='white' font-size='20' font-family='Arial'>RAG</text></svg>" alt="RAG" />
</div>
<div class="timeline-panel">
<div class="timeline-heading">
<h4>2024</h4>
<h4 class="subheading">Especialização RAG/IA</h4>
</div>
<div class="timeline-body">
<p class="text-muted">Especialização em Retrieval-Augmented Generation com Microsoft Semantic Kernel. Sistema RAG completo em produção com performance superior.</p>
</div>
</div>
</li>
<li>
<div class="timeline-image">
<img class="rounded-circle img-fluid" src="data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' width='100' height='100' viewBox='0 0 100 100'><rect width='100' height='100' fill='%23667eea'/><text x='50' y='55' text-anchor='middle' fill='white' font-size='16' font-family='Arial'>DEMO</text></svg>" alt="Demo" />
</div>
<div class="timeline-panel">
<div class="timeline-heading">
<h4>2024</h4>
<h4 class="subheading">Sistema RAG Demonstrável</h4>
</div>
<div class="timeline-body">
<p class="text-muted">RAG funcional com MongoDB→Qdrant, Ollama integration, C# APIs. Demo disponível mostrando capacidades reais do sistema.</p>
</div>
</div>
</li>
<li class="timeline-inverted">
<div class="timeline-image">
<h4>
Seu
<br />
Projeto
<br />
Aqui!
</h4>
</div>
</li>
</ul>
</div>
</section>
<!-- Contact-->
<section class="page-section bg-light" id="integracao">
<div class="container">
<div class="text-center">
<h3 class="section-subheading">Integrações Enterprise Complementares</h3>
<p class="text-muted">Além de RAG, desenvolvimento de integrações complexas:</p>
</div>
<div class="row text-center">
<div class="col-md-4">
<i class="fas fa-plug fa-2x mb-3" style="color: #667eea;"></i>
<h5>APIs & Web Services</h5>
<p>SAP, Salesforce, sistemas legados</p>
</div>
<div class="col-md-4">
<i class="fas fa-robot fa-2x mb-3" style="color: #667eea;"></i>
<h5>Automação Web</h5>
<p>Extração de dados de aplicações, web scraping, RPA</p>
</div>
<div class="col-md-4">
<i class="fas fa-database fa-2x mb-3" style="color: #667eea;"></i>
<h5>Migração de Dados</h5>
<p>ETL, sincronização entre sistemas</p>
</div>
</div>
</div>
</section>
<section class="page-section" id="contact">
<div class="row align-items-stretch">
<div class="col-lg-6">
<div class="d-flex flex-column justify-content-between h-100 text-center">
<div>
<h4 style="color: #667eea;">Especialista RAG/IA</h4>
<p class="lead text-white">Ricardo Carneiro</p>
<p class="text-white">20+ anos desenvolvimento enterprise<br>
Especialista Microsoft Semantic Kernel<br>
São Bernardo do Campo, SP</p>
</div>
<div class="mt-auto">
<a href="https://www.linkedin.com/in/ricardo-carneiro" target="_blank" class="btn btn-outline-light me-3">
<i class="fab fa-linkedin-in me-2"></i>LinkedIn
</a>
<a id="btnEmail2" click="openEmail()" target="_blank" class="btn btn-outline-light me-3">
<i class="fas fa-envelope me-2"></i>E-mail
</a>
<a href="https://www.upwork.com/freelancers/~01aa5eed59c1535ac0?viewMode=1" target="_blank" class="btn btn-outline-light">
<i class="fas fa-globe me-2"></i>Upwork
</a>
</div>
</div>
</div>
<div class="col-lg-6">
<div class="d-flex flex-column justify-content-between h-100 text-center">
<div>
<h4 style="color: #667eea;">Demo Técnico</h4>
<p class="text-white">Veja o sistema RAG em funcionamento:</p>
</div>
<div class="mt-auto">
<a href="https://youtu.be/u0Jai_OZByw" target="_blank" class="btn btn-primary btn-lg">
<i class="fas fa-play me-2"></i>Assistir Demo RAG
</a>
<div class="mt-4">
<p class="text-white"><small>Sistema RAG completo • C#/.NET + Semantic Kernel<br>
MongoDB/Qdrant • Performance Enterprise</small></p>
</div>
</div>
</div>
</div>
</div>
</section>
<!-- Footer-->
<footer class="footer py-4">
<div class="container">
<div class="row align-items-center">
<div class="col-lg-4 text-lg-start" style="color: white;">
Copyright &copy; 2024 JobMaker
</div>
<div class="col-lg-4 my-3 my-lg-0">
<a class="btn btn-dark btn-social mx-2" href="https://www.linkedin.com/in/ricardo-jobmaker" target="_blank">
<i class="fab fa-linkedin-in"></i>
</a>
<a class="btn btn-dark btn-social mx-2" id="btnEmail1" click="openEmail()" target="_blank">
<i class="fas fa-envelope"></i>
</a>
<a class="btn btn-dark btn-social mx-2" href="https://www.upwork.com/freelancers/ricardo-jobmaker" target="_blank">
<i class="fas fa-globe"></i>
</a>
</div>
<div class="col-lg-4 text-lg-end">
<span style="color: #adb5bd;">Ricardo Carneiro • RAG/IA Enterprise • C#/.NET</span>
</div>
</div>
</div>
</footer>
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.2.3/dist/js/bootstrap.bundle.min.js"></script>
<!-- Core theme JS-->
<script src="js/scripts.js"></script>
<!-- WhatsApp Float Button -->
<a href="#" onclick="openWhatsApp()" class="whatsapp-float" title="WhatsApp">
<i class="fab fa-whatsapp"></i>
</a>
<!-- Bootstrap core JS-->
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.2.3/dist/js/bootstrap.bundle.min.js"></script>
<script>
// Navbar shrink function
window.addEventListener('DOMContentLoaded', event => {
var navbarShrink = function () {
const navbarCollapsible = document.body.querySelector('#mainNav');
if (!navbarCollapsible) return;
if (window.scrollY === 0) {
navbarCollapsible.classList.remove('navbar-shrink')
} else {
navbarCollapsible.classList.add('navbar-shrink')
}
};
navbarShrink();
document.addEventListener('scroll', navbarShrink);
// Smooth scrolling
document.querySelectorAll('a[href^="#"]').forEach(anchor => {
anchor.addEventListener('click', function (e) {
e.preventDefault();
const target = document.querySelector(this.getAttribute('href'));
if (target) {
target.scrollIntoView({
behavior: 'smooth',
block: 'start'
});
}
});
});
// Bootstrap ScrollSpy
const mainNav = document.body.querySelector('#mainNav');
if (mainNav) {
new bootstrap.ScrollSpy(document.body, {
target: '#mainNav',
rootMargin: '0px 0px -40%',
});
}
// Collapse responsive navbar when toggler is visible
const navbarToggler = document.body.querySelector('.navbar-toggler');
const responsiveNavItems = [].slice.call(
document.querySelectorAll('#navbarResponsive .nav-link')
);
responsiveNavItems.map(function (responsiveNavItem) {
responsiveNavItem.addEventListener('click', () => {
if (window.getComputedStyle(navbarToggler).display !== 'none') {
navbarToggler.click();
}
});
});
});
function revealEmail() {
const parts = ['ricardo', '.carneiro', '@', 'jobmaker.com.br'];
const email = parts.join('');
const emailA = document.getElementById('btnEmail1');
const emailB = document.getElementById('btnEmail2');
emailA.href = 'mailto:' + email;
emailB.href = 'mailto:' + email;
}
function openEmail() {
const parts = ['ricardo', '.carneiro', '@', 'jobmaker.com.br'];
const email = parts.join('');
const subject = 'Interesse em Consultoria RAG/IA';
const body = 'Olá,\n\nTenho interesse em saber mais sobre seus serviços de consultoria em RAG e IA.\n\nAguardo seu contato.';
const mailto = `mailto:${email}?subject=${encodeURIComponent(subject)}&body=${encodeURIComponent(body)}`;
window.location.href = mailto;
}
//revealEmail();
function openWhatsApp() {
const parts = ['5511', '9', '6153', '4225']; // SUBSTITUA pelo seu número real
const number = parts.join('');
const message = encodeURIComponent('Olá! Vi seu site e gostaria de agendar uma consultoria RAG/IA. Quando podemos conversar?');
const url = `https://api.whatsapp.com/send?phone=${number}&text=${message}`;
window.open(url, '_blank');
}
</script>
</body>
</html>

87
instruction.txt Normal file
View File

@ -0,0 +1,87 @@
---
# nginx.conf
server {
listen 80;
server_name localhost jobmaker.com.br;
# Configurações gerais
index index.html;
root /usr/share/nginx/html;
# Compressão
gzip on;
gzip_vary on;
gzip_min_length 1024;
gzip_types text/plain text/css text/xml text/javascript application/javascript application/xml+rss application/json;
# Cache para assets estáticos
location ~* \.(css|js|png|jpg|jpeg|gif|ico|svg|woff|woff2)$ {
expires 1y;
add_header Cache-Control "public, immutable";
add_header Vary Accept-Encoding;
}
# Headers de segurança
add_header X-Frame-Options "SAMEORIGIN" always;
add_header X-Content-Type-Options "nosniff" always;
add_header X-XSS-Protection "1; mode=block" always;
# Página principal em português (padrão)
location = / {
try_files /index.html =404;
}
# Versão em inglês
location /en/ {
try_files $uri $uri/ /en/index.html;
}
# Detectar idioma do browser e redirecionar se necessário
location @language_detection {
# JavaScript fará a detecção no client-side
try_files /index.html =404;
}
# Fallback para arquivos não encontrados
location / {
try_files $uri $uri/ =404;
}
# Página de erro 404 personalizada
error_page 404 /404.html;
location = /404.html {
internal;
}
# Logs
access_log /var/log/nginx/jobmaker_access.log;
error_log /var/log/nginx/jobmaker_error.log;
}
# Redirecionamento HTTP para HTTPS (para produção)
# server {
# listen 80;
# server_name jobmaker.com.br www.jobmaker.com.br;
# return 301 https://jobmaker.com.br$request_uri;
# }
# Configuração HTTPS (para produção)
# server {
# listen 443 ssl http2;
# server_name jobmaker.com.br www.jobmaker.com.br;
#
# # Certificados SSL (Let's Encrypt)
# ssl_certificate /etc/letsencrypt/live/jobmaker.com.br/fullchain.pem;
# ssl_certificate_key /etc/letsencrypt/live/jobmaker.com.br/privkey.pem;
#
# # Configurações SSL
# ssl_protocols TLSv1.2 TLSv1.3;
# ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384;
# ssl_prefer_server_ciphers off;
#
# # Headers de segurança HTTPS
# add_header Strict-Transport-Security "max-age=31536000; includeSubDomains" always;
#
# # Resto da configuração igual ao bloco HTTP acima
# }

54
js/scripts.js Normal file
View File

@ -0,0 +1,54 @@
/*!
* Start Bootstrap - Agency v7.0.12 (https://startbootstrap.com/theme/agency)
* Copyright 2013-2023 Start Bootstrap
* Licensed under MIT (https://github.com/StartBootstrap/startbootstrap-agency/blob/master/LICENSE)
*/
//
// Scripts
//
window.addEventListener('DOMContentLoaded', event => {
// Navbar shrink function
var navbarShrink = function () {
const navbarCollapsible = document.body.querySelector('#mainNav');
if (!navbarCollapsible) {
return;
}
if (window.scrollY === 0) {
navbarCollapsible.classList.remove('navbar-shrink')
} else {
navbarCollapsible.classList.add('navbar-shrink')
}
};
// Shrink the navbar
navbarShrink();
// Shrink the navbar when page is scrolled
document.addEventListener('scroll', navbarShrink);
// Activate Bootstrap scrollspy on the main nav element
const mainNav = document.body.querySelector('#mainNav');
if (mainNav) {
new bootstrap.ScrollSpy(document.body, {
target: '#mainNav',
rootMargin: '0px 0px -40%',
});
};
// Collapse responsive navbar when toggler is visible
const navbarToggler = document.body.querySelector('.navbar-toggler');
const responsiveNavItems = [].slice.call(
document.querySelectorAll('#navbarResponsive .nav-link')
);
responsiveNavItems.map(function (responsiveNavItem) {
responsiveNavItem.addEventListener('click', () => {
if (window.getComputedStyle(navbarToggler).display !== 'none') {
navbarToggler.click();
}
});
});
});

83
robots.txt Normal file
View File

@ -0,0 +1,83 @@
# robots.txt para JobMaker - Consultoria RAG e IA
# https://jobmaker.com.br/robots.txt
# Permitir todos os bots de busca nas páginas principais
User-agent: *
Allow: /
Allow: /en/
# Permitir assets importantes para SEO
Allow: /css/
Allow: /js/
Allow: /assets/
Allow: /*.css$
Allow: /*.js$
Allow: /*.png$
Allow: /*.jpg$
Allow: /*.jpeg$
Allow: /*.gif$
Allow: /*.svg$
Allow: /*.ico$
Allow: /*.woff$
Allow: /*.woff2$
# Bloquear arquivos sensíveis/administrativos
Disallow: /*.log$
Disallow: /logs/
Disallow: /tmp/
Disallow: /.git/
Disallow: /.env
Disallow: /docker-compose.yml
Disallow: /Dockerfile
Disallow: /*.sh$
# Bloquear possíveis páginas de erro ou teste
Disallow: /error/
Disallow: /test/
Disallow: /dev/
Disallow: /*?test=*
Disallow: /*?debug=*
# Configurações específicas para bots importantes
# Google
User-agent: Googlebot
Allow: /
Allow: /en/
Crawl-delay: 1
# Bing
User-agent: Bingbot
Allow: /
Allow: /en/
Crawl-delay: 2
# LinkedIn (importante para perfil profissional)
User-agent: LinkedInBot
Allow: /
Allow: /en/
# WhatsApp (para preview de links)
User-agent: WhatsApp
Allow: /
Allow: /en/
# Bloquear bots maliciosos conhecidos
User-agent: AhrefsBot
Disallow: /
User-agent: MJ12bot
Disallow: /
User-agent: DotBot
Disallow: /
User-agent: SemrushBot
Disallow: /
# Localização do Sitemap
Sitemap: https://jobmaker.com.br/sitemap.xml
# Informações de contato (opcional)
Website: https://jobmaker.com.br
Contact: ricardo.carneiro@jobmaker.com.br

85
sitemap.xml Normal file
View File

@ -0,0 +1,85 @@
<?xml version="1.0" encoding="UTF-8"?>
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9"
xmlns:xhtml="http://www.w3.org/1999/xhtml">
<!-- Página principal em português -->
<url>
<loc>https://jobmaker.com.br/</loc>
<lastmod>2024-06-16</lastmod>
<changefreq>weekly</changefreq>
<priority>1.0</priority>
<xhtml:link rel="alternate" hreflang="en" href="https://jobmaker.com.br/en/"/>
<xhtml:link rel="alternate" hreflang="pt-BR" href="https://jobmaker.com.br/"/>
<xhtml:link rel="alternate" hreflang="x-default" href="https://jobmaker.com.br/"/>
</url>
<!-- Página principal em inglês -->
<url>
<loc>https://jobmaker.com.br/en/</loc>
<lastmod>2024-06-16</lastmod>
<changefreq>weekly</changefreq>
<priority>0.9</priority>
<xhtml:link rel="alternate" hreflang="en" href="https://jobmaker.com.br/en/"/>
<xhtml:link rel="alternate" hreflang="pt-BR" href="https://jobmaker.com.br/"/>
<xhtml:link rel="alternate" hreflang="x-default" href="https://jobmaker.com.br/"/>
</url>
<!-- Seções específicas da página principal - Português -->
<url>
<loc>https://jobmaker.com.br/#vantagens</loc>
<lastmod>2024-06-16</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://jobmaker.com.br/#services</loc>
<lastmod>2024-06-16</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://jobmaker.com.br/#about</loc>
<lastmod>2024-06-16</lastmod>
<changefreq>monthly</changefreq>
<priority>0.7</priority>
</url>
<url>
<loc>https://jobmaker.com.br/#contact</loc>
<lastmod>2024-06-16</lastmod>
<changefreq>monthly</changefreq>
<priority>0.9</priority>
</url>
<!-- Seções específicas da página principal - English -->
<url>
<loc>https://jobmaker.com.br/en/#advantages</loc>
<lastmod>2024-06-16</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://jobmaker.com.br/en/#services</loc>
<lastmod>2024-06-16</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://jobmaker.com.br/en/#about</loc>
<lastmod>2024-06-16</lastmod>
<changefreq>monthly</changefreq>
<priority>0.7</priority>
</url>
<url>
<loc>https://jobmaker.com.br/en/#contact</loc>
<lastmod>2024-06-16</lastmod>
<changefreq>monthly</changefreq>
<priority>0.9</priority>
</url>
</urlset>