mirror of
https://github.com/appwrite/console.git
synced 2026-06-06 19:27:48 +00:00
Merge pull request #2387 from appwrite/feat-PLA-3493-signup-testimonials
This commit is contained in:
@@ -429,5 +429,6 @@ export enum Submit {
|
||||
RecordUpdate = 'submit_dns_record_update',
|
||||
RecordDelete = 'submit_dns_record_delete',
|
||||
SearchClear = 'submit_clear_search',
|
||||
FrameworkDetect = 'submit_framework_detect'
|
||||
FrameworkDetect = 'submit_framework_detect',
|
||||
TestimonialView = 'testimonial_view'
|
||||
}
|
||||
|
||||
@@ -0,0 +1,58 @@
|
||||
import DevKind from '$lib/images/testimonials/hassan.png';
|
||||
import LangX from '$lib/images/testimonials/xue.webp';
|
||||
import KCollect from '$lib/images/testimonials/ryan-oconner-testimonial.png';
|
||||
import Phil from '$lib/images/testimonials/phil.jpg';
|
||||
|
||||
export interface Testimonial {
|
||||
id: string;
|
||||
logo: string;
|
||||
headline: string;
|
||||
blurb: string;
|
||||
name: string;
|
||||
title: string;
|
||||
avatar: string;
|
||||
}
|
||||
|
||||
export const testimonials: Testimonial[] = [
|
||||
{
|
||||
id: 'hassan-devkind',
|
||||
logo: DevKind,
|
||||
headline: 'DevKind reduced development time by 60% and lowered server costs by 40%',
|
||||
blurb: 'A special thanks to Appwrite for providing robust features and seamless functionality.',
|
||||
name: 'Hassan Ahmed',
|
||||
title: 'Engineer at DevKind',
|
||||
avatar: DevKind
|
||||
},
|
||||
{
|
||||
id: 'xue-langx',
|
||||
logo: LangX,
|
||||
headline: 'LangX handled millions of requests using Appwrite',
|
||||
blurb: 'With its comprehensive suite of services, Appwrite emerged as an ideal choice for my needs.',
|
||||
name: 'Xue',
|
||||
title: 'Founder at LangX',
|
||||
avatar: LangX
|
||||
},
|
||||
{
|
||||
id: 'ryan-kcollect',
|
||||
logo: KCollect,
|
||||
headline: 'K-Collect reduced infrastructure costs by 700%',
|
||||
blurb: 'A major impact that Appwrite made was the amount of time and stress saved.',
|
||||
name: "Ryan O'Connor",
|
||||
title: 'Founder at K-Collect',
|
||||
avatar: KCollect
|
||||
},
|
||||
{
|
||||
id: 'phil-majikkids',
|
||||
logo: Phil,
|
||||
headline: 'Just like a Swiss Army Knife - choose and use the tools you need',
|
||||
blurb: 'Just like a Swiss Army Knife you can choose and use the tools that you need with Appwrite.',
|
||||
name: 'Phil McCluskey',
|
||||
title: 'App Manager, Majik Kids',
|
||||
avatar: Phil
|
||||
}
|
||||
];
|
||||
|
||||
export function getRandomTestimonial(): Testimonial {
|
||||
const randomIndex = Math.floor(Math.random() * testimonials.length);
|
||||
return testimonials[randomIndex];
|
||||
}
|
||||
Binary file not shown.
|
After Width: | Height: | Size: 22 KiB |
Binary file not shown.
|
After Width: | Height: | Size: 17 KiB |
Binary file not shown.
|
After Width: | Height: | Size: 3.2 KiB |
Binary file not shown.
|
After Width: | Height: | Size: 22 KiB |
@@ -109,7 +109,7 @@
|
||||
<Layout.Stack gap="s" direction="row">
|
||||
{#if currentReview?.image}
|
||||
<Avatar
|
||||
src={getCampaignImageUrl(currentReview?.image)}
|
||||
src={currentReview.image}
|
||||
alt={currentReview.name}
|
||||
size="m" />
|
||||
{:else}
|
||||
|
||||
@@ -20,12 +20,35 @@
|
||||
import { redirectTo } from '$routes/store';
|
||||
import { checkPricingRefAndRedirect } from '$lib/helpers/pricingRedirect';
|
||||
import { Layout, Link, Typography } from '@appwrite.io/pink-svelte';
|
||||
import { getRandomTestimonial } from '$lib/data/testimonials';
|
||||
|
||||
export let data;
|
||||
|
||||
let name: string, mail: string, pass: string, disabled: boolean;
|
||||
let terms = false;
|
||||
|
||||
const randomTestimonial = getRandomTestimonial();
|
||||
const testimonialCampaign = {
|
||||
$id: 'testimonial-signup',
|
||||
template: 'review',
|
||||
title: randomTestimonial.headline,
|
||||
description: 'Join thousands of developers building amazing apps with Appwrite',
|
||||
reviews: [
|
||||
{
|
||||
name: randomTestimonial.name,
|
||||
image: randomTestimonial.avatar,
|
||||
description: randomTestimonial.title,
|
||||
review: randomTestimonial.blurb
|
||||
}
|
||||
]
|
||||
};
|
||||
|
||||
trackEvent(Submit.TestimonialView, {
|
||||
testimonial_id: randomTestimonial.id,
|
||||
testimonial_name: randomTestimonial.name,
|
||||
testimonial_company: randomTestimonial.title
|
||||
});
|
||||
|
||||
async function register() {
|
||||
try {
|
||||
disabled = true;
|
||||
@@ -43,7 +66,9 @@
|
||||
trackEvent(Submit.AccountCreate, {
|
||||
campaign_name: data?.couponData?.code,
|
||||
email: mail,
|
||||
name: name
|
||||
name: name,
|
||||
testimonial_id: randomTestimonial.id,
|
||||
testimonial_name: randomTestimonial.name
|
||||
});
|
||||
|
||||
if (data?.couponData?.code) {
|
||||
@@ -94,7 +119,7 @@
|
||||
<title>Sign up - Appwrite</title>
|
||||
</svelte:head>
|
||||
|
||||
<Unauthenticated coupon={data?.couponData} campaign={data?.campaign}>
|
||||
<Unauthenticated coupon={data?.couponData} campaign={data?.campaign || testimonialCampaign}>
|
||||
<svelte:fragment slot="title">Sign up</svelte:fragment>
|
||||
<svelte:fragment>
|
||||
<Form onSubmit={register}>
|
||||
|
||||
Reference in New Issue
Block a user