Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
28 commits
Select commit Hold shift + click to select a range
cefea6e
initial page
tmcclung Oct 10, 2024
a1fccbf
added footer links
tmcclung Oct 10, 2024
c00f459
added debtbook logo
tmcclung Oct 10, 2024
61398f6
Adding public directory
davidgiffin Oct 10, 2024
1983de7
added GA tracking and hubspot
tmcclung Oct 14, 2024
52fb118
Merge branch 'main' of github.com:releasehub-com/release-landing-new
tmcclung Oct 14, 2024
9e4ecf4
changed testimonials to have last name initials vs full names
tmcclung Oct 14, 2024
0dc65cd
dark theme release.com
tmcclung Oct 21, 2024
a86e186
fixed Release.ai link in the header
tmcclung Oct 21, 2024
0817c70
fixed missing image
tmcclung Oct 21, 2024
73d0a82
added gitlab version
tmcclung Nov 20, 2024
c1fb50c
change the landing page to reference ephemeral environments and made …
tmcclung Nov 20, 2024
c69d887
fixed missing ai product image
tmcclung Nov 20, 2024
cc3f122
fixed explore release ai button
tmcclung Nov 20, 2024
7e57a06
made version persistent if they go back to the root
tmcclung Nov 23, 2024
641e2f2
fixed switching back to the main landing page
tmcclung Nov 23, 2024
4c3827f
fixed the build for adding the persistent landing page
tmcclung Nov 23, 2024
86fdfa7
fixed GitLabLandingPage.tsx case
tmcclung Nov 23, 2024
69de87f
Added comparison pages
tmcclung Dec 6, 2024
d416b4a
added comparison slug handling
tmcclung Dec 6, 2024
035119d
fixed lint issues
tmcclung Dec 6, 2024
720213b
fixed lint issue with competitor page routing
tmcclung Dec 6, 2024
a6c7e1f
updated calendly links
tmcclung Dec 6, 2024
5826b70
fixed comparison pages that don't exist, redirect back to /
tmcclung Dec 6, 2024
00a4d1a
added a default comparison page
tmcclung Dec 7, 2024
ae393c7
made it all work
tmcclung Dec 10, 2024
92ecca5
replicated page
elanderholm Dec 12, 2024
9492e8a
tried to fix messaging
elanderholm Dec 12, 2024
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
1 change: 1 addition & 0 deletions Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -55,6 +55,7 @@ COPY package.json pnpm-lock.yaml .npmrc ./

COPY --from=builder /app/node_modules /app/node_modules
COPY --from=builder /app/.next /app/.next
COPY --from=builder /app/public /app/public

#USER nextjs

Expand Down
42 changes: 42 additions & 0 deletions app/comparison/[...slug]/page.tsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,42 @@
import { redirect } from 'next/navigation'
import { EnhancedComparisonPage } from '@/components/EnhancedComparisonPage'
import { gitlabFeatures } from '../gitlab/features'
import { signadotFeatures } from '../signadot/features'
import { bunnyshellFeatures } from '../bunnyshell/features'
import { qoveryFeatures } from '../qovery/features'
import { shipyardFeatures } from '../shipyard/features'

type CompetitorData = {
name: string;
features: {
name: string;
release: boolean;
competitor: boolean;
description: string;
}[];
};

const competitorMap: Record<string, CompetitorData> = {
gitlab: { name: 'GitLab', features: gitlabFeatures },
signadot: { name: 'Signadot', features: signadotFeatures },
bunnyshell: { name: 'Bunnyshell', features: bunnyshellFeatures },
qovery: { name: 'Qovery', features: qoveryFeatures },
quovery: { name: 'Qovery', features: qoveryFeatures },
shipyard: { name: 'Shipyard', features: shipyardFeatures },
}

