diff --git a/docs/questions-and-answers.md b/docs/questions-and-answers.md index 8f9dc104..f4f1d486 100644 --- a/docs/questions-and-answers.md +++ b/docs/questions-and-answers.md @@ -2,263 +2,125 @@ title: Questions & answers sidebar_label: Questions & answers keywords: + - "self-driving postgres" + - "postgresql monitoring" - "database branching" - "postgresql thin cloning" - - "zero downtime postgres upgrades" - - "instant database clones" - - "postgresql development environments" + - "postgresai copilot" - "database lab engine" - - "postgresai assistant" - - "postgresql testing automation" - - "copy on write postgres" + - "postgresql automation" --- # Questions & answers -## About PostgresAI - -### What is PostgresAI? - -PostgresAI is a technology company revolutionizing PostgreSQL development and operations. We provide tools and services that make working with PostgreSQL databases faster, safer, and more efficient: - -- **DBLab Engine**: Our flagship open-source platform for instant database cloning and branching -- **PostgresAI Assistant**: Free AI-powered PostgreSQL expert available 24/7 -- **Zero-downtime solutions**: Tools and expertise for seamless PostgreSQL upgrades -- **Expert consulting**: PostgreSQL performance optimization and architecture services - -We help companies ship database changes 10x faster while reducing infrastructure costs and preventing production incidents. - -### What makes PostgresAI different? - -We provide a comprehensive PostgreSQL platform that transforms how teams work with databases: - -**DBLab Engine - Database Branching & Cloning:** -- **Instant database branching**: Create full-size database branches in 10 seconds (vs. hours with traditional methods) -- **True CI/CD for databases**: Test every migration with production data using DBLab clones -- **Cost efficiency**: Run 50+ DBLab clones on a single machine -- **Developer empowerment**: Self-service database environments on demand with DBLab - -**PostgresAI Assistant - AI-Powered Expertise:** -- **Multi-model AI support**: Choose between GPT, Claude, and Gemini for PostgreSQL assistance -- **24/7 availability**: Get expert-level answers instantly, no waiting for human experts -- **Context-aware responses**: Understands complex PostgreSQL scenarios and best practices - -**Professional Services & Tools:** -- **Zero-downtime upgrades**: Proven methodologies and tools for risk-free PostgreSQL migrations -- **Performance optimization**: Expert consulting for query tuning and architecture design -- **Custom solutions**: Tailored PostgreSQL tools for specific enterprise needs - -**Open Source Leadership:** -- **Community-driven development**: Core products are open source with transparent roadmaps -- **PostgreSQL ecosystem contributions**: Active participation in advancing PostgreSQL technology - -## DBLab - -### What is DBLab Engine? - -DBLab Engine is an open-source platform that enables instant cloning and branching for PostgreSQL databases. It allows you to: - -- Create full-size database clones in seconds, regardless of size -- Test migrations, optimize queries, and debug issues with real data -- Integrate database testing into CI/CD pipelines -- Provide isolated development environments to every team member - -### How fast is database cloning? - -- **1 TB database**: ~10 seconds -- **10 TB database**: ~10 seconds -- **Speed is constant** regardless of database size - -Traditional approaches would take hours or days for such operations. - -### What editions are available? - -**Community Edition (Free)** -- Open-source (Apache 2.0 license) -- Full thin cloning capabilities -- Community support -- Perfect for small teams and POCs - -**Standard Edition (SE)** -- Commercial support included -- Compatible with managed databases (RDS, Cloud SQL, etc.) -- One-click deployment via Console -- Monitoring and alerting included -- Starting from $0.27/hour - -**Enterprise Edition (EE)** -- Everything in SE, plus: -- Unified control plane for multiple instances -- SSO and advanced user management -- Comprehensive audit logs -- API for automation -- Custom pricing based on requirements - -### What is "thin cloning"? - -Thin cloning uses Copy-on-Write (CoW) technology to create virtual database copies that: -- Share unchanged data blocks between clones -- Appear as completely independent databases -- Support full read/write operations -- Use minimal additional storage - -This is fundamentally different from traditional copying, which duplicates all data. - -### How does DBLab Engine work? - -1. **Initial sync**: DBLab copies data from your source database (thick clone) -2. **Continuous sync**: Keeps data up-to-date using logical or physical replication -3. **Snapshot management**: Automatically creates and manages data snapshots -4. **Instant cloning**: Creates thin clones from any snapshot in seconds -5. **Isolation**: Each clone is fully isolated and can be modified independently - -### What technologies does DBLab use? - -- **Storage**: ZFS (recommended) or LVM for Copy-on-Write capabilities -- **Containerization**: Docker for clone isolation -- **Replication**: PostgreSQL logical/physical replication for data sync -- **API**: RESTful API for automation and integration - -### Do I need to modify my production database? - -**No.** DBLab runs completely separately from your production environment. It only needs: -- Read access to your database (for initial copy) -- Replication connection (for continuous sync) -- No ZFS, Docker, or special software on production - -### Who uses DBLab Engine? - -**Development Teams** -- Get production-like data for development -- Test database changes before deployment -- Debug production issues safely - -**DevOps Engineers** -- Automate database provisioning in CI/CD -- Reduce staging environment costs -- Standardize database workflows - -**QA Teams** -- Test with real data scenarios -- Reproduce production bugs -- Validate data migrations - -**DBAs** -- Optimize queries with production data -- Test PostgreSQL upgrades safely -- Train junior DBAs without risk - -### What problems does DBLab solve? - -✅ **Long wait times** for database copies -✅ **High infrastructure costs** for non-production environments -✅ **Production incidents** from untested database changes -✅ **Developer productivity** bottlenecks -✅ **Compliance issues** with production data access - -### What infrastructure do I need for DBLab? - -**For DBLab Engine:** -- Dedicated machine (VM or physical) -- Disk space = database size + 20% overhead -- 16GB+ RAM recommended -- Any modern Linux distribution -- Network access to source database - -**Supported environments:** -- ✅ AWS, GCP, Azure -- ✅ On-premises data centers -- ✅ VMware, Nutanix -- ✅ Any PostgreSQL 9.6+ - -### Can I use DBLab with managed databases? - -Yes! DBLab works with: -- Amazon RDS & Aurora -- Google Cloud SQL -- Azure Database for PostgreSQL -- Heroku Postgres -- Supabase -- Any PostgreSQL-compatible service - -For managed databases, we use logical replication for data synchronization. - -### How quickly can I get started with DBLab? - -- **Community Edition**: 1-2 hours to first clone -- **Standard Edition**: 15 minutes with guided setup -- **POC Support**: We offer free POC assistance - - -### Is my data secure? - -- DBLab runs in your infrastructure -- No data leaves your environment -- Full audit logging (Enterprise Edition) -- Encryption at rest and in transit -- Role-based access control - -### Can I mask sensitive data? - -Yes! DBLab supports: -- Custom data masking rules -- Subset data for smaller clones -- Compliance with GDPR, HIPAA, SOC2 - -### How is DBLab priced? - -**Community Edition**: Free forever (Apache 2.0 license) - -**Standard Edition**: Based on compute resources -- Starts at ~$63/month (excl. costs of cloud resources) -- No per-database or per-clone fees -- Transparent hourly billing - -**Enterprise Edition**: Annual contracts -- Custom pricing based on scale -- Includes professional services -- SLA guarantees - -### How do I get support? - -**Community Edition:** -- [Community Slack](https://slack.postgres.ai) -- [GitLab issues](https://gitlab.com/postgres-ai/database-lab/-/issues) -- [Documentation](/docs) - -**Paid Editions:** -- Dedicated support team -- Email/Slack/Zoom priority support -- Support of custom Postgres images and Postgres images for popular Postgres platforms ([details](https://postgres.ai/docs/database-lab/#paid-versions-dblab-se-and-ee)) -- Custom training available - -### Where can I learn more? - -- [Documentation](/docs) -- [DBLab Engine GitLab repository](https://gitlab.com/postgres-ai/database-lab) -- [Blog](/blog) – Technical articles and case studies - -### How do I contact PostgresAI? - -See the ["Contact us"](/contact) page. - -## PostgresAI Assistant - -### What is PostgresAI Assistant? - -An AI-powered chatbot specifically trained for PostgreSQL questions, supporting multiple leading AI models including GPT, Claude, and Gemini. It helps with: -- Query optimization -- Schema design -- Performance troubleshooting -- Best practices guidance -- PostgreSQL feature explanations - -Available at https://postgres.ai - no registration required for public conversations. - -### Is PostgresAI Assistant really free? - -Yes! Public conversations are completely free. For private conversations with sensitive data, you can register your organization in the Console. - ---- - -*Have a question not answered here? Contact us at support@postgres.ai* \ No newline at end of file +## What is PostgresAI? + +We're building self-driving Postgres. Your database monitors itself, +diagnoses problems, tests fixes, and hands you a PR. You approve, it ships. + +## What is self-driving Postgres? + +Every week, another million Postgres databases spin up. AI builders, startups, +side projects — everyone's shipping. But there are maybe 50,000 people on +Earth who truly understand Postgres internals. The math doesn't work. + +Self-driving Postgres is the solution: databases that take care of themselves. + +### The roadmap + +``` +2018-2024 │ FOUNDATION + │ + │ Consulting: GitLab, Midjourney, Miro, Chewy, Suno... + │ Thousands of RCAs, production incidents, 3am fixes + │ Clusters scaled from 10 GiB to 100+ TiB + │ + │ Building blocks: + │ ├── postgres-checkup (health analysis) + │ ├── DBLab Engine (thin cloning, branching) + │ ├── postgres_ai monitoring (FOSS) + │ └── PostgresAI Assistant (AI chat) + │ + │ +2025 │ COPILOT ◄── WE ARE HERE + │ + │ AI watches, diagnoses, suggests + │ Expert validation on every recommendation + │ You approve, you merge + │ + │ +2026 │ AUTOPILOT + │ + │ Safe operations run automatically + │ Risky changes still need approval + │ Self-driving: first versions late 2026 + │ + │ +2027+ │ SELF-DRIVING + │ + │ Full autonomy + │ Your Postgres runs itself + │ You ship product + │ + ▼ +``` + +## What is DBLab? + +DBLab Engine enables database branching — instant, full-size clones of your +Postgres in seconds, not hours. This lets us test every fix on a copy of your +real database before it reaches you. Experiment at incredible speed, risk-free. + +More: [DBLab Engine documentation](/docs/database-lab) + +## How does PostgresAI Copilot work? + +``` +╔════════════╗ ╔═ PostgresAI Copilot ═════════════════════╗ +║ Your ║░ ║ ┏━━━━━━━━━━━━━━┓ ┏━━━━━━━━━━━━━━┓ ║░ +║ Postgres ║░──────▶║ ┃ Monitoring ┃────▶┃ Health check ┃ ║░ +║ database ║░ ║ ┗━━━━━━━━━━━━━━┛ ┃ & Issues ┃ ║░ +╚════════════╝░ ║ ┗━━━━━━━━━━━━━━┛ ║░ + ░░░░░░░░░░░░░░ ╚══════════════════════════════════════════╝░ + ▲ ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░ + │ │ + │ ▼ + │ ╔═════════════════════════╗ ╔═════════════════════╗ + └─────║ GitHub PRs / GitLab MRs ║░◀───║ AI tool (Cursor, …) ║░ + ╚═════════════════════════╝░ ╚═════════════════════╝░ + ░░░░░░░░░░░░░░░░░░░░░░░░░░░ ░░░░░░░░░░░░░░░░░░░░░░░ +``` + +Open-source monitoring (postgres_ai) runs in your infra. Copilot watches 24/7, +catches issues before they page you, and delivers fixes as pull requests. + +This isn't another monitoring tool with dashboards and alerts. Copilot gives +you actual solutions: + +> `CREATE INDEX idx_orders_customer_id ON orders(customer_id);` +> — tested on a clone, validated by experts, ready to merge. + +We don't throw metrics at an LLM and pray. Our AI is built on battle-tested +methodologies from 20 years of production incidents. Every recommendation is +verified against your actual data. We're a Google for Startups AI company with +rigorous experimental pipelines. + +Expert + AI > Either alone. + +## How much? + +$500/month per cluster. + +Monitoring is free, forever, open source. Copilot adds the AI layer, expert +validation, monthly deep-dive health checks, and direct Slack access to +people who've seen everything. + +## Is my data safe? + +Yes. Monitoring runs in your infrastructure. We see query shapes and +performance metrics — not your actual data. Your secrets stay yours. + +## How do I start? + +Currently in preview — reach out to nik@postgres.ai if you believe your case +can positively influence our development and need to get access faster. diff --git a/docusaurus.config.js b/docusaurus.config.js index 09c4e2e8..96c8bde0 100644 --- a/docusaurus.config.js +++ b/docusaurus.config.js @@ -5,6 +5,21 @@ const COLOR_MODE = typeof window !== 'undefined' && window.localStorage.getItem( const API_URL_PREFIX = !!process.env.API_URL_PREFIX ? process.env.API_URL_PREFIX : 'https://postgres.ai/api/general' // was: 'https://v2.postgres.ai/api/general/' const BASE_URL = !!process.env.BASE_URL ? process.env.BASE_URL : '/' const REPOSITORY_URL = 'https://github.com/postgres-ai/database-lab-engine' +const UMAMI_WEBSITE_ID = process.env.UMAMI_WEBSITE_ID || '' +const UMAMI_SCRIPT_URL = process.env.UMAMI_SCRIPT_URL || '' +const IS_PROD = process.env.NODE_ENV === 'production' + +const scripts = [ + BASE_URL + 'js/githubButton.js', +] + +if (IS_PROD && UMAMI_WEBSITE_ID && UMAMI_SCRIPT_URL) { + scripts.push({ + src: UMAMI_SCRIPT_URL, + async: true, + 'data-website-id': UMAMI_WEBSITE_ID, + }) +} const SIGN_IN_URL = !!process.env.SIGN_IN_URL ? process.env.SIGN_IN_URL : '/signin' @@ -15,7 +30,7 @@ module.exports = { title: 'PostgresAI', // Title for your website. tagline: - 'Branching 🖖 and thin cloning ⚡️ for any Postgres database. Empower database testing in CI/CD. Optimize DB-related costs while improving time-to-market and software quality.', + 'Self-healing Postgres for fast-growing startups. Ship features instead of fighting database fires.', url: URL, // Your website URL. baseUrl: BASE_URL, // Base URL for your project. onBrokenLinks: 'log', //'throw', @@ -28,12 +43,11 @@ module.exports = { apiUrlPrefix: API_URL_PREFIX, botWSUrl: BOT_WS_URL, consultingWebhook: CONSULTING_WEBHOOK, + umamiWebsiteId: UMAMI_WEBSITE_ID, + umamiScriptUrl: UMAMI_SCRIPT_URL, }, - scripts: [ - BASE_URL + 'js/githubButton.js', - { src: BASE_URL + 'js/cookieBanner.js?v3', async: true, defer: true }, - ], + scripts, themes: ['@docusaurus/theme-mermaid'], @@ -61,16 +75,16 @@ module.exports = { announcementBar: { id: 'postgres_marathon_banner', // Any value that will identify this message to save the hidden status. content: - "#PostgresMarathon is live: deep-dive technical insights every day", + "#PostgresMarathon is live: deep-dive technical insights", backgroundColor: '#D7EEF2', textColor: '#013A44', isCloseable: true, }, navbar: { - title: 'PostgresAI', + title: 'PostgresAI', logo: { - alt: 'PostgresAI logo', + alt: 'PostgresAI logo', src: 'img/logo.svg', width: '32px', height: '32px', @@ -91,7 +105,7 @@ module.exports = { to: '/products/dblab_engine' }, { - label: 'DBLab Pricing', + label: 'DBLab pricing', to: '/pricing' }, { @@ -157,7 +171,7 @@ module.exports = { footer: { style: 'light', logo: { - alt: 'Database Lab logo', + alt: 'PostgresAI logo', src: 'img/logo.svg', width: '64px', height: '64px', @@ -181,7 +195,7 @@ module.exports = { ], }, { - title: 'Docs', + title: 'DOCS', items: [ { label: 'Questions & answers', @@ -196,20 +210,8 @@ module.exports = { to: '/docs/reference-guides/postgres-ai-bot-reference', }, { - label: 'DBLab how-tos', - to: '/docs/dblab-howtos', - }, - { - label: 'DBLab API', - to: '/docs/reference-guides/database-lab-engine-api-reference', - }, - { - label: 'DBLab CLI', - to: '/docs/reference-guides/dblab-client-cli-reference', - }, - { - label: 'DBLab config', - to: '/docs/reference-guides/database-lab-engine-configuration-reference', + label: 'DBLab docs', + to: '/docs/database-lab', }, { label: 'AI rules', @@ -218,11 +220,11 @@ module.exports = { ], }, { - title: 'Products & Services', + title: 'PRODUCTS', items: [ { - label: 'Consulting', - to: '/consulting', + label: 'PostgresAI Console', + href: SIGN_IN_URL, }, { label: 'postgres_ai (monitoring)', @@ -241,13 +243,13 @@ module.exports = { to: '/blog/20240127-postgres-ai-bot', }, { - label: 'Joe bot for SQL Optimization', + label: 'Joe bot for SQL optimization', to: '/products/joe', }, ], }, { - title: 'Social', + title: 'SOCIAL', items: [ { label: 'Community Slack', @@ -261,14 +263,6 @@ module.exports = { label: 'Postgres FM (podcast)', href: 'https://postgres.fm', }, - { - label: 'GitLab', - href: 'https://gitlab.com/postgres-ai', - }, - { - label: 'GitHub', - href: 'https://github.com/postgres-ai', - }, { label: 'Twitter @postgres_ai', href: 'https://twitter.com/postgres_ai', @@ -284,23 +278,19 @@ module.exports = { ], }, { - title: 'Links', + title: 'LINKS', items: [ { - label: 'Home', - to: '/', - }, - { - label: 'Sign in', - href: SIGN_IN_URL, + label: 'GitLab', + href: 'https://gitlab.com/postgres-ai', }, { - label: 'Contact us', - to: '/contact/', + label: 'GitHub', + href: 'https://github.com/postgres-ai', }, { - label: 'Documentation', - to: '/docs/', + label: 'Blog', + to: '/blog', }, { label: 'Case studies', @@ -314,6 +304,10 @@ module.exports = { label: 'Privacy policy', to: '/privacy/', }, + { + label: 'Contact us', + to: '/contact/', + }, ], }, ], @@ -504,15 +498,9 @@ module.exports = { ], }, ], - [ - path.resolve(__dirname, 'plugins/docusaurus-plugin-google-gtm'), - { - trackingID: 'G-SM4CXEQJYY', - }, - ], - // Meta Pixel (Facebook) - path.resolve(__dirname, 'plugins/meta-pixel'), - require.resolve('./plugins/route-change'), + // Google Tag Manager disabled + // Meta Pixel (Facebook) disabled + path.resolve(__dirname, 'plugins/route-change'), ], presets: [ diff --git a/package.json b/package.json index ebefc136..1e0b8108 100644 --- a/package.json +++ b/package.json @@ -19,7 +19,6 @@ "dependencies": { "@docusaurus/core": "2.4.3", "@docusaurus/plugin-client-redirects": "2.4.3", - "@docusaurus/plugin-google-gtag": "^2.4.3", "@docusaurus/plugin-ideal-image": "2.4.3", "@docusaurus/plugin-pwa": "2.4.3", "@docusaurus/preset-classic": "2.4.3", diff --git a/plugins/meta-pixel/index.js b/plugins/meta-pixel/index.js deleted file mode 100644 index b11526a3..00000000 --- a/plugins/meta-pixel/index.js +++ /dev/null @@ -1,33 +0,0 @@ -/** - * Docusaurus plugin to inject Meta Pixel (Facebook) across all pages - */ - -function metaPixelPlugin() { - return { - name: 'meta-pixel', - injectHtmlTags() { - const initScript = `!function(f,b,e,v,n,t,s){if(f.fbq)return;n=f.fbq=function(){n.callMethod?\n n.callMethod.apply(n,arguments):n.queue.push(arguments)};\n if(!f._fbq)f._fbq=n;n.push=n;n.loaded=!0;n.version='2.0';\n n.queue=[];t=b.createElement(e);t.async=!0;\n t.src=v;s=b.getElementsByTagName(e)[0];\n s.parentNode.insertBefore(t,s)}(window, document,'script',\n 'https://connect.facebook.net/en_US/fbevents.js');\n fbq('init', '1552857229428488');\n fbq('track', 'PageView');`; - - const noscriptImg = '' - - return { - headTags: [ - { - tagName: 'script', - innerHTML: initScript, - }, - ], - postBodyTags: [ - { - tagName: 'noscript', - innerHTML: noscriptImg, - }, - ], - } - }, - } -} - -module.exports = metaPixelPlugin - - diff --git a/src/components/signupForm/styles.module.css b/src/components/signupForm/styles.module.css index 8f252e8f..5c4b7646 100644 --- a/src/components/signupForm/styles.module.css +++ b/src/components/signupForm/styles.module.css @@ -62,13 +62,13 @@ .input { flex: 1; padding: 12px 16px; - font-size: 16px; + font-size: 15px; border: 2px solid #e0e0e0; border-right: none; border-radius: 4px 0 0 4px; background: #fff; transition: all 0.3s ease; - font-family: inherit; + font-family: "JetBrains Mono Variable", "JetBrains Mono", "Fira Code", "Source Code Pro", monospace; } .input:focus { @@ -82,8 +82,9 @@ .button { padding: 12px 30px; - font-size: 16px; + font-size: 15px; font-weight: 500; + font-family: "JetBrains Mono Variable", "JetBrains Mono", "Fira Code", "Source Code Pro", monospace; background-color: #ff6112; color: #fff; border: none; diff --git a/src/css/custom.css b/src/css/custom.css index 91862f7e..a97ec6a2 100644 --- a/src/css/custom.css +++ b/src/css/custom.css @@ -6,8 +6,7 @@ */ @import url("../../static/css/bootstrap.css"); -@import url("../../static/css/cookie-banner.css"); -@import url("https://fonts.googleapis.com/css2?family=JetBrains+Mono:ital,wght@0,100..800;1,100..800&display=swap"); +@import url("https://fonts.googleapis.com/css2?family=JetBrains+Mono+Variable:ital,wght@0,100..800;1,100..800&display=swap"); @import url("https://fonts.googleapis.com/css2?family=Roboto:ital,wght@0,300;0,400;0,500;0,700;1,300;1,400;1,500;1,700&display=swap"); /* You can override the default Infima variables here. */ @@ -20,7 +19,7 @@ --ifm-color-primary-lighter: #ff7c3a; --ifm-color-primary-lightest: #ff9763; --ifm-code-font-size: 90%; - --ifm-font-family-base: "JetBrains Mono", "Fira Code", "Source Code Pro", Consolas, monospace; + --ifm-font-family-base: "JetBrains Mono Variable", "JetBrains Mono", "Fira Code", "Source Code Pro", Consolas, monospace; --ifm-font-size-base: 15px; } @@ -74,7 +73,7 @@ html[data-theme="dark"] .DocSearch { /* Apply monospace font to search input */ .DocSearch-Input { - font-family: "JetBrains Mono", "Fira Code", "Source Code Pro", Consolas, monospace !important; + font-family: "JetBrains Mono Variable", "JetBrains Mono", "Fira Code", "Source Code Pro", Consolas, monospace !important; } .menu--responsive .menu__button { @@ -208,9 +207,9 @@ html[data-theme="dark"] .banner { } .banner h1 { - font-weight: bold; - font-size: 48px !important; - line-height: 1.2 !important; + font-weight: 700; + font-size: 1rem !important; + line-height: 1.4 !important; color: #ff6112; margin: 0; } @@ -262,9 +261,16 @@ article ul li ul li, .banner p { font-weight: 300; - font-size: 18px; - line-height: 24px; - margin: 30px 0; + font-size: 1rem; + line-height: 1.4; + margin: 0 0 20px 0; +} + +/* Limit hero content width on wide screens */ +.banner .row .col-lg-10 { + max-width: 740px; + margin-left: auto; + margin-right: auto; } html[data-theme="light"] .companies { @@ -523,12 +529,12 @@ table.docs-home td { min-height: 540px; } .banner h1 { - font-size: 48px !important; - line-height: 1.2 !important; + font-size: 1rem !important; + line-height: 1.4 !important; } .banner p { - font-size: 26px; - line-height: 30px; + font-size: 1rem; + line-height: 1.4; } .banner .btn { margin-bottom: 18px; @@ -604,12 +610,16 @@ table.docs-home td { min-height: 540px; } .banner h1 { - font-size: 32px !important; - line-height: 1.2 !important; + font-size: 1rem !important; + line-height: 1.4 !important; + } + .banner h1 { + font-size: 1rem !important; + line-height: 1.4 !important; } .banner p { - font-size: 26px; - line-height: 30px; + font-size: 1rem; + line-height: 1.4; } .banner .btn { margin-bottom: 18px; @@ -669,7 +679,7 @@ table.docs-home td { text-align: center; } - .six-sec h2, .banner p, .multi-sec p, .btn { + .six-sec h2, .multi-sec p, .btn { font-size: 16px; line-height: initial; } @@ -719,8 +729,8 @@ table.docs-home td { } .navbar__title { - font-size: 1.4rem; - line-height: 2rem; + font-size: 1rem; + line-height: 1.4rem; font-family: "JetBrains Mono", "Fira Code", "Source Code Pro", Consolas, monospace; font-weight: 400; } @@ -1107,6 +1117,21 @@ div[class*="announcementBar"] div[class*="content"] { border: none; } +/* Footer theming */ +html[data-theme="light"] .footer { + background: #ffffff; + color: #222222; +} + +html[data-theme="dark"] .footer { + background: #050509; + color: #7a7a84; +} + +html[data-theme="dark"] .footer a { + color: #a8a8b4; +} + /* FORCE announcement bar font size - highest specificity */ div[class*="announcementBar"] *, .announcement-bar *, @@ -1150,8 +1175,8 @@ html body > div:first-child { .navbar .navbar__title, .navbar__brand .navbar__title, .navbar__inner .navbar__brand .navbar__title { - font-size: 1.8rem !important; - line-height: 2.2rem !important; + font-size: 1rem !important; + line-height: 1.4rem !important; } /* Better mobile bot interface */ @@ -1231,8 +1256,8 @@ html body > div:first-child { .navbar .navbar__title, .navbar__brand .navbar__title, .navbar__inner .navbar__brand .navbar__title { - font-size: 1.6rem !important; - line-height: 2rem !important; + font-size: 1rem !important; + line-height: 1.4rem !important; } /* Compact bot interface for very small screens */ diff --git a/src/pages/index.module.css b/src/pages/index.module.css index cf5c75e3..109e46ba 100644 --- a/src/pages/index.module.css +++ b/src/pages/index.module.css @@ -1,19 +1,23 @@ .mainTitle { - margin: 40px 0 20px 0!important; - font-size: 48px !important; - line-height: 1.2; - font-weight: 700; + margin: 32px 0 12px 0 !important; + font-family: "JetBrains Mono Variable", "JetBrains Mono", "Fira Code", "Source Code Pro", monospace; + font-size: 1rem !important; + line-height: 1.4; + font-weight: 900; + font-variation-settings: "wght" 900; } .subtitle { - font-weight: 300!important; - line-height: 28px; - margin: 0 0 20px 0!important; + font-family: "JetBrains Mono Variable", "JetBrains Mono", "Fira Code", "Source Code Pro", monospace; + font-weight: 400 !important; + font-size: 1rem; + line-height: 1.4; + margin: 0 0 20px 0 !important; } .videoContainer { - max-width: 792px; - margin: 50px auto 40px auto; + max-width: 100%; + margin: 48px auto 32px auto; } .videoEmbed { @@ -22,8 +26,9 @@ height: 0; overflow: hidden; background: #000; - border-radius: 8px; - box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15); + border-radius: 4px; + box-shadow: none; + border: 1px solid #2a2a3a; } .videoEmbed iframe { @@ -32,7 +37,75 @@ left: 0; width: 100%; height: 100%; - border-radius: 8px; + border-radius: 4px; +} + +.copilotDiagram { + margin: 50px auto 40px auto; + max-width: 100%; + width: 100%; + display: flex; + justify-content: center; + padding: 24px 0; +} + +.copilotDiagramInner { + max-width: 100%; + overflow-x: visible; +} + +.copilotDiagramDesktop { + display: block; +} + +.copilotDiagramMobile { + display: none; +} + +.copilotDiagram pre { + font-family: "JetBrains Mono Variable", "JetBrains Mono", "Fira Code", "Source Code Pro", monospace; + font-size: 13px; + font-weight: 450; + line-height: 1; + letter-spacing: 0px; + background: transparent; + padding: 1px; + color: inherit; + margin: 0; + text-align: left; + white-space: pre; + word-wrap: normal; + overflow-wrap: normal; + font-feature-settings: "kern" off; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; + text-rendering: geometricPrecision; +} + +html[data-theme="dark"] .copilotDiagram { + background: #0a0a12; + color: #e8e8e8; + border: 1px solid #2a2a3a; +} + +html[data-theme="light"] .copilotDiagram { + background: #f8f8f8; + color: #1a1a1a; + border: 1px solid #e0e0e0; +} + +@media (max-width: 768px) { + .copilotDiagramInner { + overflow-x: auto; + } + + .copilotDiagramDesktop { + display: none; + } + + .copilotDiagramMobile { + display: block; + } } .featuresGrid { @@ -44,21 +117,21 @@ } .feature { - padding: 20px; + padding: 0 0 20px 0; } .feature h3 { font-weight: bold; - font-size: 18px; - line-height: 24px; + font-size: 1rem; + line-height: 1.4; margin-bottom: 10px; color: var(--ifm-heading-color); } .feature p { font-weight: 300; - font-size: 14px; - line-height: 20px; + font-size: 1rem; + line-height: 1.4; margin: 0; color: var(--ifm-font-color-base); } @@ -66,16 +139,25 @@ .signupSectionFullWidth { width: 100%; padding: 20px 0; - background: rgba(255, 97, 18, 0.05); + background: #f2f4f7; } html[data-theme="dark"] .signupSectionFullWidth { - background: rgba(255, 97, 18, 0.1); + background: #0a0a12; + border-top: 1px solid #2a2a3a; + border-bottom: 1px solid #2a2a3a; +} + +.signupSectionFullWidth h3, +.signupSectionFullWidth p { + font-family: "JetBrains Mono Variable", "JetBrains Mono", "Fira Code", "Source Code Pro", monospace; + font-size: 15px; + line-height: 1.4; } .demoLink { margin: 20px 0; - font-size: 18px; + font-size: 1rem; } .demoLink a { @@ -91,13 +173,19 @@ html[data-theme="dark"] .signupSectionFullWidth { /* Mobile Responsive */ @media (max-width: 767px) { .mainTitle { - font-size: 16px; - line-height: 22px; + font-size: 1rem; + line-height: 1.4; } .subtitle { - font-size: 16px; - line-height: 23px; + font-size: 1rem; + line-height: 1.4; + } + + .copilotDiagram pre { + font-size: 1rem; + padding: 15px; + line-height: 1.3; } .featuresGrid { @@ -111,11 +199,11 @@ html[data-theme="dark"] .signupSectionFullWidth { } .feature h3 { - font-size: 18px; + font-size: 1rem; } .feature p { - font-size: 14px; + font-size: 1rem; } .signupSectionFullWidth { @@ -123,17 +211,17 @@ html[data-theme="dark"] .signupSectionFullWidth { } .demoLink { - font-size: 16px; + font-size: 1rem; } } @media (min-width: 768px) and (max-width: 991px) { .mainTitle { - font-size: 48px !important; + font-size: 1rem !important; } .subtitle { - font-size: 18px; + font-size: 1rem; } .featuresGrid { diff --git a/src/pages/index.tsx b/src/pages/index.tsx index d098b81b..a2b7568c 100644 --- a/src/pages/index.tsx +++ b/src/pages/index.tsx @@ -20,11 +20,19 @@ function IndexPage() {
+ Ship your product features instead of fighting Postgres fires +
+*/}- Ship features instead of fighting Postgres fires + Ship your product features instead of fighting Postgres fires
{/* Video Container */} @@ -34,7 +42,7 @@ function IndexPage() { width="100%" height="100%" src="https://www.youtube.com/embed/ZWGY64V8AHw?modestbranding=1&rel=0" - title="postgres_ai monitoring demo" + title="postgres_ai copilot demo" frameBorder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowFullScreen @@ -42,23 +50,81 @@ function IndexPage() {{`╔════════════╗ ╔══════════ POSTGRESAI COPILOT ════════════╗
+║ Your ║░ ║ ┏━━━━━━━━━━━━━━┓ ┏━━━━━━━━━━━━━━┓ ║░
+║ Postgres ║░──────▶║ ┃ Monitoring ┃────▶┃ Health check ┃ ║░
+║ database ║░ ║ ┗━━━━━━━━━━━━━━┛ ┃ & Issues ┃ ║░
+╚════════════╝░ ║ ┗━━━━━━━━━━━━━━┛ ║░
+ ░░░░░░░░░░░░░░ ╚══════════════════════════════════════════╝░
+ ▲ ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
+ │ │
+ │ ▼
+ │ ╔═════════════════════════╗ ╔═════════════════════╗
+ └─────║ GitHub PRs / GitLab MRs ║░◀───║ AI tool (Cursor, …) ║░
+ ╚═════════════════════════╝░ ╚═════════════════════╝░
+ ░░░░░░░░░░░░░░░░░░░░░░░░░░░ ░░░░░░░░░░░░░░░░░░░░░░░`}
+ {` ╔════════════════╗
+ ║ Your ║░
+ ║ Postgres ║░◀─────────┐
+ ╚════════════════╝░ │
+ ░░░░░░░░░░░░░░░░░░ │
+ │ │
+ ▼ │
+╔══ POSTGRESAI COPILOT ══╗ │
+║ ┏━━━━━━━━━━━━━━━━━┓ ║░ │
+║ ┃ Monitoring ┃ ║░ │
+║ ┗━━━━━━━━━━━━━━━━━┛ ║░ │
+║ ▼ ║░ │
+║ ┏━━━━━━━━━━━━━━━━━┓ ║░ │
+║ ┃ Health check ┃ ║░ │
+║ ┃ & Issues ┃ ║░ │
+║ ┗━━━━━━━━━━━━━━━━━┛ ║░ │
+╚════════════════════════╝░ │
+ ░░░░░░░░░░░░░░░░░░░░░░░░░░ │
+ │ │
+ ▼ │
+ ╔════════════════════╗ │
+ ║ AI tool (Cursor,…) ║░ │
+ ╚════════════════════╝░ │
+ ░░░░░░░░░░░░░░░░░░░░░░ │
+ │ │
+ ▼ │
+ ╔════════════════════╗ │
+ ║ GitHub PRs / ║░────────┘
+ ║ GitLab MRs ║░
+ ╚════════════════════╝░
+ ░░░░░░░░░░░░░░░░░░░░░░`}
+ Continuously clean up unused and redundant indexes. Automatically mitigate index bloat — all while maintaining full control
+Copilot continuously cleans up unused and redundant indexes, mitigates bloat — following battle-tested methodologies, not just AI guessing
+Copilot identifies slow queries, missing indexes, and delivers actionable fixes tested on clones of your database
+Copilot detects and predicts issues like LWLock:LockManager contention, MultiXact exhaustion, XID wraparound — helping you avoid disastrous consequences
For startups and growing companies with solid engineering teams. Focus on shipping features — we've got your database covered
+For startups with solid engineering teams. Focus on shipping features — we've got your database covered
Works with any Postgres, from self-managed and Kubernetes setups to RDS, CloudSQL, Supabase, and other managed services
+Works with any Postgres: self-managed, Kubernetes, RDS, CloudSQL, Supabase, and other managed services
We've helped companies like GitLab, Chewy, Supabase, Miro, ClickUp, Midjourney, Suno, Gamma, Photoroom, and many others. We'll help you avoid various cliffs, from XID wraparound to LWLock:LockManager. Don't fall — we've got you
+Trusted by GitLab, Chewy, Supabase, Miro, Orb, Midjourney, Suno, Gamma, Photoroom, and many others