Chart UX improvements, behavior page polish, and SEO setup #46
50
app/robots.ts
Normal file
50
app/robots.ts
Normal file
@@ -0,0 +1,50 @@
|
|||||||
|
import type { MetadataRoute } from 'next'
|
||||||
|
|
||||||
|
export default function robots(): MetadataRoute.Robots {
|
||||||
|
return {
|
||||||
|
rules: [
|
||||||
|
{
|
||||||
|
userAgent: '*',
|
||||||
|
allow: [
|
||||||
|
'/',
|
||||||
|
'/about',
|
||||||
|
'/features',
|
||||||
|
'/pricing',
|
||||||
|
'/faq',
|
||||||
|
'/changelog',
|
||||||
|
'/installation',
|
||||||
|
'/integrations',
|
||||||
|
],
|
||||||
|
disallow: [
|
||||||
|
'/api/',
|
||||||
|
'/admin/',
|
||||||
|
'/sites/',
|
||||||
|
'/notifications/',
|
||||||
|
'/onboarding/',
|
||||||
|
'/org-settings/',
|
||||||
|
'/welcome/',
|
||||||
|
'/auth/',
|
||||||
|
'/actions/',
|
||||||
|
'/share/',
|
||||||
|
],
|
||||||
|
},
|
||||||
|
{
|
||||||
|
userAgent: 'GPTBot',
|
||||||
|
disallow: ['/'],
|
||||||
|
},
|
||||||
|
{
|
||||||
|
userAgent: 'ChatGPT-User',
|
||||||
|
disallow: ['/'],
|
||||||
|
},
|
||||||
|
{
|
||||||
|
userAgent: 'Google-Extended',
|
||||||
|
disallow: ['/'],
|
||||||
|
},
|
||||||
|
{
|
||||||
|
userAgent: 'CCBot',
|
||||||
|
disallow: ['/'],
|
||||||
|
},
|
||||||
|
],
|
||||||
|
sitemap: 'https://pulse.ciphera.net/sitemap.xml',
|
||||||
|
}
|
||||||
|
}
|
||||||
38
app/sitemap.ts
Normal file
38
app/sitemap.ts
Normal file
@@ -0,0 +1,38 @@
|
|||||||
|
import type { MetadataRoute } from 'next'
|
||||||
|
|
||||||
|
const BASE_URL = 'https://pulse.ciphera.net'
|
||||||
|
|
||||||
|
export default function sitemap(): MetadataRoute.Sitemap {
|
||||||
|
const integrationSlugs = [
|
||||||
|
'nextjs',
|
||||||
|
'react',
|
||||||
|
'vue',
|
||||||
|
'wordpress',
|
||||||
|
]
|
||||||
|
|
||||||
|
const publicRoutes = [
|
||||||
|
{ url: '', priority: 1.0, changeFrequency: 'weekly' as const },
|
||||||
|
{ url: '/about', priority: 0.8, changeFrequency: 'monthly' as const },
|
||||||
|
{ url: '/features', priority: 0.9, changeFrequency: 'monthly' as const },
|
||||||
|
{ url: '/pricing', priority: 0.9, changeFrequency: 'monthly' as const },
|
||||||
|
{ url: '/faq', priority: 0.7, changeFrequency: 'monthly' as const },
|
||||||
|
{ url: '/changelog', priority: 0.6, changeFrequency: 'weekly' as const },
|
||||||
|
{ url: '/installation', priority: 0.8, changeFrequency: 'monthly' as const },
|
||||||
|
{ url: '/integrations', priority: 0.8, changeFrequency: 'monthly' as const },
|
||||||
|
]
|
||||||
|
|
||||||
|
const integrationRoutes = integrationSlugs.map((slug) => ({
|
||||||
|
url: `/integrations/${slug}`,
|
||||||
|
priority: 0.7,
|
||||||
|
changeFrequency: 'monthly' as const,
|
||||||
|
}))
|
||||||
|
|
||||||
|
const allRoutes = [...publicRoutes, ...integrationRoutes]
|
||||||
|
|
||||||
|
return allRoutes.map((route) => ({
|
||||||
|
url: `${BASE_URL}${route.url}`,
|
||||||
|
lastModified: new Date(),
|
||||||
|
changeFrequency: route.changeFrequency,
|
||||||
|
priority: route.priority,
|
||||||
|
}))
|
||||||
|
}
|
||||||
50
public/llms.txt
Normal file
50
public/llms.txt
Normal file
@@ -0,0 +1,50 @@
|
|||||||
|
# Pulse by Ciphera
|
||||||
|
> Privacy-first web analytics. No cookies, no fingerprinting, no personal data collection. GDPR compliant by architecture.
|
||||||
|
|
||||||
|
Pulse is a lightweight, privacy-focused website analytics platform built by Ciphera. It provides meaningful traffic insights without compromising visitor privacy. The tracking script is under 2KB and requires no cookie banners.
|
||||||
|
|
||||||
|
## Key Features
|
||||||
|
- No cookies, no fingerprinting, no personal data collection
|
||||||
|
- GDPR, CCPA, and PECR compliant by design — no consent banners needed
|
||||||
|
- Lightweight tracking script (under 2KB, no impact on page speed)
|
||||||
|
- Real-time dashboard with pageviews, visitors, referrers, and geographic data
|
||||||
|
- UTM campaign tracking and custom event tracking
|
||||||
|
- Public/shared dashboard support
|
||||||
|
- Organization and team management
|
||||||
|
- Scheduled email reports
|
||||||
|
|
||||||
|
## Integrations
|
||||||
|
- [Next.js](https://pulse.ciphera.net/integrations/nextjs)
|
||||||
|
- [React](https://pulse.ciphera.net/integrations/react)
|
||||||
|
- [Vue](https://pulse.ciphera.net/integrations/vue)
|
||||||
|
- [WordPress](https://pulse.ciphera.net/integrations/wordpress)
|
||||||
|
- Works with any website via a single script tag
|
||||||
|
|
||||||
|
## Installation
|
||||||
|
Add one script tag to your site:
|
||||||
|
```html
|
||||||
|
<script defer src="https://pulse.ciphera.net/script.js" data-site-id="YOUR_SITE_ID"></script>
|
||||||
|
```
|
||||||
|
|
||||||
|
## Pages
|
||||||
|
- [Home](https://pulse.ciphera.net): Product overview and dashboard
|
||||||
|
- [Features](https://pulse.ciphera.net/features): Full feature list
|
||||||
|
- [Pricing](https://pulse.ciphera.net/pricing): Plans and pricing
|
||||||
|
- [Installation](https://pulse.ciphera.net/installation): Setup guide
|
||||||
|
- [Integrations](https://pulse.ciphera.net/integrations): Framework-specific guides
|
||||||
|
- [FAQ](https://pulse.ciphera.net/faq): Frequently asked questions
|
||||||
|
- [About](https://pulse.ciphera.net/about): About Pulse and Ciphera
|
||||||
|
- [Changelog](https://pulse.ciphera.net/changelog): Release notes and updates
|
||||||
|
- [Documentation](https://pulse.ciphera.net/docs): Full API and usage docs
|
||||||
|
|
||||||
|
## About Ciphera
|
||||||
|
- Founded: 2024, Diegem, Belgium
|
||||||
|
- Infrastructure: Swiss-hosted servers (FADP protected)
|
||||||
|
- Open source: https://github.com/ciphera-net
|
||||||
|
- Website: https://ciphera.net
|
||||||
|
- Contact: hello@ciphera.net
|
||||||
|
|
||||||
|
## Policies
|
||||||
|
- Privacy policy: https://ciphera.net/privacy
|
||||||
|
- Terms of service: https://ciphera.net/terms
|
||||||
|
- AI training on this site's content is not permitted. Search indexing is allowed.
|
||||||
Reference in New Issue
Block a user