Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 3 additions & 5 deletions .dev/Dockerfile
Original file line number Diff line number Diff line change
@@ -1,5 +1,3 @@
# syntax=docker/dockerfile:1

ARG RUBY_VERSION=3.4

# use the official Bun image
Expand All @@ -10,9 +8,9 @@ WORKDIR /usr/src/app
# install dependencies into temp directory
# this will cache them and speed up future builds
FROM base AS install
RUN mkdir -p /temp/dev
COPY package.json bun.lockb /temp/dev/
RUN cd /temp/dev && bun install
WORKDIR /temp/dev
COPY package.json bun.lockb ./
RUN bun install

# Install Ruby dependencies in a separate stage
FROM ruby:$RUBY_VERSION-alpine AS ruby-gems
Expand Down
14 changes: 11 additions & 3 deletions .dev/compose.yml
Original file line number Diff line number Diff line change
Expand Up @@ -15,8 +15,8 @@ x-backend: &backend
IRB_HISTFILE: /usr/local/hist/.irb_history

services:
hugo:
image: hugomods/hugo:exts-non-root-0.145.0
hugo: &hugo
image: hugomods/hugo:exts-non-root-0.147.0
stdin_open: true
tty: true
volumes:
Expand All @@ -28,7 +28,11 @@ services:

sh:
<<: *backend
command: sh
command: bash

t-setup:
<<: *hugo
command: hugo --minify --environment production --forceSyncStatic --cleanDestinationDir --logLevel warn

t:
<<: *backend
Expand All @@ -41,6 +45,10 @@ services:
reservations:
cpus: '1.5'
memory: '512M'

depends_on:
t-setup:
condition: service_completed_successfully
volumes:
bundle:
history:
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/_hugo.yml
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@ jobs:
- name: Setup Hugo
uses: peaceiris/actions-hugo@v3
with:
hugo-version: 0.145.0
hugo-version: 0.147.9
extended: true

- name: Checkout
Expand Down
2 changes: 0 additions & 2 deletions bin/build
Original file line number Diff line number Diff line change
@@ -1,6 +1,4 @@
#!/usr/bin/env sh

set -euo pipefail

#hugo --minify --environment production --forceSyncStatic --cleanDestinationDir --logLevel warn "$@"
bin/docked hugo --minify --environment production --forceSyncStatic --cleanDestinationDir --logLevel warn "$@"
9 changes: 5 additions & 4 deletions bin/compose → bin/dc
Original file line number Diff line number Diff line change
@@ -1,7 +1,5 @@
#!/usr/bin/env sh

set -e

# Set Docker platform for ARM-based Macs (M1/M2 chips)
if [ "$(uname -s)" = "Darwin" ]; then
case "$(uname -m)" in
Expand All @@ -11,7 +9,10 @@ if [ "$(uname -s)" = "Darwin" ]; then
esac
fi

docker compose \
-f .dev/compose.yml \
echo "Running docker compose with project name: ${DOCKED_PROJECT_NAME:-jtcom}"
pwd

Comment on lines +12 to +14

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🛠️ Refactor suggestion

Consider the implications of removing strict error handling.

The debug output additions are helpful for troubleshooting Docker Compose issues. However, the removal of set -e (which was present in the original script based on the AI summary) removes immediate exit on command failure, potentially masking errors during script execution.

Consider re-adding error handling while keeping the debug output:

#!/usr/bin/env sh
+set -e

# Set Docker platform for ARM-based Macs (M1/M2 chips)
# ... existing platform detection code ...

echo "Running docker compose with project name: ${DOCKED_PROJECT_NAME:-jtcom}"
pwd
🤖 Prompt for AI Agents
In bin/dc around lines 12 to 14, the script currently lacks strict error
handling due to the removal of 'set -e', which can cause the script to continue
running despite errors. Re-add 'set -e' at the beginning of the script to ensure
it exits immediately on any command failure, while retaining the debug output
lines for troubleshooting Docker Compose issues.

docker "compose" \
-f ".dev/compose.yml" \
-p "${DOCKED_PROJECT_NAME:-jtcom}" \
"$@"
4 changes: 1 addition & 3 deletions bin/docked
Original file line number Diff line number Diff line change
@@ -1,5 +1,3 @@
#!/usr/bin/env sh

