This commit is contained in:
darrenhinde 2025-08-26 00:18:26 +01:00
parent a26bbe5e41
commit 9b1ee7c7e9
3 changed files with 848 additions and 93 deletions

View file

@ -25,6 +25,7 @@ Responsibilities:
- Check alignment with naming conventions and modular patterns
- Identify and flag potential security vulnerabilities (e.g., XSS, injection, insecure dependencies)
- Flag potential performance and maintainability issues
- First sentence should be Start with "Reviewing..., what would you devs do if I didn't check up on you?"
Workflow:

View file

@ -1,35 +1,319 @@
import './style.css'
document.querySelector('#app').innerHTML = `
<div class="container">
<div class="logo">🤖 OpenCode Agents</div>
<div class="tagline">Intelligent AI Agents for Development</div>
<div class="description">
Powerful AI agents designed to assist with software development, code review, testing, and documentation.
Built to enhance developer productivity and streamline development workflows.
</div>
<button class="cta-button" id="get-started">Get Started</button>
<header class="header">
<nav class="nav">
<div class="nav-brand">
<span class="nav-logo">🤖</span>
<span class="nav-title">OpenCode Agents</span>
</div>
<ul class="nav-menu">
<li><a href="#features">Features</a></li>
<li><a href="#pricing">Pricing</a></li>
<li><a href="#docs">Docs</a></li>
<li><a href="#contact">Contact</a></li>
</ul>
<button class="nav-cta">Get Started</button>
</nav>
</header>
<div class="features">
<div class="feature">
<div class="feature-icon">🔍</div>
<h3>Code Analysis</h3>
<p>Advanced pattern analysis and codebase understanding to help you write better code.</p>
<main>
<section class="hero">
<div class="hero-content">
<h1 class="hero-title">
Supercharge Your Development<br>
<span class="hero-highlight">with AI Agents</span>
</h1>
<p class="hero-subtitle">
Transform your coding workflow with intelligent AI agents that understand your codebase,
write tests, generate documentation, and accelerate development by 3x.
</p>
<div class="hero-stats">
<div class="stat">
<div class="stat-number">10K+</div>
<div class="stat-label">Developers</div>
</div>
<div class="stat">
<div class="stat-number">500K+</div>
<div class="stat-label">Lines of Code</div>
</div>
<div class="stat">
<div class="stat-number">99.9%</div>
<div class="stat-label">Uptime</div>
</div>
</div>
<div class="hero-actions">
<button class="cta-button primary" id="get-started">Start Free Trial</button>
<button class="cta-button secondary" id="watch-demo">Watch Demo</button>
</div>
<div class="hero-trust">
<span class="trust-text">Trusted by teams at</span>
<div class="trust-logos">
<span class="trust-logo">🏢 TechCorp</span>
<span class="trust-logo">🚀 StartupXYZ</span>
<span class="trust-logo">💡 InnovateLab</span>
</div>
</div>
</div>
<div class="feature">
<div class="feature-icon">🧪</div>
<h3>Test Generation</h3>
<p>Automated test creation and TDD support to ensure code quality and reliability.</p>
<div class="hero-visual">
<div class="code-preview">
<div class="code-line">function analyzeCode(codebase) {</div>
<div class="code-line indent"> const patterns = AI.analyze(codebase);</div>
<div class="code-line indent"> const suggestions = AI.optimize(patterns);</div>
<div class="code-line indent"> return suggestions;</div>
<div class="code-line">}</div>
</div>
</div>
<div class="feature">
<div class="feature-icon">📝</div>
<h3>Documentation</h3>
<p>Intelligent documentation generation and maintenance for your projects.</p>
</section>
<section id="features" class="features-section">
<div class="section-header">
<h2>Powerful Features for Modern Development</h2>
<p>Everything you need to build better software, faster</p>
</div>
<div class="features-grid">
<div class="feature-card">
<div class="feature-icon">🔍</div>
<h3>Smart Code Analysis</h3>
<p>Advanced AI analyzes your entire codebase to identify patterns, potential bugs, and optimization opportunities in real-time.</p>
<ul class="feature-benefits">
<li>Pattern recognition across languages</li>
<li>Security vulnerability detection</li>
<li>Performance bottleneck identification</li>
</ul>
</div>
<div class="feature-card">
<div class="feature-icon">🧪</div>
<h3>Automated Testing</h3>
<p>Generate comprehensive test suites automatically with AI-powered test case creation and TDD workflow support.</p>
<ul class="feature-benefits">
<li>Unit, integration, and E2E tests</li>
<li>Edge case coverage</li>
<li>Test maintenance automation</li>
</ul>
</div>
<div class="feature-card">
<div class="feature-icon">📝</div>
<h3>Intelligent Documentation</h3>
<p>Create, maintain, and update documentation automatically as your code evolves with contextual understanding.</p>
<ul class="feature-benefits">
<li>API documentation generation</li>
<li>Code comment suggestions</li>
<li>README and changelog updates</li>
</ul>
</div>
<div class="feature-card">
<div class="feature-icon">🔄</div>
<h3>Code Refactoring</h3>
<p>AI-powered refactoring suggestions to improve code quality, maintainability, and follow best practices.</p>
<ul class="feature-benefits">
<li>Automated code improvements</li>
<li>Design pattern suggestions</li>
<li>Legacy code modernization</li>
</ul>
</div>
<div class="feature-card">
<div class="feature-icon">🤝</div>
<h3>Team Collaboration</h3>
<p>Seamlessly integrate with your existing workflow and collaborate with team members through shared AI insights.</p>
<ul class="feature-benefits">
<li>Git integration</li>
<li>Team code reviews</li>
<li>Knowledge sharing</li>
</ul>
</div>
<div class="feature-card">
<div class="feature-icon">⚡</div>
<h3>Performance Optimization</h3>
<p>Identify and fix performance issues automatically with AI-driven optimization recommendations.</p>
<ul class="feature-benefits">
<li>Memory optimization</li>
<li>Query optimization</li>
<li>Load time improvements</li>
</ul>
</div>
</div>
</section>
<section class="testimonials">
<div class="section-header">
<h2>Loved by Developers Worldwide</h2>
<p>See what our community is saying</p>
</div>
<div class="testimonials-grid">
<div class="testimonial-card">
<div class="testimonial-content">
"OpenCode Agents reduced our development time by 60% and improved code quality dramatically."
</div>
<div class="testimonial-author">
<div class="author-avatar">👨‍💻</div>
<div class="author-info">
<div class="author-name">Sarah Chen</div>
<div class="author-role">Senior Developer, TechCorp</div>
</div>
</div>
</div>
<div class="testimonial-card">
<div class="testimonial-content">
"The AI suggestions are incredibly accurate. It's like having an expert pair programmer available 24/7."
</div>
<div class="testimonial-author">
<div class="author-avatar">👩‍💼</div>
<div class="author-info">
<div class="author-name">Mike Rodriguez</div>
<div class="author-role">Lead Engineer, StartupXYZ</div>
</div>
</div>
</div>
<div class="testimonial-card">
<div class="testimonial-content">
"Documentation that stays up-to-date automatically? Game changer for our open source projects."
</div>
<div class="testimonial-author">
<div class="author-avatar">🧑‍🔬</div>
<div class="author-info">
<div class="author-name">Dr. Emily Watson</div>
<div class="author-role">Research Scientist, InnovateLab</div>
</div>
</div>
</div>
</div>
</section>
</main>
<footer class="footer">
<div class="footer-content">
<div class="footer-section">
<h4>🤖 OpenCode Agents</h4>
<p>Empowering developers with intelligent AI assistance for better software development.</p>
</div>
<div class="footer-section">
<h4>Product</h4>
<ul>
<li><a href="#features">Features</a></li>
<li><a href="#pricing">Pricing</a></li>
<li><a href="#docs">Documentation</a></li>
<li><a href="#api">API</a></li>
</ul>
</div>
<div class="footer-section">
<h4>Company</h4>
<ul>
<li><a href="#about">About</a></li>
<li><a href="#blog">Blog</a></li>
<li><a href="#careers">Careers</a></li>
<li><a href="#contact">Contact</a></li>
</ul>
</div>
<div class="footer-section">
<h4>Support</h4>
<ul>
<li><a href="#help">Help Center</a></li>
<li><a href="#community">Community</a></li>
<li><a href="#status">Status</a></li>
<li><a href="#feedback">Feedback</a></li>
</ul>
</div>
</div>
</div>
<div class="footer-bottom">
<p>&copy; 2024 OpenCode Agents. All rights reserved.</p>
<div class="footer-links">
<a href="#privacy">Privacy Policy</a>
<a href="#terms">Terms of Service</a>
</div>
</div>
</footer>
`
// Event listeners for interactive elements
document.querySelector('#get-started').addEventListener('click', () => {
alert('Welcome to OpenCode Agents! 🚀')
})
// Smooth scroll to features section
document.querySelector('#features').scrollIntoView({
behavior: 'smooth'
});
});
document.querySelector('#watch-demo').addEventListener('click', () => {
alert('🎬 Demo video coming soon! In the meantime, explore our features below.');
});
// Navigation smooth scrolling
document.querySelectorAll('.nav-menu a').forEach(link => {
link.addEventListener('click', (e) => {
e.preventDefault();
const targetId = link.getAttribute('href');
const targetSection = document.querySelector(targetId);
if (targetSection) {
targetSection.scrollIntoView({
behavior: 'smooth'
});
}
});
});
// Header scroll effect
let lastScrollTop = 0;
const header = document.querySelector('.header');
window.addEventListener('scroll', () => {
const scrollTop = window.pageYOffset || document.documentElement.scrollTop;
if (scrollTop > lastScrollTop && scrollTop > 100) {
// Scrolling down
header.style.transform = 'translateY(-100%)';
} else {
// Scrolling up
header.style.transform = 'translateY(0)';
}
lastScrollTop = scrollTop;
});
// Add intersection observer for animations
const observerOptions = {
threshold: 0.1,
rootMargin: '0px 0px -50px 0px'
};
const observer = new IntersectionObserver((entries) => {
entries.forEach(entry => {
if (entry.isIntersecting) {
entry.target.style.opacity = '1';
entry.target.style.transform = 'translateY(0)';
}
});
}, observerOptions);
// Observe feature cards and testimonial cards
document.querySelectorAll('.feature-card, .testimonial-card').forEach(card => {
card.style.opacity = '0';
card.style.transform = 'translateY(30px)';
card.style.transition = 'opacity 0.6s ease, transform 0.6s ease';
observer.observe(card);
});
// Add loading animation for hero content
document.addEventListener('DOMContentLoaded', () => {
const heroContent = document.querySelector('.hero-content');
heroContent.style.opacity = '0';
heroContent.style.transform = 'translateY(30px)';
setTimeout(() => {
heroContent.style.transition = 'opacity 0.8s ease, transform 0.8s ease';
heroContent.style.opacity = '1';
heroContent.style.transform = 'translateY(0)';
}, 300);
});

