Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
14 changes: 12 additions & 2 deletions .eslintrc.json
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
{
"extends": ["next/core-web-vitals"],
"extends": ["next/core-web-vitals", "next/typescript"],
"parserOptions": {
"ecmaVersion": 2020,
"sourceType": "module"
Expand All @@ -10,5 +10,15 @@
"node": true,
"jest": true
},
"rules": {}
"rules": {},
"ignorePatterns": [
"node_modules/",
".next/",
"out/",
"build/",
"dist/",
"coverage/",
"*.config.js",
"*.config.mjs"
]
}
343 changes: 343 additions & 0 deletions src/app/landing.css
Original file line number Diff line number Diff line change
@@ -0,0 +1,343 @@
@import url('https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700&family=JetBrains+Mono:wght@400;500&display=swap');

:root {
--purple: #8B5CF6;
--amber: #F59E0B;
--bg: #0F172A;
--surface: #1E293B;
--border: #334155;
--text: #F1F5F9;
--text-secondary: #CBD5E1;
--text-tertiary: #94A3B8;
}

body {
font-family: 'Inter', -apple-system, BlinkMacSystemFont, sans-serif;
color: var(--text);
background: var(--bg);
line-height: 1.5;
margin: 0;
padding: 0;
}

.landing-container {
max-width: 1280px;
margin: 0 auto;
padding: 0 32px;
}

/* Header */
.landing-header {
padding: 24px 0;
border-bottom: 1px solid var(--border);
background: rgba(15, 23, 42, 0.8);
backdrop-filter: blur(10px);
position: sticky;
top: 0;
z-index: 100;
}

.landing-nav {
display: flex;
justify-content: space-between;
align-items: center;
}

.landing-logo {
display: flex;
align-items: center;
gap: 12px;
font-size: 20px;
font-weight: 700;
color: var(--text);
text-decoration: none;
}

.logo-mark {
width: 32px;
height: 32px;
background: linear-gradient(135deg, var(--purple) 0%, var(--amber) 100%);
border-radius: 6px;
}

.nav-links {
display: flex;
gap: 32px;
list-style: none;
margin: 0;
padding: 0;
}

.nav-links a {
color: var(--text-secondary);
text-decoration: none;
font-weight: 500;
transition: color 0.2s;
}

.nav-links a:hover {
color: var(--text);
}

.btn {
padding: 12px 24px;
border-radius: 8px;
font-weight: 600;
font-size: 16px;
cursor: pointer;
transition: all 0.2s;
text-decoration: none;
display: inline-block;
border: none;
}

.btn-primary {
background: var(--purple);
color: white;
}

.btn-primary:hover {
transform: translateY(-1px);
box-shadow: 0 4px 12px rgba(139, 92, 246, 0.4);
}

/* Hero */
.hero {
padding: 100px 0;
position: relative;
}

.hero-grid {
display: grid;
grid-template-columns: 1fr 1fr;
gap: 60px;
align-items: center;
}

.hero-content h1 {
font-size: 48px;
line-height: 1.2;
font-weight: 700;
letter-spacing: -0.02em;
margin-bottom: 20px;
}

.gradient-text {
background: linear-gradient(135deg, var(--purple) 0%, var(--amber) 100%);
-webkit-background-clip: text;
-webkit-text-fill-color: transparent;
background-clip: text;
}

.hero-content p {
font-size: 18px;
color: var(--text-secondary);
margin-bottom: 32px;
line-height: 1.6;
}

.stats {
display: flex;
gap: 32px;
margin-top: 40px;
}

.stat {
border-left: 2px solid var(--purple);
padding-left: 16px;
}

.stat-number {
font-size: 32px;
font-weight: 700;
color: var(--purple);
display: block;
}

.stat-label {
font-size: 14px;
color: var(--text-secondary);
}

/* Terminal */
.terminal {
background: #0A0F1E;
border: 1px solid var(--border);
border-radius: 12px;
overflow: hidden;
box-shadow: 0 20px 25px -5px rgba(0, 0, 0, 0.3);
}

.terminal-header {
background: #1A1F2E;
padding: 12px 16px;
border-bottom: 1px solid var(--border);
display: flex;
align-items: center;
gap: 8px;
}

.terminal-dot {
width: 12px;
height: 12px;
border-radius: 50%;
}

.dot-red { background: #EF4444; }
.dot-yellow { background: #F59E0B; }
.dot-green { background: #10B981; }

.terminal-body {
padding: 24px;
font-family: 'JetBrains Mono', monospace;
font-size: 14px;
line-height: 1.8;
}

.terminal-line {
margin-bottom: 8px;
}

.prompt {
color: #10B981;
}

.command {
color: #F59E0B;
}

.output {
color: #94A3B8;
}

.success {
color: #10B981;
}

/* Features */
.features {
padding: 80px 0;
}

.features h2 {
text-align: center;
font-size: 36px;
font-weight: 700;
margin-bottom: 16px;
}

.features-subtitle {
text-align: center;
color: var(--text-secondary);
font-size: 18px;
margin-bottom: 60px;
}

.tech-stack {
display: grid;
grid-template-columns: repeat(4, 1fr);
gap: 24px;
margin-top: 60px;
}

.tech-item {
background: var(--surface);
border: 1px solid var(--border);
border-radius: 8px;
padding: 20px;
text-align: center;
}

.tech-item h4 {
font-size: 16px;
font-weight: 600;
margin-bottom: 8px;
}

.tech-item p {
font-size: 14px;
color: var(--text-secondary);
margin: 0;
}

/* Comparison */
.comparison {
padding: 80px 0;
background: var(--surface);
}

.comparison h2 {
text-align: center;
font-size: 36px;
font-weight: 700;
margin-bottom: 60px;
}

.comparison-table {
max-width: 900px;
margin: 0 auto;
background: var(--bg);
border: 1px solid var(--border);
border-radius: 12px;
overflow: hidden;
}

.comparison-row {
display: grid;
grid-template-columns: 2fr 1fr 1fr 1fr;
border-bottom: 1px solid var(--border);
}

.comparison-row:last-child {
border-bottom: none;
}

.comparison-header {
background: #1A1F2E;
font-weight: 600;
}

.comparison-cell {
padding: 16px 20px;
border-right: 1px solid var(--border);
}

.comparison-cell:last-child {
border-right: none;
}

.check {
color: #10B981;
font-weight: 600;
}

.cross {
color: #EF4444;
}

/* Footer */
.landing-footer {
padding: 60px 0;
text-align: center;
border-top: 1px solid var(--border);
}

.landing-footer p {
color: var(--text-secondary);
margin: 0;
}

@media (max-width: 768px) {
.hero-grid {
grid-template-columns: 1fr;
}

.tech-stack {
grid-template-columns: 1fr 1fr;
}

.comparison-row {
grid-template-columns: 1.5fr 1fr 1fr 1fr;
font-size: 14px;
}
}
Loading
Loading