set -e

bin/compose run --rm --quiet-pull --remove-orphans "$@"
bin/dc run --rm --quiet-pull --remove-orphans "$@"
6 changes: 1 addition & 5 deletions bin/test
Original file line number Diff line number Diff line change
@@ -1,8 +1,4 @@
#!/bin/sh

set -e

bin/build --destination public-test --baseURL http://localhost:1314
#!/usr/bin/env sh

if [ -z "$1" ]; then
find test -type f -name '*_test.rb' -exec bundle exec ruby -Itest {} +
Expand Down
4 changes: 1 addition & 3 deletions content/blog/_index.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,12 +2,10 @@
title: Receive Valuable Information from Our Blog Page
description: Our blog page consists of articles that offer updated information and the most updated tips to help you achieve your goals.
author: Paul Keen
type: page
slug: blog
layout: blog

metatags:
image: og-blog.jpg

date: 2022-10-10T06:30:10+00:00
---
---
5 changes: 0 additions & 5 deletions hugo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -242,10 +242,6 @@ disableKinds = []
weight = 20


[outputFormats]
[outputFormats.html]
isPlainText = true

[params.forms.career]
action = "https://docs.google.com/forms/d/e/1FAIpQLSfHFrlRzMK2EdIKNNLJuo9Kl4O_eRHLwvOLKNP2d0y06d2YCQ/formResponse"
first_name = "entry.1569799146"
Expand All @@ -269,4 +265,3 @@ tell = "entry.1791620687"
[params.forms.newsletter]
action = "https://docs.google.com/forms/u/0/d/e/1FAIpQLSdD4751jeepeQe4wefgLqBO6XAU0qqvKWvmJ8P6xRmrMRvakg/formResponse"
email = "entry.939459641"

Binary file modified test/fixtures/screenshots/linux/mobile/404.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified test/fixtures/screenshots/linux/mobile/blog/index.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified test/fixtures/screenshots/linux/mobile/free_consultation.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified test/fixtures/screenshots/linux/mobile/nav/hamburger_menu.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified test/fixtures/screenshots/macos/desktop/404.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified test/fixtures/screenshots/macos/desktop/free_consultation.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified test/fixtures/screenshots/macos/desktop/homepage.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified test/fixtures/screenshots/macos/desktop/nav/services.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified test/fixtures/screenshots/macos/desktop/nav/use_cases.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified test/fixtures/screenshots/macos/mobile/404.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified test/fixtures/screenshots/macos/mobile/blog/index.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified test/fixtures/screenshots/macos/mobile/free_consultation.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified test/fixtures/screenshots/macos/mobile/homepage.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified test/fixtures/screenshots/macos/mobile/nav/hamburger_menu.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
2 changes: 1 addition & 1 deletion test/system/mobile_site_test.rb
Original file line number Diff line number Diff line change
Expand Up @@ -71,7 +71,7 @@ def test_top_bar_hamburger_menu

open_mobile_menu

assert_matches_screenshot "nav/hamburger_menu", wait: 3, stability_time_limit: 0.025
assert_matches_screenshot "nav/hamburger_menu", wait: 3, stability_time_limit: 0.025, tolerance: 0.01
end

