Spaces:
Running
Running
<html lang="en"> | |
<head> | |
<meta charset="UTF-8"> | |
<meta name="viewport" content="width=device-width, initial-scale=1.0"> | |
<title>Voice Journal - Digital Diary with Speech Recognition</title> | |
<script src="https://cdn.tailwindcss.com"></script> | |
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.0/css/all.min.css"> | |
<script> | |
tailwind.config = { | |
theme: { | |
extend: { | |
colors: { | |
primary: '#6366f1', | |
secondary: '#8b5cf6', | |
accent: '#ec4899', | |
}, | |
fontFamily: { | |
sans: ['Inter', 'sans-serif'], | |
}, | |
} | |
} | |
} | |
</script> | |
<style> | |
@import url('https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700&display=swap'); | |
body { | |
font-family: 'Inter', sans-serif; | |
background-color: #f8fafc; | |
transition: background-color 0.3s ease; | |
} | |
.hero-gradient { | |
background: radial-gradient(circle at 10% 20%, rgba(99, 102, 241, 0.1) 0%, rgba(255, 255, 255, 0) 30%), | |
radial-gradient(circle at 90% 80%, rgba(139, 92, 246, 0.1) 0%, rgba(255, 255, 255, 0) 20%); | |
} | |
.app-gradient { | |
background: linear-gradient(135deg, #f3f4f6 0%, #e5e7eb 100%); | |
} | |
.entry-card { | |
transition: all 0.3s ease; | |
box-shadow: 0 1px 3px rgba(0,0,0,0.1); | |
} | |
.entry-card:hover { | |
transform: translateY(-2px); | |
box-shadow: 0 10px 15px -3px rgba(0,0,0,0.1); | |
} | |
.pulse { | |
animation: pulse 2s infinite; | |
} | |
@keyframes pulse { | |
0% { | |
box-shadow: 0 0 0 0 rgba(99, 102, 241, 0.4); | |
} | |
70% { | |
box-shadow: 0 0 0 10px rgba(99, 102, 241, 0); | |
} | |
100% { | |
box-shadow: 0 0 0 0 rgba(99, 102, 241, 0); | |
} | |
} | |
/* Custom scrollbar */ | |
::-webkit-scrollbar { | |
width: 8px; | |
} | |
::-webkit-scrollbar-track { | |
background: #f1f1f1; | |
border-radius: 10px; | |
} | |
::-webkit-scrollbar-thumb { | |
background: #cbd5e1; | |
border-radius: 10px; | |
} | |
::-webkit-scrollbar-thumb:hover { | |
background: #94a3b8; | |
} | |
/* Animations */ | |
@keyframes fadeIn { | |
from { opacity: 0; transform: translateY(20px); } | |
to { opacity: 1; transform: translateY(0); } | |
} | |
@keyframes fadeInScale { | |
from { opacity: 0; transform: scale(0.95); } | |
to { opacity: 1; transform: scale(1); } | |
} | |
@keyframes float { | |
0% { transform: translateY(0px); } | |
50% { transform: translateY(-10px); } | |
100% { transform: translateY(0px); } | |
} | |
.animate-float { | |
animation: float 6s ease-in-out infinite; | |
} | |
.animate-fade-in { | |
animation: fadeIn 0.8s ease-out forwards; | |
} | |
.animate-delay-1 { | |
animation-delay: 0.2s; | |
} | |
.animate-delay-2 { | |
animation-delay: 0.4s; | |
} | |
.slide-out { | |
transform: translateY(-100%); | |
transition: transform 0.8s ease-in-out; | |
} | |
.hidden-section { | |
opacity: 0; | |
transition: opacity 0.6s ease-in-out 0.4s; | |
} | |
.show-section { | |
opacity: 1; | |
} | |
.highlight-text { | |
background: linear-gradient(90deg, #ec4899, #8b5cf6); | |
-webkit-background-clip: text; | |
background-clip: text; | |
color: transparent; | |
} | |
/* Edit modal styles */ | |
.edit-content { | |
min-height: 200px; | |
border: 1px solid #e5e7eb; | |
border-radius: 0.5rem; | |
padding: 1rem; | |
outline: none; | |
white-space: pre-wrap; | |
} | |
.edit-content:focus { | |
border-color: #6366f1; | |
box-shadow: 0 0 0 1px #6366f1; | |
} | |
</style> | |
</head> | |
<body> | |
<!-- Landing Page --> | |
<div id="landing-page" class="min-h-screen hero-gradient"> | |
<!-- Navigation --> | |
<nav class="container mx-auto px-6 py-4"> | |
<div class="flex justify-between items-center"> | |
<div class="flex items-center space-x-2"> | |
<i class="fas fa-book-open text-primary text-2xl"></i> | |
<span class="text-xl font-bold text-gray-800">VoiceJournal</span> | |
</div> | |
<div> | |
<button id="get-started" class="px-6 py-2 bg-primary text-white rounded-full hover:bg-primary/90 transition-all font-medium"> | |
Get Started | |
</button> | |
</div> | |
</div> | |
</nav> | |
<!-- Hero Section --> | |
<section class="container mx-auto px-6 py-20"> | |
<div class="flex flex-col lg:flex-row items-center"> | |
<div class="lg:w-1/2 mb-12 lg:mb-0 animate-fade-in"> | |
<h1 class="text-5xl md:text-6xl font-bold text-gray-800 leading-tight mb-6"> | |
Speak Your Mind, | |
<span class="highlight-text">We'll Write It Down</span> | |
</h1> | |
<p class="text-xl text-gray-600 mb-8"> | |
A beautiful digital journal that transcribes your thoughts as you speak them. | |
The easiest way to document your daily reflections. | |
</p> | |
<div class="flex flex-col sm:flex-row space-y-4 sm:space-y-0 sm:space-x-4"> | |
<button id="hero-get-started" class="px-8 py-3 bg-primary text-white rounded-full hover:bg-primary/90 transition-all font-medium text-lg shadow-lg hover:shadow-primary/40"> | |
Start Journaling <i class="fas fa-arrow-right ml-2"></i> | |
</button> | |
<button class="px-8 py-3 border-2 border-gray-300 text-gray-700 rounded-full hover:bg-gray-50 transition-all font-medium text-lg"> | |
<i class="fas fa-play-circle mr-2"></i> Watch Demo | |
</button> | |
</div> | |
</div> | |
<div class="lg:w-1/2 animate-fade-in animate-delay-1"> | |
<div class="relative"> | |
<div class="absolute -top-10 -left-10 w-64 h-64 bg-secondary/10 rounded-full filter blur-xl"></div> | |
<div class="absolute -bottom-10 -right-10 w-64 h-64 bg-accent/10 rounded-full filter blur-xl"></div> | |
<div class="relative bg-white p-6 rounded-2xl shadow-2xl border border-gray-100"> | |
<div class="flex items-center justify-between mb-4"> | |
<div class="flex items-center space-x-2"> | |
<div class="w-3 h-3 rounded-full bg-red-500"></div> | |
<div class="w-3 h-3 rounded-full bg-yellow-500"></div> | |
<div class="w-3 h-3 rounded-full bg-green-500"></div> | |
</div> | |
<span class="text-sm font-medium text-gray-500">Recording...</span> | |
</div> | |
<div class="bg-gray-50 rounded-lg p-4 min-h-40"> | |
<p class="text-gray-600 italic">"Today was such a wonderful day. I finally finished that project I've been working on..."</p> | |
</div> | |
<div class="mt-4 flex justify-end"> | |
<button class="p-3 bg-primary text-white rounded-full shadow-lg hover:bg-primary/90 transition-all animate-float"> | |
<i class="fas fa-microphone text-xl"></i> | |
</button> | |
</div> | |
<div class="absolute -bottom-4 left-1/2 transform -translate-x-1/2 bg-white px-4 py-1 rounded-full border border-gray-200 shadow-sm text-sm font-medium text-gray-600"> | |
Try saying "Hello Voice Journal" | |
</div> | |
</div> | |
</div> | |
</div> | |
</div> | |
</section> | |
<!-- Features Section --> | |
<section class="bg-white py-20"> | |
<div class="container mx-auto px-6"> | |
<div class="text-center mb-16"> | |
<h2 class="text-3xl font-bold text-gray-800 mb-4">Why You'll Love Voice Journal</h2> | |
<p class="text-xl text-gray-600 max-w-2xl mx-auto">Transform your journaling experience with these powerful features</p> | |
</div> | |
<div class="grid md:grid-cols-3 gap-8"> | |
<div class="bg-gray-50 p-8 rounded-xl shadow-sm hover:shadow-md transition-shadow animate-fade-in"> | |
<div class="w-14 h-14 bg-primary/10 rounded-xl flex items-center justify-center mb-6"> | |
<i class="fas fa-microphone text-primary text-2xl"></i> | |
</div> | |
<h3 class="text-xl font-bold text-gray-800 mb-3">Speech-to-Text</h3> | |
<p class="text-gray-600">Simply speak and watch your words appear magically on the page. No typing required.</p> | |
</div> | |
<div class="bg-gray-50 p-8 rounded-xl shadow-sm hover:shadow-md transition-shadow animate-fade-in | |
</html> |