commit e99efd670b3d657872e4a06d30d54ef494198c06
Author: root <root@hub.scroll.pub> Date: 2024-12-24 14:19:12 +0000 Subject: Initial commit diff --git a/README.md b/README.md new file mode 100644 index 0000000..38509c2 --- /dev/null +++ b/README.md @@ -0,0 +1,2 @@ +# upbeat.scroll.pub +Website generated from prompt: uptime montoring saas....get minute by minute uptime reports on your website or web app. and a status page. \ No newline at end of file diff --git a/index.html b/index.html new file mode 100644 index 0000000..876fd0b --- /dev/null +++ b/index.html @@ -0,0 +1,149 @@ +<!DOCTYPE html> +<html lang="en"> +<head> + <meta charset="UTF-8"> + <meta name="viewport" content="width=device-width, initial-scale=1.0"> + <meta name="description" content="Monitor your website's uptime with real-time alerts and beautiful status pages"> + <meta name="keywords" content="uptime monitoring, website monitoring, status page, uptime alerts"> + <title>Upbeat - Real-time Website Monitoring</title> + <link rel="stylesheet" href="style.css"> +</head> +<body> + <header> + <nav> + <div class="logo">upbeat</div> + <div class="nav-links"> + <a href="#features">Features</a> + <a href="#pricing">Pricing</a> + <a href="#status">Status Page</a> + <a href="#login" class="btn-secondary">Login</a> + <a href="#signup" class="btn-primary">Start Free</a> + </div> + <button class="mobile-menu" aria-label="Menu"> + <span></span><span></span><span></span> + </button> + </nav> + </header> + + <main> + <section class="hero"> + <div class="container"> + <h1>Know the moment your site goes down</h1> + <p class="lead">Minute-by-minute monitoring with instant alerts. Beautiful status pages included.</p> + <div class="cta-group"> + <a href="#signup" class="btn-primary pulse">Start Monitoring</a> + <a href="#demo" class="btn-secondary">View Demo</a> + </div> + <div class="status-demo"> + <div class="status-card"> + <div class="pulse-indicator"></div> + <div class="status-content"> + <div class="status-bar"></div> + <div class="status-bar"></div> + <div class="status-bar"></div> + </div> + </div> + </div> + </div> + </section> + + <section id="features" class="features"> + <div class="container"> + <h2>Everything you need for reliable monitoring</h2> + <div class="feature-grid"> + <div class="feature-card"> + <div class="icon">⚡</div> + <h3>60-Second Checks</h3> + <p>Monitor your sites every minute from multiple locations worldwide.</p> + </div> + <div class="feature-card"> + <div class="icon">📱</div> + <h3>Instant Alerts</h3> + <p>Get notified via SMS, email, Slack, or webhook when issues occur.</p> + </div> + <div class="feature-card"> + <div class="icon">📊</div> + <h3>Status Pages</h3> + <p>Beautiful, customizable status pages to keep your users informed.</p> + </div> + <div class="feature-card"> + <div class="icon">📈</div> + <h3>Detailed Reports</h3> + <p>Comprehensive uptime reports with historical data and insights.</p> + </div> + </div> + </div> + </section> + + <section id="pricing" class="pricing"> + <div class="container"> + <h2>Simple, transparent pricing</h2> + <div class="pricing-grid"> + <div class="price-card"> + <h3>Starter</h3> + <div class="price">$29<span>/month</span></div> + <ul> + <li>10 monitors</li> + <li>60-second checks</li> + <li>Email alerts</li> + <li>Basic status page</li> + </ul> + <a href="#signup" class="btn-primary">Get Started</a> + </div> + <div class="price-card featured"> + <h3>Professional</h3> + <div class="price">$79<span>/month</span></div> + <ul> + <li>50 monitors</li> + <li>30-second checks</li> + <li>All alert channels</li> + <li>Custom status pages</li> + </ul> + <a href="#signup" class="btn-primary">Get Started</a> + </div> + <div class="price-card"> + <h3>Enterprise</h3> + <div class="price">Custom</div> + <ul> + <li>Unlimited monitors</li> + <li>15-second checks</li> + <li>Priority support</li> + <li>API access</li> + </ul> + <a href="#contact" class="btn-secondary">Contact Us</a> + </div> + </div> + </div> + </section> + </main> + + <footer> + <div class="container"> + <div class="footer-grid"> + <div class="footer-col"> + <h4>Product</h4> + <a href="#features">Features</a> + <a href="#pricing">Pricing</a> + <a href="#status">Status Page</a> + <a href="#api">API</a> + </div> + <div class="footer-col"> + <h4>Company</h4> + <a href="#about">About</a> + <a href="#blog">Blog</a> + <a href="#careers">Careers</a> + <a href="#contact">Contact</a> + </div> + <div class="footer-col"> + <h4>Resources</h4> + <a href="#docs">Documentation</a> + <a href="#support">Support</a> + <a href="#status">System Status</a> + <a href="#terms">Terms</a> + </div> + </div> + </div> + </footer> + <script src="script.js"></script> +</body> +</html> diff --git a/style.css b/style.css new file mode 100644 index 0000000..52b152d --- /dev/null +++ b/style.css @@ -0,0 +1,339 @@ +:root { + --primary: #6366f1; + --primary-dark: #4f46e5; + --secondary: #64748b; + --background: #f8fafc; + --text: #1e293b; + --border: #e2e8f0; + --white: #ffffff; + --radius: 12px; + --shadow: 0 4px 6px -1px rgb(0 0 0 / 0.1), 0 2px 4px -2px rgb(0 0 0 / 0.1); +} + +* { + margin: 0; + padding: 0; + box-sizing: border-box; +} + +body { + font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, system-ui, sans-serif; + line-height: 1.6; + color: var(--text); + background: var(--background); +} + +.container { + max-width: 1200px; + margin: 0 auto; + padding: 0 1.5rem; +} + +/* Typography */ +h1 { + font-size: clamp(2.5rem, 5vw, 4rem); + line-height: 1.1; + margin-bottom: 1.5rem; +} + +h2 { + font-size: clamp(2rem, 4vw, 3rem); + margin-bottom: 3rem; + text-align: center; +} + +.lead { + font-size: clamp(1.25rem, 2vw, 1.5rem); + color: var(--secondary); + margin-bottom: 2rem; +} + +/* Navigation */ +header { + background: var(--white); + box-shadow: var(--shadow); + position: fixed; + width: 100%; + z-index: 1000; +} + +nav { + display: flex; + justify-content: space-between; + align-items: center; + padding: 1rem 1.5rem; + max-width: 1200px; + margin: 0 auto; +} + +.logo { + font-size: 1.5rem; + font-weight: bold; + color: var(--primary); +} + +.nav-links { + display: flex; + gap: 2rem; + align-items: center; +} + +.nav-links a { + text-decoration: none; + color: var(--text); + font-weight: 500; + transition: color 0.3s; +} + +.nav-links a:hover { + color: var(--primary); +} + +/* Buttons */ +.btn-primary, .btn-secondary { + display: inline-block; + padding: 0.75rem 1.5rem; + border-radius: var(--radius); + text-decoration: none; + font-weight: 500; + transition: all 0.3s; +} + +.btn-primary { + background: var(--primary); + color: var(--white); +} + +.btn-primary:hover { + background: var(--primary-dark); + transform: translateY(-2px); +} + +.btn-secondary { + background: var(--white); + color: var(--text); + border: 1px solid var(--border); +} + +.btn-secondary:hover { + border-color: var(--primary); + color: var(--primary); +} + +/* Hero Section */ +.hero { + padding: 8rem 0 4rem; + text-align: center; + background: linear-gradient(to bottom, var(--background), var(--white)); +} + +.cta-group { + display: flex; + gap: 1rem; + justify-content: center; + margin-bottom: 4rem; +} + +/* Status Demo Animation */ +.status-demo { + max-width: 600px; + margin: 0 auto; +} + +.status-card { + background: var(--white); + padding: 2rem; + border-radius: var(--radius); + box-shadow: var(--shadow); + display: flex; + gap: 1.5rem; +} + +.pulse-indicator { + width: 12px; + height: 12px; + background: #22c55e; + border-radius: 50%; + animation: pulse 2s infinite; +} + +.status-content { + flex: 1; +} + +.status-bar { + height: 8px; + background: var(--border); + border-radius: 4px; + margin-bottom: 0.75rem; + animation: shimmer 2s infinite; +} + +/* Features Section */ +.features { + padding: 6rem 0; + background: var(--white); +} + +.feature-grid { + display: grid; + grid-template-columns: repeat(auto-fit, minmax(250px, 1fr)); + gap: 2rem; + margin-top: 3rem; +} + +.feature-card { + padding: 2rem; + background: var(--background); + border-radius: var(--radius); + transition: transform 0.3s; +} + +.feature-card:hover { + transform: translateY(-5px); +} + +.icon { + font-size: 2rem; + margin-bottom: 1rem; +} + +/* Pricing Section */ +.pricing { + padding: 6rem 0; + background: var(--background); +} + +.pricing-grid { + display: grid; + grid-template-columns: repeat(auto-fit, minmax(280px, 1fr)); + gap: 2rem; + margin-top: 3rem; +} + +.price-card { + background: var(--white); + padding: 2rem; + border-radius: var(--radius); + text-align: center; + transition: transform 0.3s; +} + +.price-card.featured { + transform: scale(1.05); + border: 2px solid var(--primary); +} + +.price-card:hover { + transform: translateY(-5px); +} + +.price { + font-size: 2.5rem; + font-weight: bold; + margin: 1.5rem 0; +} + +.price span { + font-size: 1rem; + color: var(--secondary); +} + +.price-card ul { + list-style: none; + margin: 2rem 0; +} + +.price-card li { + margin-bottom: 0.75rem; +} + +/* Footer */ +footer { + background: var(--white); + padding: 4rem 0; + margin-top: 4rem; +} + +.footer-grid { + display: grid; + grid-template-columns: repeat(auto-fit, minmax(200px, 1fr)); + gap: 3rem; +} + +.footer-col h4 { + margin-bottom: 1.5rem; +} + +.footer-col a { + display: block; + color: var(--secondary); + text-decoration: none; + margin-bottom: 0.75rem; + transition: color 0.3s; +} + +.footer-col a:hover { + color: var(--primary); +} + +/* Animations */ +@keyframes pulse { + 0% { transform: scale(1); opacity: 1; } + 50% { transform: scale(1.5); opacity: 0.5; } + 100% { transform: scale(1); opacity: 1; } +} + +@keyframes shimmer { + 0% { opacity: 1; } + 50% { opacity: 0.5; } + 100% { opacity: 1; } +} + +/* Mobile Responsiveness */ +.mobile-menu { + display: none; + background: none; + border: none; + cursor: pointer; + padding: 0.5rem; +} + +.mobile-menu span { + display: block; + width: 25px; + height: 3px; + background: var(--text); + margin: 5px 0; + transition: 0.3s; +} + +@media (max-width: 768px) { + .nav-links { + display: none; + } + + .mobile-menu { + display: block; + } + + .nav-links.active { + display: flex; + flex-direction: column; + position: absolute; + top: 100%; + left: 0; + right: 0; + background: var(--white); + padding: 1rem; + box-shadow: var(--shadow); + } + + .cta-group { + flex-direction: column; + } + + .hero { + padding-top: 6rem; + } +}