def test_top_bar_hamburger_menu_services
Expand Down
Original file line number Diff line number Diff line change
@@ -1,45 +1,45 @@
{{ $image := .Resources.Get .Params.client.cover_image }}
{{ $logo := .Resources.Get .Params.client.logo }}
{{ if eq (.Scratch.Get "logoVariant") "white" }}
{{ $logo = .Resources.Get .Params.client.logo_white_version }}
{{ end }}
{{ .Scratch.Delete "logoVariant" }}
<div class="pp-content-post pp-content-grid-post pp-grid-custom post-3206 jt_case_studies type-jt_case_studies status-publish has-post-thumbnail hentry jt_case_studies_category-amazon-web-services jt_case_studies_category-elastisearch jt_case_studies_category-postgresql jt_case_studies_category-react-js jt_case_studies_category-ruby-on-rails" itemscope itemtype="https://schema.org/CreativeWork" data-id="3206">
<meta itemscope itemprop="mainEntityOfPage" itemtype="https://schema.org/WebPage" content="{{ .Title }}"/>
<meta itemprop="datePublished" content="{{ dateFormat "2006-01-02" .Date }}" />
<meta itemprop="dateModified" content="{{ dateFormat "2006-01-02" .Lastmod }}" />
<div itemprop="publisher" itemscope itemtype="https://schema.org/Organization">
<meta itemprop="name" content="JetThoughts">
</div>
<div itemscope itemprop="author" itemtype="https://schema.org/Person">
<meta itemprop="name" content="{{.Params.author }}"/>
</div>
<div itemscope itemprop="image" itemtype="https://schema.org/ImageObject">
<meta itemprop="url"
content="{{ $image.RelPermalink }}" />
<meta itemprop="width" content="{{ $image.Width }}" />
<meta itemprop="height" content="{{ $image.Height }}" />
</div>
<div itemprop="interactionStatistic" itemscope itemtype="https://schema.org/InteractionCounter">
<meta itemprop="interactionType" content="https://schema.org/CommentAction"/>
<meta itemprop="userInteractionCount" content="0"/>
</div>
<div class="pp-content-grid-post-image">
<a href="{{ .RelPermalink }}">
{{ partial "img/client-logo.html" (dict "image" $logo "title" .Params.client.name) }}
</a>
</div>
<div class="pp-content-grid-post-text">
<div class="excerpt">
<p>{{ .Params.excerpt }}</p>
</div>
<div class="case-category">
<ul class='fl-jt_case_studies_category'>
{{ range .Params.categories }}
<li><span class="{{ . | urlize }}">{{ . }}</span></li>
{{ end }}
</ul>
</div>
</div>
</div>
{{ $image := .Resources.Get .Params.client.cover_image }}