View file

@ -1,3 +1,4 @@
/* Reset and Base Styles */
* {
margin: 0;
padding: 0;
@ -5,111 +6,580 @@
}
body {
font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif;
font-family: 'Inter', -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif;
line-height: 1.6;
color: #333;
color: #1a1a1a;
background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
min-height: 100vh;
overflow-x: hidden;
}
/* Header Styles */
.header {
position: fixed;
top: 0;
left: 0;
right: 0;
background: rgba(255, 255, 255, 0.95);
backdrop-filter: blur(20px);
border-bottom: 1px solid rgba(255, 255, 255, 0.2);
z-index: 1000;
transition: all 0.3s ease;
}
.nav {
max-width: 1200px;
margin: 0 auto;
padding: 1rem 2rem;
display: flex;
align-items: center;
justify-content: space-between;
}
.nav-brand {
display: flex;
align-items: center;
gap: 0.5rem;
font-size: 1.5rem;
font-weight: 700;
color: #764ba2;
}
.nav-logo {
font-size: 1.8rem;
}
.nav-title {
background: linear-gradient(45deg, #667eea, #764ba2);
-webkit-background-clip: text;
-webkit-text-fill-color: transparent;
background-clip: text;
}
.nav-menu {
display: flex;
list-style: none;
gap: 2rem;
}
.nav-menu a {
text-decoration: none;
color: #666;
font-weight: 500;
transition: color 0.3s ease;
}
.nav-menu a:hover {
color: #764ba2;
}
.nav-cta {
background: linear-gradient(45deg, #667eea, #764ba2);
color: white;
padding: 0.75rem 1.5rem;
border-radius: 25px;
border: none;
font-weight: 600;
cursor: pointer;
transition: all 0.3s ease;
}
.nav-cta:hover {
transform: translateY(-2px);
box-shadow: 0 10px 20px rgba(102, 126, 234, 0.3);
}
/* Main Content */
main {
margin-top: 80px;
}
/* Hero Section */
.hero {
min-height: 90vh;
display: grid;
grid-template-columns: 1fr 1fr;
gap: 4rem;
align-items: center;
max-width: 1200px;
margin: 0 auto;
padding: 4rem 2rem;
}
.hero-content {
display: flex;
flex-direction: column;
gap: 2rem;
}
.hero-title {
font-size: 3.5rem;
font-weight: 800;
line-height: 1.1;
color: white;
}
.hero-highlight {
background: linear-gradient(45deg, #ffd89b, #19547b);
-webkit-background-clip: text;
-webkit-text-fill-color: transparent;
background-clip: text;
}
.hero-subtitle {
font-size: 1.25rem;
color: rgba(255, 255, 255, 0.9);
max-width: 500px;
line-height: 1.6;
}
.hero-stats {
display: flex;
gap: 3rem;
margin: 2rem 0;
}
.stat {
text-align: center;
}
.stat-number {
font-size: 2.5rem;
font-weight: 800;
color: white;
display: block;
}
.stat-label {
font-size: 0.9rem;
color: rgba(255, 255, 255, 0.8);
text-transform: uppercase;
letter-spacing: 1px;
margin-top: 0.5rem;
}
.hero-actions {
display: flex;
gap: 1rem;
flex-wrap: wrap;
}
.cta-button {
padding: 1rem 2rem;
border-radius: 50px;
font-weight: 600;
font-size: 1.1rem;
cursor: pointer;
border: none;
transition: all 0.3s ease;
text-decoration: none;
display: inline-block;
text-align: center;
}
.cta-button.primary {
background: linear-gradient(45deg, #ffd89b, #19547b);
color: white;
box-shadow: 0 10px 30px rgba(255, 216, 155, 0.3);
}
.cta-button.primary:hover {
transform: translateY(-3px);
box-shadow: 0 20px 40px rgba(255, 216, 155, 0.4);
}
.cta-button.secondary {
background: rgba(255, 255, 255, 0.1);
color: white;
border: 2px solid rgba(255, 255, 255, 0.3);
backdrop-filter: blur(10px);
}
.cta-button.secondary:hover {
background: rgba(255, 255, 255, 0.2);
border-color: rgba(255, 255, 255, 0.5);
}
.hero-trust {
margin-top: 2rem;
padding-top: 2rem;
border-top: 1px solid rgba(255, 255, 255, 0.2);
}
.trust-text {
color: rgba(255, 255, 255, 0.8);
font-size: 0.9rem;
margin-bottom: 1rem;
display: block;
}
.trust-logos {
display: flex;
gap: 2rem;
flex-wrap: wrap;
}
.trust-logo {
color: rgba(255, 255, 255, 0.9);
font-weight: 600;
font-size: 0.9rem;
}
.hero-visual {
display: flex;
align-items: center;
justify-content: center;
}
.container {
max-width: 800px;
margin: 0 auto;
.code-preview {
background: rgba(0, 0, 0, 0.8);
border-radius: 15px;
padding: 2rem;
text-align: center;
font-family: 'Fira Code', monospace;
font-size: 1.1rem;
line-height: 1.6;
color: #e6e6e6;
border: 1px solid rgba(255, 255, 255, 0.1);
backdrop-filter: blur(10px);
box-shadow: 0 20px 40px rgba(0, 0, 0, 0.3);
animation: codeGlow 2s ease-in-out infinite alternate;
}
.code-line {
margin-bottom: 0.5rem;
}
.code-line.indent {
margin-left: 2rem;
}
@keyframes codeGlow {
from {
box-shadow: 0 20px 40px rgba(0, 0, 0, 0.3);
}
to {
box-shadow: 0 20px 40px rgba(102, 126, 234, 0.2);
}
}
/* Features Section */
.features-section {
background: rgba(255, 255, 255, 0.95);
border-radius: 20px;
box-shadow: 0 20px 40px rgba(0, 0, 0, 0.1);
padding: 6rem 2rem;
backdrop-filter: blur(10px);
}
.logo {
font-size: 3rem;
font-weight: bold;
color: #764ba2;
.section-header {
text-align: center;
margin-bottom: 4rem;
}
.section-header h2 {
font-size: 2.5rem;
font-weight: 700;
color: #1a1a1a;
margin-bottom: 1rem;
text-shadow: 2px 2px 4px rgba(0, 0, 0, 0.1);
}
.tagline {
font-size: 1.5rem;
.section-header p {
font-size: 1.2rem;
color: #666;
margin-bottom: 2rem;
font-weight: 300;
}
.description {
font-size: 1.1rem;
color: #555;
margin-bottom: 2.5rem;
max-width: 600px;
margin-left: auto;
margin-right: auto;
margin: 0 auto;
}
.cta-button {
display: inline-block;
background: linear-gradient(45deg, #667eea, #764ba2);
color: white;
padding: 1rem 2rem;
text-decoration: none;
border-radius: 50px;
font-weight: 600;
font-size: 1.1rem;
transition: all 0.3s ease;
box-shadow: 0 10px 20px rgba(0, 0, 0, 0.1);
cursor: pointer;
border: none;
}
.cta-button:hover {
transform: translateY(-2px);
box-shadow: 0 15px 25px rgba(0, 0, 0, 0.2);
}
.features {
.features-grid {
display: grid;
grid-template-columns: repeat(auto-fit, minmax(250px, 1fr));
grid-template-columns: repeat(auto-fit, minmax(350px, 1fr));
gap: 2rem;
margin-top: 3rem;
max-width: 1200px;
margin: 0 auto;
}
.feature {
padding: 1.5rem;
background: rgba(255, 255, 255, 0.8);
border-radius: 15px;
border: 1px solid rgba(255, 255, 255, 0.2);
.feature-card {
background: white;
padding: 2rem;
border-radius: 20px;
border: 1px solid rgba(0, 0, 0, 0.05);
box-shadow: 0 10px 30px rgba(0, 0, 0, 0.05);
transition: all 0.3s ease;
position: relative;
overflow: hidden;
}
.feature-card::before {
content: '';
position: absolute;
top: 0;
left: 0;
right: 0;
height: 4px;
background: linear-gradient(45deg, #667eea, #764ba2);
transform: scaleX(0);
transition: transform 0.3s ease;
}
.feature-card:hover {
transform: translateY(-5px);
box-shadow: 0 20px 40px rgba(0, 0, 0, 0.1);
}
.feature-card:hover::before {
transform: scaleX(1);
}
.feature-icon {
font-size: 2.5rem;
font-size: 3rem;
margin-bottom: 1.5rem;
display: block;
}
.feature-card h3 {
font-size: 1.5rem;
font-weight: 700;
color: #1a1a1a;
margin-bottom: 1rem;
}
.feature h3 {
margin-bottom: 0.5rem;
color: #764ba2;
.feature-card p {
color: #666;
margin-bottom: 1.5rem;
line-height: 1.6;
}
.feature p {
.feature-benefits {
list-style: none;
padding: 0;
}
.feature-benefits li {
color: #555;
margin-bottom: 0.5rem;
padding-left: 1.5rem;
position: relative;
}
.feature-benefits li::before {
content: '✓';
position: absolute;
left: 0;
color: #667eea;
font-weight: bold;
}
/* Testimonials Section */
.testimonials {
background: linear-gradient(135deg, #f8f9fa 0%, #e9ecef 100%);
padding: 6rem 2rem;
}
.testimonials-grid {
display: grid;
grid-template-columns: repeat(auto-fit, minmax(300px, 1fr));
gap: 2rem;
max-width: 1200px;
margin: 0 auto;
}
.testimonial-card {
background: white;
padding: 2rem;
border-radius: 15px;
box-shadow: 0 10px 30px rgba(0, 0, 0, 0.05);
border: 1px solid rgba(0, 0, 0, 0.05);
}
.testimonial-content {
font-size: 1.1rem;
color: #555;
line-height: 1.6;
margin-bottom: 1.5rem;
font-style: italic;
}
.testimonial-author {
display: flex;
align-items: center;
gap: 1rem;
}
.author-avatar {
font-size: 2rem;
width: 50px;
height: 50px;
border-radius: 50%;
background: linear-gradient(45deg, #667eea, #764ba2);
display: flex;
align-items: center;
justify-content: center;
}
.author-info {
flex: 1;
}
.author-name {
font-weight: 600;
color: #1a1a1a;
}
.author-role {
font-size: 0.9rem;
color: #666;
font-size: 0.95rem;
}
/* Footer */
.footer {
background: #1a1a1a;
color: white;
padding: 4rem 2rem 2rem;
}
.footer-content {
max-width: 1200px;
margin: 0 auto;
display: grid;
grid-template-columns: 2fr 1fr 1fr 1fr;
gap: 3rem;
margin-bottom: 2rem;
}
.footer-section h4 {
color: white;
margin-bottom: 1rem;
font-size: 1.1rem;
}
.footer-section p {
color: #ccc;
line-height: 1.6;
margin-bottom: 1rem;
}
.footer-section ul {
list-style: none;
}
.footer-section ul li {
margin-bottom: 0.5rem;
}
.footer-section ul li a {
color: #ccc;
text-decoration: none;
transition: color 0.3s ease;
}
.footer-section ul li a:hover {
color: #667eea;
}
.footer-bottom {
max-width: 1200px;
margin: 0 auto;
padding-top: 2rem;
border-top: 1px solid #333;
display: flex;
justify-content: space-between;
align-items: center;
flex-wrap: wrap;
gap: 1rem;
}
.footer-bottom p {
color: #ccc;
font-size: 0.9rem;
}
.footer-links {
display: flex;
gap: 2rem;
}
.footer-links a {
color: #ccc;
text-decoration: none;
font-size: 0.9rem;
transition: color 0.3s ease;
}
.footer-links a:hover {
color: #667eea;
}
/* Responsive Design */
@media (max-width: 1024px) {
.hero {
grid-template-columns: 1fr;
gap: 2rem;
text-align: center;
}
.hero-stats {
justify-content: center;
}
.footer-content {
grid-template-columns: 1fr 1fr;
gap: 2rem;
}
}
@media (max-width: 768px) {
.container {
margin: 1rem;
padding: 1.5rem;
.nav {
padding: 1rem;
}
.logo {
font-size: 2rem;
.nav-menu {
display: none;
}
.tagline {
font-size: 1.2rem;
.hero {
padding: 2rem 1rem;
}
.hero-title {
font-size: 2.5rem;
}
.hero-stats {
flex-direction: column;
gap: 1rem;
}
.features-grid {
grid-template-columns: 1fr;
}
.testimonials-grid {
grid-template-columns: 1fr;
}
.footer-content {
grid-template-columns: 1fr;
text-align: center;
}
.footer-bottom {
flex-direction: column;
text-align: center;
}
.footer-links {
justify-content: center;
}
}
@media (max-width: 480px) {
.hero-actions {
flex-direction: column;
}
.cta-button {
width: 100%;
}
.trust-logos {
justify-content: center;
}
}