export default function ComparisonPage({ params }: { params: { slug: string[] } }) {
const competitor = params.slug[0]?.split('.')[0].toLowerCase()
const competitorData = competitorMap[competitor as keyof typeof competitorMap]

if (!competitorData) {
redirect('/comparison')
}

return (
<EnhancedComparisonPage
competitorName={competitorData.name}
features={competitorData.features}
/>
)
}
38 changes: 38 additions & 0 deletions app/comparison/bunnyshell/features.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
export const bunnyshellFeatures = [
{
name: "Ephemeral Environments",
release: true,
competitor: true,
description: "While Bunnyshell offers ephemeral environments, Release provides more advanced isolation and disposability for every pull request, offering superior testing and development capabilities."
},
{
name: "Complex Environment Support",
release: true,
competitor: false,
description: "Release excels in supporting complex, multi-service architectures and microservices across various cloud providers. Bunnyshell's support for intricate setups is more limited."
},
{
name: "Environment-based CI/CD",
release: true,
competitor: true,
description: "Both Release and Bunnyshell offer environment-based CI/CD, but Release provides more granular control and flexibility for complex workflows, especially in multi-cloud scenarios."
},
{
name: "Infrastructure as Code",
release: true,
competitor: true,
description: "Release supports a wider range of IaC tools including Terraform, Helm, and Docker Compose. While Bunnyshell has IaC capabilities, Release offers more flexibility and integration options."
},
{
name: "Cost-Effectiveness",
release: true,
competitor: false,
description: "Release's efficient resource allocation and management typically result in 40-60% cost savings on DevOps compared to Bunnyshell, especially for complex, multi-environment setups."
},
{
name: "Developer Productivity",
release: true,
competitor: true,
description: "Both platforms enhance developer productivity, but Release's deeper integration with ephemeral environments and more comprehensive automation tools often lead to greater efficiency gains."
}
]
6 changes: 6 additions & 0 deletions app/comparison/bunnyshell/page.tsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
import { EnhancedComparisonPage } from '@/components/EnhancedComparisonPage'
import { bunnyshellFeatures } from './features'

export default function BunnyshellComparison() {
return <EnhancedComparisonPage competitorName="Bunnyshell" features={bunnyshellFeatures} />
}
38 changes: 38 additions & 0 deletions app/comparison/gitlab/features.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
export const gitlabFeatures = [
{
name: "Ephemeral Environments",
release: true,
competitor: false,
description: "Release is built around the concept of Ephemeral Environments, providing fully isolated, disposable environments for every pull request. GitLab's review apps offer limited environment isolation and are not as comprehensive."
},
{
name: "Complex Environment Support",
release: true,
competitor: false,
description: "Release excels in supporting complex, multi-service architectures and microservices across various cloud providers. GitLab's environment support is more limited and less flexible for intricate setups."
},
{
name: "Environment-based CI/CD",
release: true,
competitor: true,
description: "Release offers a full set of integrations focused on Environment-based CI/CD and automation. While GitLab has CI/CD capabilities, Release's approach provides more granular control and flexibility for complex workflows."
},
{
name: "Infrastructure as Code",
release: true,
competitor: true,
description: "Release supports multiple IaC tools like Terraform, Helm, and Docker Compose, offering greater flexibility. GitLab's IaC support is more limited and less integrated with ephemeral environments."
},
{
name: "Cost-Effectiveness",
release: true,
competitor: false,
description: "Release's Ephemeral Environment approach and efficient resource allocation lead to significant cost savings, especially for complex setups. Users typically save 40-60% on DevOps costs compared to GitLab's fixed pricing, which can lead to overprovisioning and wasted resources."
},
{
name: "Developer Productivity",
release: true,
competitor: true,
description: "Release's focus on Ephemeral Environments and automated workflows significantly boosts developer productivity, especially for complex projects. GitLab offers good productivity tools but lacks the deep integration with ephemeral environments."
}
]
6 changes: 6 additions & 0 deletions app/comparison/gitlab/page.tsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
import { EnhancedComparisonPage } from '@/components/EnhancedComparisonPage'
import { gitlabFeatures } from './features'

export default function GitLabComparison() {
return <EnhancedComparisonPage competitorName="GitLab" features={gitlabFeatures} />
}
109 changes: 109 additions & 0 deletions app/comparison/page.tsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,109 @@
'use client'

import Link from 'next/link'
import { Button } from "@/components/ui/button"
import { Card, CardHeader, CardTitle, CardContent } from "@/components/ui/card"
import { CheckIcon, XIcon, ArrowRightIcon } from 'lucide-react'
import Header from '@/components/Header'
import Footer from '@/components/Footer'
import { gitlabFeatures } from './gitlab/features'
import { signadotFeatures } from './signadot/features'
import { bunnyshellFeatures } from './bunnyshell/features'
import { qoveryFeatures } from './qovery/features'
import { shipyardFeatures } from './shipyard/features'

const competitors = [
{ name: 'GitLab', features: gitlabFeatures, path: '/comparison/gitlab' },
{ name: 'Signadot', features: signadotFeatures, path: '/comparison/signadot' },
{ name: 'Bunnyshell', features: bunnyshellFeatures, path: '/comparison/bunnyshell' },
{ name: 'Qovery', features: qoveryFeatures, path: '/comparison/qovery' },
{ name: 'Shipyard', features: shipyardFeatures, path: '/comparison/shipyard' }
]