{{ $logo := .Resources.Get .Params.client.logo }}
{{ if eq (.Scratch.Get "logoVariant") "white" }}
{{ $logo = .Resources.Get .Params.client.logo_white_version }}
{{ end }}
{{ .Scratch.Delete "logoVariant" }}
<div class="pp-content-post pp-content-grid-post pp-grid-custom post-3206 jt_case_studies type-jt_case_studies status-publish has-post-thumbnail hentry jt_case_studies_category-amazon-web-services jt_case_studies_category-elastisearch jt_case_studies_category-postgresql jt_case_studies_category-react-js jt_case_studies_category-ruby-on-rails" itemscope itemtype="https://schema.org/CreativeWork" data-id="3206">
<meta itemscope itemprop="mainEntityOfPage" itemtype="https://schema.org/WebPage" content="{{ .Title }}"/>
<meta itemprop="datePublished" content="{{ dateFormat "2006-01-02" .Date }}" />
<meta itemprop="dateModified" content="{{ dateFormat "2006-01-02" .Lastmod }}" />
<div itemprop="publisher" itemscope itemtype="https://schema.org/Organization">
<meta itemprop="name" content="JetThoughts">
</div>
<div itemscope itemprop="author" itemtype="https://schema.org/Person">
<meta itemprop="name" content="{{.Params.author }}"/>
</div>
<div itemscope itemprop="image" itemtype="https://schema.org/ImageObject">
<meta itemprop="url"
content="{{ $image.RelPermalink }}" />
<meta itemprop="width" content="{{ $image.Width }}" />
<meta itemprop="height" content="{{ $image.Height }}" />
</div>
<div itemprop="interactionStatistic" itemscope itemtype="https://schema.org/InteractionCounter">
<meta itemprop="interactionType" content="https://schema.org/CommentAction"/>
<meta itemprop="userInteractionCount" content="0"/>
</div>
<div class="pp-content-grid-post-image">
<a href="{{ .RelPermalink }}">
{{ partial "img/client-logo.html" (dict "image" $logo "title" .Params.client.name) }}
</a>
</div>
<div class="pp-content-grid-post-text">
<div class="excerpt">
<p>{{ .Params.excerpt }}</p>
</div>
<div class="case-category">
<ul class='fl-jt_case_studies_category'>
{{ range .Params.categories }}
<li><span class="{{ . | urlize }}">{{ . }}</span></li>
{{ end }}
</ul>
</div>
</div>
</div>
Original file line number Diff line number Diff line change
@@ -1,35 +1,35 @@
<form method='post' target="_blank" action='{{ .Site.Params.forms.contact.action }}'>
<div class='gform-body gform_body'>
<div id='gform_fields_5' class='gform_fields top_label form_sublabel_below description_below'>
<div id="field_5_1" class="gfield gfield--type-text gfield--input-type-text gfield--width-half gf_half gf_half_left gfield_contains_required field_sublabel_below gfield--no-description field_description_below gfield_visibility_visible" data-js-reload="field_5_1" >
<label class='gfield_label gform-field-label' for='input_5_1'>First name<span class="gfield_required"><span class="gfield_required gfield_required_asterisk">*</span></span></label>
<div class='ginput_container ginput_container_text'>
<input required name='{{.Site.Params.forms.contact.first_name }}' id='input_5_1' type='text' value='' class='large' tabindex='100' placeholder='e.g. John' aria-required="true" aria-invalid="false" /> </div>
</div>
<div id="field_5_2" class="gfield gfield--type-text gfield--input-type-text gfield--width-half gf_half gfield_contains_required field_sublabel_below gfield--no-description field_description_below gfield_visibility_visible" data-js-reload="field_5_2" >
<label class='gfield_label gform-field-label' for='input_5_2'>Last name<span class="gfield_required"><span class="gfield_required gfield_required_asterisk">*</span></span></label>
<div class='ginput_container ginput_container_text'>
<input required name='{{.Site.Params.forms.contact.last_name }}' id='input_5_2' type='text' value='' class='large' tabindex='101' placeholder='e.g. Doe' aria-required="true" aria-invalid="false" /> </div>
</div>
<div id="field_5_3" class="gfield gfield--type-email gfield--input-type-email gfield--width-half gf_half gf_half_left gfield_contains_required field_sublabel_below gfield--no-description field_description_below gfield_visibility_visible" data-js-reload="field_5_3" >
<label class='gfield_label gform-field-label' for='input_5_3'>Email address<span class="gfield_required"><span class="gfield_required gfield_required_asterisk">*</span></span></label>
<div class='ginput_container ginput_container_email'>
<input required name='{{.Site.Params.forms.contact.email }}' id='input_5_3' type='email' value='' class='large' tabindex='102' placeholder='e.g. johndoe@gmail.com' aria-required="true" aria-invalid="false" />
</div>
</div>
<div id="field_5_4" class="gfield gfield--type-phone gfield--input-type-phone gfield--width-half gf_half gfield_contains_required field_sublabel_below gfield--no-description field_description_below gfield_visibility_visible" data-js-reload="field_5_4" >
<label class='gfield_label gform-field-label' for='input_5_4'>Phone number<span class="gfield_required"><span class="gfield_required gfield_required_asterisk">*</span></span></label>
<div class='ginput_container ginput_container_phone'>
<input required name='{{.Site.Params.forms.contact.phone }}' id='input_5_4' type='tel' value='' class='large' tabindex='103' placeholder='e.g. (+1) 234 567' aria-required="true" aria-invalid="false" /></div>
</div>
<div id="field_5_5" class="gfield gfield--type-textarea gfield--input-type-textarea gfield--width-full gfield_contains_required field_sublabel_below gfield--no-description field_description_below gfield_visibility_visible" data-js-reload="field_5_5" >
<label class='gfield_label gform-field-label' for='input_5_5'>Tell us about your project<span class="gfield_required"><span class="gfield_required gfield_required_asterisk">*</span></span></label>
<div class='ginput_container ginput_container_textarea'>
<textarea required name='{{.Site.Params.forms.contact.tell }}' id='input_5_5' class='textarea small' tabindex='104' placeholder='Type here...' aria-required="true" aria-invalid="false" rows='10' cols='50'></textarea></div>
</div>
</div>
</div>
<div class='gform_footer top_label'>
<input type='submit' id='gform_submit_button_5' class='gform_button button' value='Request Consultation' tabindex='106' />
</div>
</form>
<form method='post' target="_blank" action='{{ .Site.Params.forms.contact.action }}'>
<div class='gform-body gform_body'>
<div id='gform_fields_5' class='gform_fields top_label form_sublabel_below description_below'>
<div id="field_5_1" class="gfield gfield--type-text gfield--input-type-text gfield--width-half gf_half gf_half_left gfield_contains_required field_sublabel_below gfield--no-description field_description_below gfield_visibility_visible" data-js-reload="field_5_1" >
<label class='gfield_label gform-field-label' for='input_5_1'>First name<span class="gfield_required"><span class="gfield_required gfield_required_asterisk">*</span></span></label>
<div class='ginput_container ginput_container_text'>
<input required name='{{.Site.Params.forms.contact.first_name }}' id='input_5_1' type='text' value='' class='large' tabindex='100' placeholder='e.g. John' aria-required="true" aria-invalid="false" /> </div>
</div>
<div id="field_5_2" class="gfield gfield--type-text gfield--input-type-text gfield--width-half gf_half gfield_contains_required field_sublabel_below gfield--no-description field_description_below gfield_visibility_visible" data-js-reload="field_5_2" >
<label class='gfield_label gform-field-label' for='input_5_2'>Last name<span class="gfield_required"><span class="gfield_required gfield_required_asterisk">*</span></span></label>
<div class='ginput_container ginput_container_text'>
<input required name='{{.Site.Params.forms.contact.last_name }}' id='input_5_2' type='text' value='' class='large' tabindex='101' placeholder='e.g. Doe' aria-required="true" aria-invalid="false" /> </div>
</div>
<div id="field_5_3" class="gfield gfield--type-email gfield--input-type-email gfield--width-half gf_half gf_half_left gfield_contains_required field_sublabel_below gfield--no-description field_description_below gfield_visibility_visible" data-js-reload="field_5_3" >
<label class='gfield_label gform-field-label' for='input_5_3'>Email address<span class="gfield_required"><span class="gfield_required gfield_required_asterisk">*</span></span></label>
<div class='ginput_container ginput_container_email'>
<input required name='{{.Site.Params.forms.contact.email }}' id='input_5_3' type='email' value='' class='large' tabindex='102' placeholder='e.g. johndoe@gmail.com' aria-required="true" aria-invalid="false" />
</div>
</div>
<div id="field_5_4" class="gfield gfield--type-phone gfield--input-type-phone gfield--width-half gf_half gfield_contains_required field_sublabel_below gfield--no-description field_description_below gfield_visibility_visible" data-js-reload="field_5_4" >
<label class='gfield_label gform-field-label' for='input_5_4'>Phone number<span class="gfield_required"><span class="gfield_required gfield_required_asterisk">*</span></span></label>
<div class='ginput_container ginput_container_phone'>
<input required name='{{.Site.Params.forms.contact.phone }}' id='input_5_4' type='tel' value='' class='large' tabindex='103' placeholder='e.g. (+1) 234 567' aria-required="true" aria-invalid="false" /></div>
</div>
<div id="field_5_5" class="gfield gfield--type-textarea gfield--input-type-textarea gfield--width-full gfield_contains_required field_sublabel_below gfield--no-description field_description_below gfield_visibility_visible" data-js-reload="field_5_5" >
<label class='gfield_label gform-field-label' for='input_5_5'>Tell us about your project<span class="gfield_required"><span class="gfield_required gfield_required_asterisk">*</span></span></label>
<div class='ginput_container ginput_container_textarea'>
<textarea required name='{{.Site.Params.forms.contact.tell }}' id='input_5_5' class='textarea small' tabindex='104' placeholder='Type here...' aria-required="true" aria-invalid="false" rows='10' cols='50'></textarea></div>
</div>
</div>
</div>
<div class='gform_footer top_label'>
<input type='submit' id='gform_submit_button_5' class='gform_button button' value='Request Consultation' tabindex='106' />
</div>
</form>
Loading
Loading