refactor: update branding from Ciphera Pulse to Pulse across the application for consistency and clarity

This commit is contained in:
Usman Baig
2026-01-19 16:58:09 +01:00
parent 15ac469e39
commit 035d78175f
16 changed files with 26 additions and 26 deletions

View File

@@ -4,7 +4,7 @@
[![Built with Next.js](https://img.shields.io/badge/Built%20with-Next.js-blue.svg?logo=next.js&logoColor=white)](https://nextjs.org/)
[![Hosted on Railway](https://img.shields.io/badge/Hosted%20on-Railway-orange.svg?logo=railway&logoColor=white)](https://railway.app/)
Analytics Frontend is the dashboard interface for Ciphera Pulse. It provides a simple, intuitive interface for managing sites and viewing analytics data.
Analytics Frontend is the dashboard interface for Pulse. It provides a simple, intuitive interface for managing sites and viewing analytics data.
## Features

View File

@@ -2,12 +2,12 @@ export default function AboutPage() {
return (
<div className="container mx-auto px-4 py-8 max-w-4xl">
<h1 className="text-3xl font-bold mb-6 text-neutral-900 dark:text-white">
About Ciphera Pulse
About Pulse
</h1>
<div className="prose prose-neutral dark:prose-invert max-w-none">
<p className="text-lg text-neutral-600 dark:text-neutral-400 mb-4">
Ciphera Pulse is a privacy-first web analytics platform that provides simple,
Pulse is a privacy-first web analytics platform that provides simple,
intuitive insights without compromising your visitors' privacy.
</p>

View File

@@ -1,19 +1,19 @@
export default function FAQPage() {
const faqs = [
{
question: "Is Ciphera Pulse GDPR compliant?",
answer: "Yes, Ciphera Pulse is GDPR compliant by design. We don't use cookies, don't collect personal data, and process all data anonymously."
question: "Is Pulse GDPR compliant?",
answer: "Yes, Pulse is GDPR compliant by design. We don't use cookies, don't collect personal data, and process all data anonymously."
},
{
question: "Do I need a cookie consent banner?",
answer: "No, you don't need a cookie consent banner. Ciphera Pulse doesn't use cookies, so it's exempt from cookie consent requirements under GDPR."
answer: "No, you don't need a cookie consent banner. Pulse doesn't use cookies, so it's exempt from cookie consent requirements under GDPR."
},
{
question: "How does Ciphera Pulse track visitors?",
question: "How does Pulse track visitors?",
answer: "We use a lightweight JavaScript snippet that sends anonymous pageview events. No cookies, no cross-session identifiers (we use sessionStorage only to group events within a single visit), and no cross-site tracking."
},
{
question: "What data does Ciphera Pulse collect?",
question: "What data does Pulse collect?",
answer: "We collect anonymous pageview data including page path, referrer, device type, browser, and country (derived from IP at request time; the IP itself is not stored). No personal information is collected. If you enable optional session replay, see 'What about session replay?' below."
},
{

View File

@@ -20,7 +20,7 @@ export default function LayoutContent({ children }: { children: React.ReactNode
</main>
<Footer
LinkComponent={Link}
appName="Ciphera Pulse"
appName="Pulse"
/>
</>
)

View File

@@ -13,7 +13,7 @@ const plusJakartaSans = Plus_Jakarta_Sans({
})
export const metadata: Metadata = {
title: 'Ciphera Pulse - Privacy-First Web Analytics',
title: 'Pulse - Privacy-First Web Analytics',
description: 'Simple, privacy-focused web analytics. No cookies, no tracking. GDPR compliant.',
keywords: ['analytics', 'privacy', 'web analytics', 'ciphera', 'GDPR'],
authors: [{ name: 'Ciphera' }],

View File

@@ -12,7 +12,7 @@ export default function HomePage() {
const { user, loading } = useAuth()
if (loading) {
return <LoadingOverlay logoSrc="/ciphera_icon_no_margins.png" title="Ciphera Pulse" />
return <LoadingOverlay logoSrc="/ciphera_icon_no_margins.png" title="Pulse" />
}
if (!user) {

View File

@@ -10,7 +10,7 @@ export default function SecurityPage() {
Data Protection
</h2>
<p className="text-neutral-600 dark:text-neutral-400 mb-4">
Ciphera Pulse is built with security and privacy as core principles:
Pulse is built with security and privacy as core principles:
</p>
<ul className="list-disc list-inside space-y-2 text-neutral-600 dark:text-neutral-400 mb-6">
<li>All data is encrypted in transit using TLS/SSL</li>
@@ -24,7 +24,7 @@ export default function SecurityPage() {
Compliance
</h2>
<p className="text-neutral-600 dark:text-neutral-400 mb-4">
Ciphera Pulse is compliant with:
Pulse is compliant with:
</p>
<ul className="list-disc list-inside space-y-2 text-neutral-600 dark:text-neutral-400 mb-6">
<li>GDPR (General Data Protection Regulation)</li>

View File

@@ -1,7 +1,7 @@
import ProfileSettings from '@/components/settings/ProfileSettings'
export const metadata = {
title: 'Settings - Ciphera Pulse',
title: 'Settings - Pulse',
description: 'Manage your account settings',
}

View File

@@ -96,7 +96,7 @@ export default function PublicDashboardPage() {
}
if (loading && !data && !isPasswordProtected) {
return <LoadingOverlay logoSrc="/ciphera_icon_no_margins.png" title="Ciphera Pulse" />
return <LoadingOverlay logoSrc="/ciphera_icon_no_margins.png" title="Pulse" />
}
if (isPasswordProtected && !data) {

View File

@@ -132,7 +132,7 @@ export default function SiteDashboardPage() {
}
if (loading) {
return <LoadingOverlay logoSrc="/ciphera_icon_no_margins.png" title="Ciphera Pulse" />
return <LoadingOverlay logoSrc="/ciphera_icon_no_margins.png" title="Pulse" />
}
if (!site) {

View File

@@ -230,7 +230,7 @@ export default function SiteSettingsPage() {
}
if (loading) {
return <LoadingOverlay logoSrc="/ciphera_icon_no_margins.png" title="Ciphera Pulse" />
return <LoadingOverlay logoSrc="/ciphera_icon_no_margins.png" title="Pulse" />
}
if (!site) {
@@ -785,7 +785,7 @@ export default function SiteSettingsPage() {
For your privacy policy
</h3>
<p className="text-sm text-neutral-500 dark:text-neutral-400">
Copy the text below into your site&apos;s Privacy Policy to describe your use of Ciphera Pulse.
Copy the text below into your site&apos;s Privacy Policy to describe your use of Pulse.
It updates automatically based on your saved settings above.
</p>
<p className="text-xs text-amber-600 dark:text-amber-500">

View File

@@ -10,7 +10,7 @@ interface LoadingOverlayProps {
export default function LoadingOverlay({
logoSrc = "/ciphera_icon_no_margins.png",
title = "Ciphera Pulse"
title = "Pulse"
}: LoadingOverlayProps) {
const [mounted, setMounted] = useState(false)
@@ -27,7 +27,7 @@ export default function LoadingOverlay({
<div className="flex items-center gap-3">
<img
src={logoSrc}
alt={typeof title === 'string' ? title : "Ciphera Pulse"}
alt={typeof title === 'string' ? title : "Pulse"}
className="h-12 w-auto object-contain"
/>
<span className="text-3xl tracking-tight text-neutral-900 dark:text-white">

View File

@@ -43,7 +43,7 @@ export default function SiteList() {
}
if (loading) {
return <LoadingOverlay logoSrc="/ciphera_icon_no_margins.png" title="Ciphera Pulse" />
return <LoadingOverlay logoSrc="/ciphera_icon_no_margins.png" title="Pulse" />
}
if (sites.length === 0) {

View File

@@ -99,7 +99,7 @@ export function AuthProvider({ children }: { children: React.ReactNode }) {
return (
<AuthContext.Provider value={{ user, loading, login, logout, refresh, refreshSession }}>
{isLoggingOut && <LoadingOverlay logoSrc="/ciphera_icon_no_margins.png" title="Ciphera Pulse" />}
{isLoggingOut && <LoadingOverlay logoSrc="/ciphera_icon_no_margins.png" title="Pulse" />}
{children}
</AuthContext.Provider>
)

View File

@@ -6,7 +6,7 @@ const DOCS_URL =
: 'https://pulse.ciphera.net/faq'
/**
* Generates a privacy-policy snippet for the site's use of Ciphera Pulse.
* Generates a privacy-policy snippet for the site's use of Pulse.
* The text is derived from the site's data collection and filtering settings
* and is intended to be copied into the site owner's Privacy Policy page.
* This is for transparency (GDPR Art. 13/14); it is not a cookie banner.
@@ -40,13 +40,13 @@ export function generatePrivacySnippet(site: Site): string {
: 'minimal anonymous data about site usage (e.g. that a page was viewed)'
const p1 =
'We use Ciphera Pulse to understand how visitors use our site. Ciphera does not use cookies or other persistent identifiers. A cookie consent banner is not required for Ciphera Pulse. We respect Do Not Track (DNT) browser settings.'
'We use Pulse to understand how visitors use our site. Ciphera does not use cookies or other persistent identifiers. A cookie consent banner is not required for Pulse. We respect Do Not Track (DNT) browser settings.'
let p2 = `We collect anonymous data: ${list}. `
if (filterBots) {
p2 += 'Known bots and referrer spam are excluded from our analytics. '
}
p2 += `Data is processed in a privacy-preserving way and is not used to identify individuals. For more information, see Ciphera Pulse' documentation: ${DOCS_URL}`
p2 += `Data is processed in a privacy-preserving way and is not used to identify individuals. For more information, see Pulse's documentation: ${DOCS_URL}`
return `${p1}\n\n${p2}`
}

View File

@@ -1,5 +1,5 @@
/**
* Ciphera Pulse - Privacy-First Tracking Script
* Pulse - Privacy-First Tracking Script
* Lightweight, no cookies, GDPR compliant
* Includes optional session replay with privacy controls
*/