export default function ComparisonPage() {
return (
<div className="flex flex-col min-h-screen bg-gray-900 text-gray-100">
<Header />
<main className="flex-grow">
<section className="py-12 bg-gradient-to-br from-gray-900 via-gray-800 to-[#00bb93]">
<div className="container mx-auto px-4">
<h1 className="text-4xl md:text-5xl font-bold mb-4">Release vs. Competitors</h1>
<p className="text-xl mb-8">Discover how Release outperforms other DevOps platforms across key features.</p>
<div className="flex flex-col sm:flex-row gap-4">
<Link href="https://release.com/signup">
<Button size="lg" className="w-full sm:w-auto bg-[#00bb93] text-white hover:bg-[#00bb93]/90 font-bold">
Start Free Trial
</Button>
</Link>
<Link href="https://calendly.com/release-tommy/release-founder-chat-comparison">
<Button size="lg" className="w-full sm:w-auto bg-white text-[#00bb93] hover:bg-gray-100 font-bold">
Schedule a chat with a Release founder
</Button>
</Link>
</div>
</div>
</section>

<div className="container mx-auto px-4 py-16">
{competitors.map((competitor) => (
<Card key={competitor.name} className="mb-8 bg-gray-800 border-gray-700">
<CardHeader className="bg-gray-700">
<CardTitle className="text-2xl font-bold text-white">Release vs. {competitor.name}</CardTitle>
</CardHeader>
<CardContent className="text-gray-200">
<div className="grid grid-cols-1 md:grid-cols-3 gap-6 mt-4">
{competitor.features.slice(0, 3).map((feature) => (
<div key={feature.name} className="bg-gray-700 p-4 rounded-lg">
<h3 className="text-lg font-semibold mb-2 text-[#00bb93]">{feature.name}</h3>
<div className="flex items-center mb-2">
<div className="w-1/2 flex items-center">
<CheckIcon className="h-5 w-5 text-[#00bb93] mr-2" />
<span className="text-white">Release</span>
</div>
<div className="w-1/2 flex items-center">
{feature.competitor ? (
<CheckIcon className="h-5 w-5 text-yellow-500 mr-2" />
) : (
<XIcon className="h-5 w-5 text-red-500 mr-2" />
)}
<span className="text-gray-300">{competitor.name}</span>
</div>
</div>
<p className="text-sm text-gray-300">{feature.description}</p>
</div>
))}
</div>
<div className="mt-6 text-center">
<Link href={competitor.path}>
<Button className="bg-[#00bb93] text-white hover:bg-[#00bb93]/90">
See full comparison of Release vs. {competitor.name}
<ArrowRightIcon className="ml-2 h-4 w-4" />
</Button>
</Link>
</div>
</CardContent>
</Card>
))}

<section className="text-center mt-16">
<h2 className="text-3xl font-bold mb-4">Ready to Experience the Release Difference?</h2>
<p className="text-xl mb-8">Join the companies that have accelerated their development and reduced costs with Release.</p>
<div className="flex flex-col sm:flex-row justify-center gap-4">
<Link href="https://release.com/signup">
<Button size="lg" className="w-full sm:w-auto bg-[#00bb93] text-white hover:bg-[#00bb93]/90 font-bold">
Start Your Free Trial
</Button>
</Link>
<Link href="https://calendly.com/release-tommy/release-founder-chat-comparison">
<Button size="lg" variant="outline" className="w-full sm:w-auto border-[#00bb93] text-[#00bb93] hover:bg-[#00bb93] hover:text-white font-bold">
Schedule a chat with a Release founder
</Button>
</Link>
</div>
</section>
</div>
</main>
<Footer />
</div>
)
}
38 changes: 38 additions & 0 deletions app/comparison/qovery/features.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
export const qoveryFeatures = [
{
name: "Ephemeral Environments",
release: true,
competitor: true,
description: "Both Release and Qovery offer ephemeral environments, but Release provides more advanced isolation and disposability for every pull request, offering superior testing and development capabilities."
},
{
name: "Complex Environment Support",
release: true,
competitor: false,
description: "Release excels in supporting complex, multi-service architectures and microservices across various cloud providers. Qovery's support for intricate setups is more limited, especially for multi-cloud scenarios."
},
{
name: "Environment-based CI/CD",
release: true,
competitor: true,
description: "While both platforms offer environment-based CI/CD, Release provides more granular control and flexibility for complex workflows, especially in multi-cloud scenarios."
},
{
name: "Infrastructure as Code",
release: true,
competitor: true,
description: "Release supports a wider range of IaC tools including Terraform, Helm, and Docker Compose. Qovery has IaC capabilities, but Release offers more flexibility and integration options."
},
{
name: "Cost-Effectiveness",
release: true,
competitor: false,
description: "Release's efficient resource allocation and management typically result in 40-60% cost savings on DevOps compared to Qovery, especially for complex, multi-environment setups."
},
{
name: "Developer Productivity",
release: true,
competitor: true,
description: "Both platforms enhance developer productivity, but Release's deeper integration with ephemeral environments and more comprehensive automation tools often lead to greater efficiency gains."
}
]
6 changes: 6 additions & 0 deletions app/comparison/qovery/page.tsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
import { EnhancedComparisonPage } from '@/components/EnhancedComparisonPage'
import { qoveryFeatures } from './features'

