(feat): Init concept of coming soon landing page

This commit is contained in:
Blake Ridgway
2025-01-05 21:03:42 -06:00
parent 18bcafe29b
commit f8f8c773cc
9 changed files with 179 additions and 77 deletions

77
static/css/styles.css Normal file
View File

@@ -0,0 +1,77 @@
body {
margin: 0;
padding: 0;
font-family: Arial, sans-serif;
background: linear-gradient(135deg, #1e90ff, #00bfff);
color: #fff;
display: flex;
justify-content: center;
align-items: center;
height: 100vh;
}
.coming-soon {
text-align: center;
max-width: 600px;
padding: 20px;
}
.logo img {
width: 150px;
margin-bottom: 20px;
}
h1 {
font-size: 2.5rem;
margin: 10px 0;
}
p {
font-size: 1.2rem;
margin: 10px 0 20px;
}
.countdown {
display: flex;
justify-content: space-around;
margin: 20px 0;
}
.countdown div {
text-align: center;
}
.countdown span {
display: block;
font-size: 2rem;
font-weight: bold;
}
.subscription {
margin-top: 20px;
}
.subscription input {
padding: 10px;
font-size: 1rem;
width: calc(100% - 110px);
border: none;
border-radius: 10px;
outline: none;
}
.subscription button {
padding: 10px 20px;
font-size: 1rem;
background: #ff4500;
border: none;
border-radius: 10px;
color: #fff;
cursor: pointer;
outline: none;
margin-top: 10px;
}
.subscription button:hover {
background: #e03e00;
}

24
static/js/countdown.js Normal file
View File

@@ -0,0 +1,24 @@
// Countdown timer
const targetDate = new Date("2025-01-31T00:00:00Z"); // Set your launch date
function updateCountdown() {
const now = new Date();
const difference = targetDate - now;
if (difference < 0) {
document.getElementById("countdown").innerHTML = "<p>We're Live!</p>";
return;
}
const days = Math.floor(difference / (1000 * 60 * 60 * 24));
const hours = Math.floor((difference / (1000 * 60 * 60)) % 24);
const minutes = Math.floor((difference / (1000 * 60)) % 60);
const seconds = Math.floor((difference / 1000) % 60);
document.getElementById("days").textContent = days.toString().padStart(2, "0");
document.getElementById("hours").textContent = hours.toString().padStart(2, "0");
document.getElementById("minutes").textContent = minutes.toString().padStart(2, "0");
document.getElementById("seconds").textContent = seconds.toString().padStart(2, "0");
}
setInterval(updateCountdown, 1000);

18
static/js/main.js Normal file
View File

@@ -0,0 +1,18 @@
document.getElementById("notify-button").addEventListener("click", async () => {
const emailInput = document.getElementById("email-input");
const email = emailInput.value;
if (email) {
const response = await fetch("/subscribe", {
method: "POST",
headers: { "Content-Type": "application/json" },
body: JSON.stringify({ email }),
});
const result = await response.json();
alert(result.message || result.error);
emailInput.value = ""; // Clear input field
} else {
alert("Please enter a valid email.");
}
});

View File

@@ -1,52 +0,0 @@
body {
background: linear-gradient(135deg, #2E3A59, #4A6FA5); /* Deep blue and soft gray-blue */
color: white;
font-family: 'Arial', sans-serif;
height: 100vh; /* Ensure the body takes full viewport height */
margin: 0;
display: flex; /* Use flexbox to center the content */
justify-content: center; /* Horizontally center */
align-items: center; /* Vertically center */
}
.container {
text-align: center; /* Center-align the text */
max-width: 600px; /* Limit the width for better readability */
}
.logo {
width: 150px;
height: auto;
margin-bottom: 1rem;
}
h1, .lead {
color: #F0F0F0; /* Softer white for contrast */
}
.form-control {
max-width: 300px;
border: 1px solid #6FA8DC; /* Light blue border */
border-radius: 0.25rem;
}
.btn {
background-color: #4A6FA5; /* Soft blue */
border: none;
color: white;
padding: 0.5rem 1.5rem;
font-size: 1rem;
font-weight: bold;
border-radius: 0.25rem;
transition: background-color 0.3s ease;
}
.btn:hover {
background-color: #3B5998; /* Darker blue on hover */
}
footer {
margin-top: 2rem;
font-size: 0.9rem;
color: #D0D0D0; /* Light gray for footer text */
}