docs: update the Call page

Update the Call page with some updated text and some product-specific
testimonials.
This commit is contained in:
Oliver Davies 2023-07-13 22:47:54 +01:00
parent 7c36c93917
commit e2f57eaf92
5 changed files with 52 additions and 33 deletions

View file

@ -1,5 +1,5 @@
---
import { getCollection, getEntries, getEntry } from 'astro:content';
import { getCollection } from 'astro:content';
import _ from "lodash";
interface Props {
@ -8,23 +8,26 @@ interface Props {
const names = _(Astro.props.names);
const testimonials = await getCollection('testimonial', ({ id }) => names.includes(id));
const reversedTestimonials = _(testimonials).reverse()
const sortedTestimonials = _(testimonials)
.sort((a, b) => new Date(a.date) < new Date(b.date))
.reverse()
.value();
---
{testimonials && (
<h2>What others have said</h2>
<div class="mt-6 space-y-14">
{reversedTestimonials.map(testimonial => (
{_(sortedTestimonials).map(({ data: { image, name, tagline, text } }) => (
<article>
<blockquote class="mt-4" set:html={testimonial.data.text} />
<blockquote class="mt-4" set:html={text} />
<footer class="flex items-center space-x-4 space-x-reverse">
<span class="text-base">{testimonial.data.name} - {testimonial.data.tagline}</span>
<span class="text-base">{name}{tagline && (<> - {tagline}</>)}</span>
{testimonial.data.image && (
{image && (
<span class="order-first not-prose">
<img width="50" height="50" class="rounded-full border w-15 h-15" src={`/images/recommendations/${testimonial.data.image}`} />
<img width="50" height="50" class="rounded-full border w-15 h-15" src={`/images/recommendations/${image}`} />
</span>
)}
</footer>

View file

@ -53,9 +53,10 @@ const talkCollection = defineCollection({
const testimonialCollection = defineCollection({
type: 'data',
schema: z.object({
date: z.string().optional(),
image: z.string().or(z.null()),
name: z.string(),
tagline: z.string(),
tagline: z.string().or(z.null()),
text: z.string(),
url: z.string().or(z.null()),
}),

View file

@ -0,0 +1,8 @@
{
"name": "Michael Itkoff",
"tagline": "Cofounder",
"url": "https://www.daylightbooks.org",
"text": "<p>Ollie handled the tech support issues efficiently and effectively, leaving time at the end for further troubleshooting and follow up. Much appreciated!</p>",
"image": "",
"date": "2023-07-13"
}

View file

@ -0,0 +1,9 @@
{
"name": "Tom Evans",
"tagline": null,
"text": "<p>I had the opportunity and good fortune to work with Oliver solving two problems that I was having on a Drupal Commerce site. I have done several Drupal sites using UberCart, but since it is deprecated, I chose to use Commerce. I had searched, posted to forums, and other normal means to find answers to my problems, to no response and to no avail.</p><p>I got a referral to Oliver and scheduled an appointment to discuss the problems on a Zoom call. After showing him via screen share where I was stumped, he offered different approaches to what I was doing, which I was fine with as long as it worked.</p><p>Once we solved the first problem, I was really elated and then focused on the second one, which was an easier fix. So in a short period of time, both problems were fixed and tested.</p><p>I found Oliver was affable and easy to work with. He has a strong work ethic and a desire to solve problems for his customers and can recommend working with him. I think one of his strengths is to find alternative solutions to problems.</p>",
"image": null,
"url": null,
"date": "2023-07-14"
}

View file

@ -2,13 +2,10 @@
layout: ~/layouts/PageLayout.astro
title: Book a 1-on-1 consulting call
link: https://savvycal.com/opdavies/consulting-call
price: 350
price: £350
testimonials:
- anonymous
- mick-felton
- michael-itkoff
- huw-davies
- scott-euser
- michael-itkoff2
- tom-evans
---
import Button from "~/components/Button.astro";
@ -20,21 +17,34 @@ import { numberOfYears } from '~/utils';
## Who is this for?
*/}
## What I can help you with
As a professional Software Developer and Consultant with over {numberOfYears} years of Drupal and PHP experience, I have a lot of knowledge that I use to help customers and their projects.
## Some things I can help you with
- How to approach a new project or task.
- Writing your first automated tests or starting with test-driven development.
- PHP and Drupal fundamentals and best practices.
- Adding eCommerce functionality with Drupal Commerce.
- Upgrading Drupal websites from unsupported versions.
- Writing your first automated tests with PHPUnit or starting with test-driven development.
- Introducing static analysis or other code quality tools to your project.
- Adopting a utility-first CSS approach, e.g. Tailwind CSS, within a new or existing theme.
- Configuring continuous integration (CI) pipelines with GitHub Actions, GitLab CI or Bitbucket Pipelines.
- Automating tasks with Docker or Ansible.
- Help to fix a bug or some broken code.
- Help fixing a bug or some broken code.
- Reviewing your code and providing advice and suggestions.
In this 1-on-1 video call, I can help you answer questions in these areas or any others you may have.
Price: £{frontmatter.price}
Price: {frontmatter.price}
<Button href={frontmatter.link} text="Book your call now" />
## 100% money back guarantee!
If you dont find the call valuable, just let me know and Ill refund 100% of the cost.
<Testimonials names={frontmatter.testimonials} />
## Who am I?
- I'm an Acquia-certified Drupal expert with over {numberOfYears} years of development experience.
@ -43,25 +53,13 @@ Price: £{frontmatter.price}
- I'm a multiple-time DrupalCon speaker who regularly presents talks and workshops at conferences and meetups.
<Callout title="Ready to book your call?">
<Button href={frontmatter.link} text={`Book now for £${frontmatter.price}`} />
<Button href={frontmatter.link} text={`Book now for ${frontmatter.price}`} />
<p class="mb-0">You can pay and reserve your time slot straight away. There are a few open slots each month. If, after this call, you decide to do a longer engagement with me, the cost of this call will be deducted from that engagement.</p>
</Callout>
## 100% money back guarantee!
If you dont find the call valuable, just let me know and Ill refund 100% of the cost.
<Testimonials names={frontmatter.testimonials} />
<Callout title="Ready to book your call?">
<Button href={frontmatter.link} text={`Book now for £${frontmatter.price}`} />
<p class="mb-0">You can pay and reserve your time slot straight away. There are a few open slots each month. If, after this call, you decide to do a longer engagement with me, the cost of this call will be deducted from that engagement.</p>
<p class="mb-0">You can pay and reserve your time slot straight away. There are a limited number of available slots each month. If, after the call, you decide to do a longer engagement with me, the cost of this call will be deducted from that engagement.</p>
</Callout>
## Availability is limited
Im only available for a few 1-on-1 calls per month.
Scheduling is first come, first served, so the sooner you book your call, the sooner you will have the answers you need to move your project forward.
Scheduling is first come, first served, so the sooner you book your time slot, the sooner you will have the answers you need to move your project forward.