export default function QoveryComparison() {
return <EnhancedComparisonPage competitorName="Qovery" features={qoveryFeatures} />
}
38 changes: 38 additions & 0 deletions app/comparison/shipyard/features.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
export const shipyardFeatures = [
{
name: "Ephemeral Environments",
release: true,
competitor: true,
description: "Both Release and Shipyard offer ephemeral environments, but Release provides more advanced isolation and disposability for every pull request, offering superior testing and development capabilities."
},
{
name: "Complex Environment Support",
release: true,
competitor: false,
description: "Release excels in supporting complex, multi-service architectures and microservices across various cloud providers. Shipyard's support for intricate setups is more limited, especially for multi-cloud scenarios."
},
{
name: "Environment-based CI/CD",
release: true,
competitor: true,
description: "While both platforms offer environment-based CI/CD, Release provides more granular control and flexibility for complex workflows, especially in multi-cloud scenarios."
},
{
name: "Infrastructure as Code",
release: true,
competitor: true,
description: "Release supports a wider range of IaC tools including Terraform, Helm, and Docker Compose. Shipyard has IaC capabilities, but Release offers more flexibility and integration options."
},
{
name: "Cost-Effectiveness",
release: true,
competitor: false,
description: "Release's efficient resource allocation and management typically result in significant cost savings, especially for complex, multi-environment setups. Users often report 40-60% savings on DevOps costs compared to Shipyard."
},
{
name: "Developer Productivity",
release: true,
competitor: true,
description: "Both platforms enhance developer productivity, but Release's deeper integration with ephemeral environments and more comprehensive automation tools often lead to greater efficiency gains."
}
]
6 changes: 6 additions & 0 deletions app/comparison/shipyard/page.tsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
import { EnhancedComparisonPage } from '@/components/EnhancedComparisonPage'
import { shipyardFeatures } from './features'

export default function ShipyardComparison() {
return <EnhancedComparisonPage competitorName="Shipyard" features={shipyardFeatures} />
}
38 changes: 38 additions & 0 deletions app/comparison/signadot/features.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
export const signadotFeatures = [
{
name: "Ephemeral Environments",
release: true,
competitor: true,
description: "Both Release and Signadot offer ephemeral environments, but Release provides more comprehensive isolation and integration capabilities across a wider range of cloud providers and services."
},
{
name: "Complex Environment Support",
release: true,
competitor: false,
description: "Release excels in supporting complex, multi-service architectures and microservices across various cloud providers. Signadot's support for intricate setups is more limited, especially for multi-cloud scenarios."
},
{
name: "Environment-based CI/CD",
release: true,
competitor: true,
description: "While both platforms offer environment-based CI/CD, Release provides more extensive integrations and flexibility, especially for complex workflows involving multiple services and cloud providers."
},
{
name: "Infrastructure as Code",
release: true,
competitor: true,
description: "Release supports a wider range of IaC tools including Terraform, Helm, and Docker Compose. Signadot has IaC capabilities, but Release offers more flexibility and integration options."
},
{
name: "Cost-Effectiveness",
release: true,
competitor: false,
description: "Release's efficient resource allocation and management typically result in significant cost savings, especially for complex, multi-environment setups. Users often report 40-60% savings on DevOps costs compared to Signadot."
},
{
name: "Developer Productivity",
release: true,
competitor: true,
description: "Both platforms enhance developer productivity, but Release's deeper integration with a wider range of tools and services, along with more comprehensive automation capabilities, often leads to greater efficiency gains."
}
]
6 changes: 6 additions & 0 deletions app/comparison/signadot/page.tsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
import { EnhancedComparisonPage } from '@/components/EnhancedComparisonPage'
import { signadotFeatures } from './features'

export default function SignadotComparison() {
return <EnhancedComparisonPage competitorName="Signadot" features={signadotFeatures} />
}
Binary file modified app/favicon.ico
Binary file not shown.
Loading