diff --git a/apps/web/src/routeTree.gen.ts b/apps/web/src/routeTree.gen.ts index bd36ffcdc2..0dd2a7b37c 100644 --- a/apps/web/src/routeTree.gen.ts +++ b/apps/web/src/routeTree.gen.ts @@ -24,6 +24,7 @@ import { Route as WebhookStripeRouteImport } from './routes/webhook/stripe' import { Route as WebhookNangoRouteImport } from './routes/webhook/nango' import { Route as ApiTemplatesRouteImport } from './routes/api/templates' import { Route as ViewSecurityRouteImport } from './routes/_view/security' +import { Route as ViewPrivacyRouteImport } from './routes/_view/privacy' import { Route as ViewPricingRouteImport } from './routes/_view/pricing' import { Route as ViewPressKitRouteImport } from './routes/_view/press-kit' import { Route as ViewOssFriendsRouteImport } from './routes/_view/oss-friends' @@ -163,6 +164,11 @@ const ViewSecurityRoute = ViewSecurityRouteImport.update({ path: '/security', getParentRoute: () => ViewRouteRoute, } as any) +const ViewPrivacyRoute = ViewPrivacyRouteImport.update({ + id: '/privacy', + path: '/privacy', + getParentRoute: () => ViewRouteRoute, +} as any) const ViewPricingRoute = ViewPricingRouteImport.update({ id: '/pricing', path: '/pricing', @@ -515,6 +521,7 @@ export interface FileRoutesByFullPath { '/oss-friends': typeof ViewOssFriendsRoute '/press-kit': typeof ViewPressKitRouteWithChildren '/pricing': typeof ViewPricingRoute + '/privacy': typeof ViewPrivacyRoute '/security': typeof ViewSecurityRoute '/api/templates': typeof ApiTemplatesRoute '/webhook/nango': typeof WebhookNangoRoute @@ -592,6 +599,7 @@ export interface FileRoutesByTo { '/oss-friends': typeof ViewOssFriendsRoute '/press-kit': typeof ViewPressKitRouteWithChildren '/pricing': typeof ViewPricingRoute + '/privacy': typeof ViewPrivacyRoute '/security': typeof ViewSecurityRoute '/api/templates': typeof ApiTemplatesRoute '/webhook/nango': typeof WebhookNangoRoute @@ -674,6 +682,7 @@ export interface FileRoutesById { '/_view/oss-friends': typeof ViewOssFriendsRoute '/_view/press-kit': typeof ViewPressKitRouteWithChildren '/_view/pricing': typeof ViewPricingRoute + '/_view/privacy': typeof ViewPrivacyRoute '/_view/security': typeof ViewSecurityRoute '/api/templates': typeof ApiTemplatesRoute '/webhook/nango': typeof WebhookNangoRoute @@ -756,6 +765,7 @@ export interface FileRouteTypes { | '/oss-friends' | '/press-kit' | '/pricing' + | '/privacy' | '/security' | '/api/templates' | '/webhook/nango' @@ -833,6 +843,7 @@ export interface FileRouteTypes { | '/oss-friends' | '/press-kit' | '/pricing' + | '/privacy' | '/security' | '/api/templates' | '/webhook/nango' @@ -914,6 +925,7 @@ export interface FileRouteTypes { | '/_view/oss-friends' | '/_view/press-kit' | '/_view/pricing' + | '/_view/privacy' | '/_view/security' | '/api/templates' | '/webhook/nango' @@ -1097,6 +1109,13 @@ declare module '@tanstack/react-router' { preLoaderRoute: typeof ViewSecurityRouteImport parentRoute: typeof ViewRouteRoute } + '/_view/privacy': { + id: '/_view/privacy' + path: '/privacy' + fullPath: '/privacy' + preLoaderRoute: typeof ViewPrivacyRouteImport + parentRoute: typeof ViewRouteRoute + } '/_view/pricing': { id: '/_view/pricing' path: '/pricing' @@ -1624,6 +1643,7 @@ interface ViewRouteRouteChildren { ViewOssFriendsRoute: typeof ViewOssFriendsRoute ViewPressKitRoute: typeof ViewPressKitRouteWithChildren ViewPricingRoute: typeof ViewPricingRoute + ViewPrivacyRoute: typeof ViewPrivacyRoute ViewSecurityRoute: typeof ViewSecurityRoute ViewIndexRoute: typeof ViewIndexRoute ViewBlogSlugRoute: typeof ViewBlogSlugRoute @@ -1681,6 +1701,7 @@ const ViewRouteRouteChildren: ViewRouteRouteChildren = { ViewOssFriendsRoute: ViewOssFriendsRoute, ViewPressKitRoute: ViewPressKitRouteWithChildren, ViewPricingRoute: ViewPricingRoute, + ViewPrivacyRoute: ViewPrivacyRoute, ViewSecurityRoute: ViewSecurityRoute, ViewIndexRoute: ViewIndexRoute, ViewBlogSlugRoute: ViewBlogSlugRoute, diff --git a/apps/web/src/routes/_view/privacy.tsx b/apps/web/src/routes/_view/privacy.tsx new file mode 100644 index 0000000000..9487e7c69e --- /dev/null +++ b/apps/web/src/routes/_view/privacy.tsx @@ -0,0 +1,510 @@ +import { Icon } from "@iconify-icon/react"; +import { createFileRoute, Link } from "@tanstack/react-router"; + +import { cn } from "@hypr/utils"; + +import { SlashSeparator } from "@/components/slash-separator"; + +export const Route = createFileRoute("/_view/privacy")({ + component: Component, + head: () => ({ + meta: [ + { title: "Privacy - Hyprnote" }, + { + name: "description", + content: + "Your privacy is not just a feature at Hyprnote—it's our foundation. Learn how we protect your meeting data with local-first architecture and zero data collection.", + }, + { property: "og:title", content: "Privacy - Hyprnote" }, + { + property: "og:description", + content: + "We believe your conversations belong to you, not to us or anyone else. Discover how Hyprnote puts your privacy first.", + }, + { property: "og:type", content: "website" }, + { property: "og:url", content: "https://hyprnote.com/privacy" }, + { name: "twitter:card", content: "summary_large_image" }, + { name: "twitter:title", content: "Privacy - Hyprnote" }, + { + name: "twitter:description", + content: + "We believe your conversations belong to you, not to us or anyone else. Discover how Hyprnote puts your privacy first.", + }, + ], + }), +}); + +function Component() { + return ( +
+
+ + + + + + + + + + + + + +
+
+ ); +} + +function HeroSection() { + return ( +
+
+
+
+ + Privacy-first by design +
+

+ Your conversations +
+ belong to you +

+

+ At Hyprnote, we believe privacy isn't just a feature—it's a + fundamental right. Your meeting conversations contain your most + sensitive ideas, strategies, and personal moments. We've built + Hyprnote to ensure they stay yours, and yours alone. +

+
+
+
+ ); +} + +function PrivacyPromiseSection() { + const promises = [ + { + icon: "mdi:cloud-off-outline", + title: "No cloud uploads", + description: + "Your audio recordings and transcripts are processed and stored entirely on your device. We never upload your meeting content to our servers.", + }, + { + icon: "mdi:database-off", + title: "No data collection", + description: + "We don't collect, analyze, or monetize your meeting data. Your conversations are not used to train AI models or sold to third parties.", + }, + { + icon: "mdi:account-off", + title: "No account required", + description: + "Use Hyprnote without creating an account. Your identity remains private, and there's no profile data for us to store or leak.", + }, + { + icon: "mdi:chart-line", + title: "Minimal telemetry", + description: + "Our optional, anonymized telemetry helps us improve the app without compromising your privacy. It's off by default and contains no personal data.", + }, + ]; + + return ( +
+

+ Our privacy promise +

+

+ These aren't just policies—they're principles embedded in our + architecture. We couldn't violate your privacy even if we wanted to. +

+
+ {promises.map((promise, index) => ( +
+ +

+ {promise.title} +

+

{promise.description}

+
+ ))} +
+
+ ); +} + +function DataOwnershipSection() { + return ( +
+
+
+ +

+ You own your data, completely +

+

+ With Hyprnote, data ownership isn't a marketing term—it's a + technical reality. Your data lives on your device, in formats you + control. +

+
+ +
+
+ +

Local storage

+

+ All your notes, recordings, and transcripts are stored in a local + database on your computer. No cloud dependency, no remote access. +

+
+
+ +

Full export

+

+ Export all your data anytime in standard formats. Your notes, + transcripts, and recordings are always accessible and portable. +

+
+
+ +

True deletion

+

+ When you delete something, it's gone. No hidden backups, no + retention periods, no "soft deletes" that keep your data around. +

+
+
+ +
+
+ +
+

+ Optional sync, your choice +

+

+ If you choose to sync across devices, your data is encrypted + before it leaves your device. We use end-to-end encryption so + even our servers can't read your content. But sync is entirely + optional—Hyprnote works perfectly as a standalone, offline + application. +

+
+
+
+
+
+ ); +} + +function NoTrackingSection() { + return ( +
+
+
+ +

+ No tracking, no profiling +

+

+ We don't track your behavior, build profiles, or analyze your + content. Your meeting data is not a product. +

+
+ +
+
+
+ +
+

+ No AI training on your data +

+

+ Your transcripts and notes are never used to train AI models. + The AI features in Hyprnote run locally on your device, and + your content stays private. +

+
+
+
+ +
+
+ +
+

+ No behavioral tracking +

+

+ We don't track how you use the app, what features you access, + or how long you spend on different tasks. Your usage patterns + are your business. +

+
+
+
+ +
+
+ +
+

+ No data monetization +

+

+ We make money by building a great product, not by selling your + data. Your information is never shared with advertisers, data + brokers, or any third parties. +

+
+
+
+
+
+
+ ); +} + +function TransparencySection() { + return ( +
+
+
+ +

+ Verify, don't trust +

+

+ We don't ask you to take our word for it. Hyprnote is fully open + source, so you can verify every privacy claim yourself. +

+
+ +
+
+ +

+ Open source code +

+

+ Every line of code is public. See exactly how your data is + handled, what network requests are made, and where your + information is stored. No black boxes, no hidden behaviors. +

+
+
+ +

+ Clear documentation +

+

+ Our privacy practices are documented in plain language. We explain + what data exists, where it lives, and how it's protected—without + legal jargon or hidden clauses. +

+
+
+ +
+ + + View source code + + + + + Read privacy policy + + +
+
+
+ ); +} + +function PrivacyComparisonSection() { + const comparisons = [ + { + feature: "Audio processing", + hyprnote: "On your device", + others: "Cloud servers", + }, + { + feature: "Data storage", + hyprnote: "Local only", + others: "Their servers", + }, + { + feature: "AI training", + hyprnote: "Never", + others: "Often", + }, + { + feature: "Account required", + hyprnote: "No", + others: "Yes", + }, + { + feature: "Data monetization", + hyprnote: "Never", + others: "Common", + }, + { + feature: "Source code", + hyprnote: "Open", + others: "Closed", + }, + ]; + + return ( +
+
+
+

+ How we compare +

+

+ Most meeting tools treat your data as their asset. We built Hyprnote + differently. +

+
+ +
+ + + + + + + + + + {comparisons.map((row, index) => ( + + + + + + ))} + +
+ Feature + + Hyprnote + + Others +
{row.feature} + + + {row.hyprnote} + + + {row.others} +
+
+
+
+ ); +} + +function CTASection() { + return ( +
+
+ +

+ Take back control of your meeting data +

+

+ Join thousands of professionals who refuse to compromise on privacy. + Your conversations deserve better. +

+
+ + + Download Hyprnote + + + Learn about security + +
+
+
+ ); +} diff --git a/apps/web/src/routes/_view/security.tsx b/apps/web/src/routes/_view/security.tsx index 47319c49f1..cebe1cb87e 100644 --- a/apps/web/src/routes/_view/security.tsx +++ b/apps/web/src/routes/_view/security.tsx @@ -1,9 +1,486 @@ -import { createFileRoute } from "@tanstack/react-router"; +import { Icon } from "@iconify-icon/react"; +import { createFileRoute, Link } from "@tanstack/react-router"; + +import { cn } from "@hypr/utils"; + +import { SlashSeparator } from "@/components/slash-separator"; export const Route = createFileRoute("/_view/security")({ - component: RouteComponent, + component: Component, + head: () => ({ + meta: [ + { title: "Security - Hyprnote" }, + { + name: "description", + content: + "Hyprnote is built with security at its core. Local-first architecture, end-to-end encryption, and open source transparency ensure your meeting data stays protected.", + }, + { property: "og:title", content: "Security - Hyprnote" }, + { + property: "og:description", + content: + "Your meeting data deserves the highest level of protection. Learn how Hyprnote's security-first architecture keeps your conversations safe.", + }, + { property: "og:type", content: "website" }, + { property: "og:url", content: "https://hyprnote.com/security" }, + { name: "twitter:card", content: "summary_large_image" }, + { name: "twitter:title", content: "Security - Hyprnote" }, + { + name: "twitter:description", + content: + "Your meeting data deserves the highest level of protection. Learn how Hyprnote's security-first architecture keeps your conversations safe.", + }, + ], + }), }); -function RouteComponent() { - return
Hello "/_view/security"!
; +function Component() { + return ( +
+
+ + + + + + + + + + + + + +
+
+ ); +} + +function HeroSection() { + return ( +
+
+
+
+ + Security-first architecture +
+

+ Your data security +
+ is our priority +

+

+ At Hyprnote, we believe your meeting conversations are among your + most sensitive data. That's why we've built security into every + layer of our architecture, not as an afterthought, but as a + foundational principle. +

+
+
+
+ ); +} + +function SecurityPrinciplesSection() { + const principles = [ + { + icon: "mdi:laptop", + title: "Local-first processing", + description: + "Your audio is processed entirely on your device. Transcription and AI analysis happen locally, so your conversations never leave your computer unless you explicitly choose to sync.", + }, + { + icon: "mdi:lock", + title: "Encryption everywhere", + description: + "All data is encrypted at rest using industry-standard AES-256 encryption. When you choose to sync, data is encrypted in transit with TLS 1.3.", + }, + { + icon: "mdi:eye-off", + title: "Zero-knowledge design", + description: + "We can't read your notes even if we wanted to. Your encryption keys are derived from your credentials and never leave your device.", + }, + { + icon: "mdi:source-branch", + title: "Open source transparency", + description: + "Every line of code is publicly auditable. Security researchers and privacy advocates can verify our claims by inspecting the source.", + }, + ]; + + return ( +
+

+ Security principles we live by +

+

+ These aren't just marketing claims. They're architectural decisions + baked into every aspect of Hyprnote. +

+
+ {principles.map((principle, index) => ( +
+ +

+ {principle.title} +

+

{principle.description}

+
+ ))} +
+
+ ); +} + +function LocalFirstSection() { + return ( +
+
+
+ +

+ Local-first means secure by default +

+

+ Unlike cloud-based alternatives that upload your audio to remote + servers, Hyprnote processes everything on your machine. +

+
+ +
+
+ +

+ Audio stays local +

+

+ Your meeting recordings never leave your device. No cloud uploads, + no third-party access, no data mining. +

+
+
+ +

On-device AI

+

+ Transcription and summarization run locally using optimized AI + models. Your words are processed without ever touching the cloud. +

+
+
+ +

Local storage

+

+ All notes, transcripts, and metadata are stored in an encrypted + local database that only you can access. +

+
+
+ +
+
+ +
+

+ Works completely offline +

+

+ Because everything runs locally, Hyprnote works without an + internet connection. Record meetings, transcribe audio, and + generate summaries even when you're offline. Your productivity + isn't dependent on network availability, and your data isn't + exposed to network-based attacks. +

+
+
+
+
+
+ ); +} + +function EncryptionSection() { + return ( +
+
+
+ +

+ Enterprise-grade encryption +

+

+ Your data is protected with the same encryption standards used by + banks and government agencies. +

+
+ +
+
+
+ +
+

+ Encryption at rest +

+

+ All local data is encrypted using AES-256, the gold standard + for data encryption. Your recordings, transcripts, and notes + are unreadable without your encryption key. +

+
+
+
+ +
+
+ +
+

+ Encryption in transit +

+

+ When you choose to sync data across devices, all + communications use TLS 1.3 with perfect forward secrecy. Even + if a session key is compromised, past communications remain + secure. +

+
+
+
+ +
+
+ +
+

+ Key management +

+

+ Your encryption keys are derived from your credentials using + industry-standard key derivation functions. Keys never leave + your device and are never stored on our servers. +

+
+
+
+
+
+
+ ); +} + +function OpenSourceSecuritySection() { + return ( +
+
+
+ +

+ Security through transparency +

+

+ Open source isn't just about collaboration. It's about trust. When + you can see exactly how your data is handled, you don't have to take + our word for it. +

+
+ +
+
+ +

+ Fully auditable +

+

+ Every function, every data flow, every security measure is visible + in our public repository. Security researchers can audit our code + and report vulnerabilities through our responsible disclosure + program. +

+
+
+ +

+ Community reviewed +

+

+ Thousands of developers have reviewed our codebase. Bugs and + security issues are caught faster when many eyes are watching. + This collective vigilance makes Hyprnote more secure than any + closed-source alternative. +

+
+
+ +
+ + + Review our security implementation on GitHub + + +
+
+
+ ); +} + +function EnterpriseSecuritySection() { + const features = [ + { + icon: "mdi:office-building", + title: "Self-hosted deployment", + description: + "Deploy Hyprnote on your own infrastructure for complete control over your data and security policies.", + }, + { + icon: "mdi:shield-account", + title: "SSO integration", + description: + "Integrate with your existing identity provider for seamless and secure authentication.", + }, + { + icon: "mdi:clipboard-check", + title: "Compliance ready", + description: + "Built to support GDPR, HIPAA, and SOC 2 compliance requirements with comprehensive audit logging.", + }, + { + icon: "mdi:account-lock", + title: "Access controls", + description: + "Granular role-based access controls let you define exactly who can access what data.", + }, + ]; + + return ( +
+
+
+

+ Enterprise-ready security +

+

+ For organizations with advanced security requirements, Hyprnote + offers enterprise features that meet the most demanding standards. +

+
+ +
+ {features.map((feature, index) => ( +
+ +

+ {feature.title} +

+

{feature.description}

+
+ ))} +
+ +
+ + Learn more about enterprise features + + +
+
+
+ ); +} + +function CTASection() { + return ( +
+
+ +

+ Ready to take control of your meeting data? +

+

+ Join thousands of professionals who trust Hyprnote to keep their + conversations secure and private. +

+
+ + + Download Hyprnote + + + Learn about privacy + +
+
+
+ ); }