first commit

This commit is contained in:
Ronnie 2025-05-26 21:09:32 -04:00
commit 233796310d
4 changed files with 564 additions and 0 deletions

38
README.md Normal file
View file

@ -0,0 +1,38 @@
# TimelineCheck
A fun web application that generates random timeline anomalies and parallel universe scenarios in a newspaper-style format. Check if you're in the right timeline and share your findings with others!
## Features
- Generates random timeline anomaly headlines
- Newspaper-style layout with classic typography
- Share functionality to copy timeline readings
- Responsive design for all devices
- Dynamic date and year updates
## How to Use
1. Open `index.html` in your web browser
2. Click "Check My Timeline" to generate a random timeline reading
3. Click "Share Timeline" to copy a shareable link
4. Share the link with others to show them your timeline reading
## Technologies Used
- HTML5
- CSS3
- JavaScript (Vanilla)
- Google Fonts (Playfair Display & Source Serif Pro)
## Local Development
Simply clone the repository and open `index.html` in your browser. No build process or dependencies required!
```bash
git clone https://github.com/Ronniie/TimelineCheck.git
cd TimelineCheck
```
## License
MIT License - Feel free to use and modify as you wish!

74
index.html Normal file
View file

@ -0,0 +1,74 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>TimelineCheck | Are You in the Right Timeline?</title>
<!-- Favicon -->
<link rel="icon" type="image/png" sizes="32x32" href="https://images.icon-icons.com/580/PNG/512/News_icon-icons.com_54984.png">
<link rel="icon" type="image/png" sizes="16x16" href="https://images.icon-icons.com/580/PNG/512/News_icon-icons.com_54984.png">
<link rel="apple-touch-icon" href="https://images.icon-icons.com/580/PNG/512/News_icon-icons.com_54984.png">
<!-- Theme Colors -->
<meta name="theme-color" content="#2c3e50">
<meta name="msapplication-navbutton-color" content="#2c3e50">
<meta name="apple-mobile-web-app-status-bar-style" content="#2c3e50">
<!-- Primary Meta Tags -->
<meta name="title" content="TimelineCheck | Are You in the Right Timeline?">
<meta name="description" content="Check if you're in the right timeline with our timeline checker. Get instant timeline readings and discover if you're in the correct reality!">
<meta name="keywords" content="timeline checker, reality checker, timeline reading, reality reading, timeline test">
<meta name="author" content="TimelineCheck">
<meta name="robots" content="index, follow">
<meta name="language" content="English">
<!-- Google Fonts -->
<link href="https://fonts.googleapis.com/css2?family=Playfair+Display:wght@400;700;900&family=Source+Serif+Pro:wght@400;600&display=swap" rel="stylesheet">
<!-- styles -->
<link rel="stylesheet" href="styles.css">
</head>
<body>
<div class="container">
<div class="newspaper">
<header class="newspaper-header">
<div class="newspaper-masthead">
<h1 class="newspaper-title">THE TIMELINE CHRONICLE</h1>
<div class="newspaper-date" id="current-date"></div>
</div>
<div class="newspaper-subtitle">"Your Daily Dose of Timeline Anomalies"</div>
</header>
<main class="newspaper-content">
<div class="headline-section">
<h2 id="headline" class="headline">Click to Check Your Timeline</h2>
<div class="headline-decoration"></div>
<p id="subtext" class="subtext">Press the button below to discover if you're in the right timeline...</p>
</div>
<div class="newspaper-columns">
<div class="column">
<p class="newspaper-text">In a world where timelines constantly shift and reality bends, our expert timeline analysts work tirelessly to bring you the most accurate readings of your current reality.</p>
</div>
<div class="column">
<p class="newspaper-text">Using cutting-edge quantum technology and advanced timeline detection algorithms, we ensure that every reading is precise and reliable.</p>
</div>
</div>
<div class="button-container">
<button id="checkButton" class="check-button">Check My Timeline</button>
<button id="shareButton" class="share-button">Share Timeline</button>
</div>
</main>
<footer class="newspaper-footer">
<div class="footer-text">© 2024 The Timeline Chronicle. All rights reserved.</div>
</footer>
</div>
</div>
<!-- scripts -->
<script src="script.js"></script>
</body>
</html>

213
script.js Normal file
View file

@ -0,0 +1,213 @@
// Arrays of random headlines and subtexts
const headlines = [
"BREAKING: Cats Now Speak Fluent French in Timeline 42",
"Scientists Discover That Trees Have Been Secretly Dancing at Night",
"Local Man Claims to Remember the Timeline Where Pizza Was a Vegetable",
"BREAKING: Dolphins Elected to Congress in Parallel Universe",
"Timeline Anomaly: Gravity Works Sideways on Tuesdays",
"BREAKING: Clouds Found to Be Made of Cotton Candy in This Reality",
"Scientists Confirm: Dreams Are Actually Just TV Shows from Other Timelines",
"BREAKING: Time Travelers Union Announces Strike",
"Local Man Discovers His Shadow Has a Different Personality",
"BREAKING: Moon Confirmed to Be Made of Cheese in This Timeline",
"BREAKING: Parallel Universe Where Coffee Makes You Sleepy Discovered",
"Timeline Experts Baffled by Reality Where Weekends Last 5 Days",
"BREAKING: In This Timeline, Plants Have Started Writing Poetry",
"Scientists Find Universe Where Rain Falls Upward",
"BREAKING: Local Man's Pet Rock Elected Mayor in Alternate Reality",
"Timeline Anomaly: In This Reality, Computers Run on Lemonade",
"BREAKING: Parallel Universe Where Silence is Actually Loud Discovered",
"Scientists Confirm: In This Timeline, Time Moves Backwards on Thursdays",
"BREAKING: Reality Where Socks Never Get Lost Found",
"Timeline Experts Stunned by Universe Where Gravity is Optional",
"BREAKING: Parallel World Where Traffic Lights Show Emojis Discovered",
"Scientists Find Timeline Where Internet Runs on Snail Power",
"BREAKING: Reality Where Pizza Delivery is Instantaneous Confirmed",
"Timeline Anomaly: In This Universe, Clouds are Made of Marshmallows",
"BREAKING: Parallel World Where Everyone Speaks in Rhyme Found",
"Scientists Discover Timeline Where Weekends Last Forever",
"BREAKING: Reality Where Coffee Grows on Trees Confirmed",
"Timeline Experts Baffled by Universe Where Time Stands Still",
"BREAKING: Parallel World Where Rainbows are Square Discovered",
"Scientists Find Timeline Where Dreams are Broadcast on TV",
"BREAKING: Reality Where Internet Never Crashes Confirmed",
"Timeline Anomaly: In This Universe, Books Read Themselves",
"BREAKING: Parallel World Where Traffic Jams Don't Exist Found",
"Scientists Discover Timeline Where Weekdays are Optional",
"BREAKING: Reality Where Coffee is Always the Perfect Temperature",
"Timeline Experts Stunned by Universe Where Time is Currency",
"BREAKING: Parallel World Where Emails Write Themselves Discovered",
"Scientists Find Timeline Where Internet is Powered by Happiness",
"BREAKING: Reality Where Weekends Last 7 Days Confirmed",
"Timeline Anomaly: In This Universe, Clouds are WiFi Hotspots",
"BREAKING: Parallel World Where Traffic Lights Show Memes Found",
"Scientists Discover Timeline Where Time Moves in Circles",
"BREAKING: Reality Where Coffee Never Gets Cold Confirmed",
"Timeline Experts Baffled by Universe Where Time is Edible",
"BREAKING: Parallel World Where Emails Sort Themselves Discovered",
"Scientists Find Timeline Where Internet is Powered by Dreams",
"BREAKING: Reality Where Weekends are 72 Hours Long Confirmed",
"Timeline Anomaly: In This Universe, Books are Written by AI",
"BREAKING: Parallel World Where Traffic is Always Green Found",
"Scientists Discover Timeline Where Time is a Physical Object"
];
const subtexts = [
"Experts are baffled by this timeline's peculiar characteristics.",
"This timeline appears to be slightly more absurd than the standard one.",
"Quantum physicists are having a field day with these readings.",
"The timeline seems to be operating on a different set of physics.",
"Reality checks indicate we're in a particularly interesting timeline.",
"Timeline analysis suggests we're in a parallel universe.",
"The laws of physics seem to be taking a coffee break in this timeline.",
"This timeline appears to be running on a different version of reality.",
"Quantum fluctuations suggest we're in a particularly unusual timeline.",
"Timeline diagnostics indicate we're in a reality with extra features.",
"Reality distortion levels are off the charts in this timeline.",
"Quantum entanglement readings show unusual patterns.",
"Timeline stability metrics indicate we're in a unique reality.",
"Parallel universe experts are scratching their heads at these readings.",
"Reality checks confirm we're in a particularly quirky timeline.",
"Timeline analysis reveals unusual quantum fluctuations.",
"The fabric of reality seems to be particularly flexible here.",
"Quantum physicists report unprecedented timeline anomalies.",
"Reality distortion field readings are through the roof.",
"Timeline stability indicators suggest we're in a special universe.",
"Quantum entanglement patterns show remarkable variations.",
"Reality checks confirm we're in a timeline with extra features.",
"Timeline analysis reveals quantum-level peculiarities.",
"The laws of physics appear to be on vacation in this timeline.",
"Quantum fluctuations indicate we're in a unique reality.",
"Reality distortion metrics are showing unusual patterns.",
"Timeline stability readings suggest we're in a parallel universe.",
"Quantum physicists are amazed by these timeline readings.",
"Reality checks indicate we're in a particularly interesting timeline.",
"Timeline analysis shows quantum-level anomalies.",
"The fabric of reality seems to be particularly stretchy here.",
"Quantum entanglement readings are off the charts.",
"Reality distortion field analysis reveals unique patterns.",
"Timeline stability indicators suggest we're in a special reality.",
"Quantum physicists are having trouble explaining these readings.",
"Reality checks confirm we're in a timeline with unusual features.",
"Timeline analysis reveals quantum-level peculiarities.",
"The laws of physics seem to be particularly flexible here.",
"Quantum fluctuations indicate we're in a unique universe.",
"Reality distortion metrics are showing remarkable patterns.",
"Timeline stability readings suggest we're in a parallel reality.",
"Quantum physicists are puzzled by these timeline readings.",
"Reality checks indicate we're in a particularly unusual timeline.",
"Timeline analysis shows quantum-level anomalies.",
"The fabric of reality appears to be particularly elastic here.",
"Quantum entanglement readings reveal unique patterns.",
"Reality distortion field analysis suggests we're in a special timeline.",
"Timeline stability indicators show quantum-level peculiarities.",
"Quantum physicists are amazed by these reality readings.",
"Reality checks confirm we're in a timeline with extra features."
];
// Get DOM elements
const headlineElement = document.getElementById('headline');
const subtextElement = document.getElementById('subtext');
const checkButton = document.getElementById('checkButton');
const shareButton = document.getElementById('shareButton');
const currentDateElement = document.getElementById('current-date');
const footerYearElement = document.querySelector('.footer-text');
// Set current date and year
function updateDate() {
const now = new Date();
const options = { weekday: 'long', year: 'numeric', month: 'long', day: 'numeric' };
currentDateElement.textContent = now.toLocaleDateString('en-US', options);
// Update copyright year
const currentYear = now.getFullYear();
footerYearElement.textContent = `© ${currentYear} The Timeline Chronicle. All rights reserved.`;
}
// Create notification element
const notification = document.createElement('div');
notification.className = 'copy-notification';
notification.textContent = 'URL copied to clipboard!';
document.body.appendChild(notification);
// Function to show notification
function showNotification() {
notification.classList.add('show');
setTimeout(() => {
notification.classList.remove('show');
}, 2000);
}
// Function to copy text to clipboard
async function copyToClipboard(text) {
try {
await navigator.clipboard.writeText(text);
showNotification();
} catch (err) {
console.error('Failed to copy text: ', err);
}
}
// Function to generate share URL
function generateShareURL(headline, subtext) {
const baseUrl = window.location.href.split('?')[0];
const params = new URLSearchParams({
headline: encodeURIComponent(headline),
subtext: encodeURIComponent(subtext),
date: encodeURIComponent(currentDateElement.textContent)
});
return `${baseUrl}?${params.toString()}`;
}
// Function to handle sharing
function shareTimeline() {
const headline = headlineElement.textContent;
const subtext = subtextElement.textContent;
const shareUrl = generateShareURL(headline, subtext);
copyToClipboard(shareUrl);
}
// Function to load timeline from URL parameters
function loadFromURL() {
const params = new URLSearchParams(window.location.search);
const headline = params.get('headline');
const subtext = params.get('subtext');
const date = params.get('date');
if (headline && subtext) {
headlineElement.textContent = decodeURIComponent(headline);
subtextElement.textContent = decodeURIComponent(subtext);
if (date) {
currentDateElement.textContent = decodeURIComponent(date);
}
headlineElement.classList.add('changed');
}
}
// Generate random timeline check
function checkTimeline() {
// Remove previous animation class
headlineElement.classList.remove('changed');
// Force reflow
void headlineElement.offsetWidth;
// Add animation class
headlineElement.classList.add('changed');
// Get random headline and subtext
const randomHeadline = headlines[Math.floor(Math.random() * headlines.length)];
const randomSubtext = subtexts[Math.floor(Math.random() * subtexts.length)];
// Update the content
headlineElement.textContent = randomHeadline;
subtextElement.textContent = randomSubtext;
}
// Initialize
updateDate();
loadFromURL();
// Add event listeners
checkButton.addEventListener('click', checkTimeline);
shareButton.addEventListener('click', shareTimeline);

239
styles.css Normal file
View file

@ -0,0 +1,239 @@
/* reset some default browser styles */
* {
margin: 0;
padding: 0;
box-sizing: border-box;
}
/* main page styles */
body {
font-family: 'Source Serif Pro', serif;
min-height: 100vh;
display: flex;
align-items: center;
justify-content: center;
background-color: #f4f4f4;
padding: 2rem;
color: #333;
}
.container {
max-width: 1000px;
width: 100%;
}
.newspaper {
background-color: #fff;
padding: 2rem;
box-shadow: 0 0 20px rgba(0, 0, 0, 0.1);
border: 1px solid #ddd;
position: relative;
}
/* Newspaper Header Styles */
.newspaper-header {
text-align: center;
margin-bottom: 2rem;
padding-bottom: 1rem;
border-bottom: 2px solid #000;
}
.newspaper-masthead {
margin-bottom: 0.5rem;
}
.newspaper-title {
font-family: 'Playfair Display', serif;
font-size: 3.5rem;
font-weight: 900;
letter-spacing: 2px;
margin-bottom: 0.5rem;
line-height: 1.1;
}
.newspaper-subtitle {
font-family: 'Playfair Display', serif;
font-style: italic;
font-size: 1.2rem;
color: #666;
margin-bottom: 0.5rem;
}
.newspaper-date {
font-family: 'Source Serif Pro', serif;
font-style: italic;
color: #666;
font-size: 1.1rem;
}
/* Newspaper Content Styles */
.newspaper-content {
margin-bottom: 2rem;
}
.headline-section {
text-align: center;
margin-bottom: 2rem;
padding: 1rem;
background-color: #f9f9f9;
border: 1px solid #eee;
}
.headline {
font-family: 'Playfair Display', serif;
font-size: 2.5rem;
font-weight: 700;
margin-bottom: 1rem;
line-height: 1.3;
color: #000;
}
.headline-decoration {
width: 100px;
height: 2px;
background-color: #000;
margin: 1rem auto;
}
.subtext {
font-size: 1.2rem;
color: #444;
line-height: 1.6;
font-style: italic;
}
.newspaper-columns {
display: grid;
grid-template-columns: repeat(2, 1fr);
gap: 2rem;
margin: 2rem 0;
padding: 0 1rem;
}
.column {
text-align: justify;
}
.newspaper-text {
font-size: 1.1rem;
line-height: 1.8;
color: #333;
margin-bottom: 1rem;
}
/* Button Styles */
.button-container {
display: flex;
gap: 1rem;
justify-content: center;
margin: 2rem 0;
}
.check-button, .share-button {
padding: 1rem 2rem;
font-size: 1.2rem;
color: white;
border: none;
border-radius: 4px;
cursor: pointer;
transition: all 0.3s ease;
font-family: 'Source Serif Pro', serif;
text-transform: uppercase;
letter-spacing: 1px;
}
.check-button {
background-color: #2c3e50;
}
.share-button {
background-color: #27ae60;
}
.check-button:hover {
background-color: #34495e;
transform: translateY(-2px);
}
.share-button:hover {
background-color: #2ecc71;
transform: translateY(-2px);
}
.check-button:active, .share-button:active {
transform: translateY(0);
}
/* Footer Styles */
.newspaper-footer {
text-align: center;
padding-top: 1rem;
border-top: 1px solid #ddd;
color: #666;
font-size: 0.9rem;
}
/* Copy Notification */
.copy-notification {
position: fixed;
bottom: 20px;
left: 50%;
transform: translateX(-50%);
background-color: #2c3e50;
color: white;
padding: 1rem 2rem;
border-radius: 4px;
opacity: 0;
transition: opacity 0.3s ease;
z-index: 1000;
font-family: 'Source Serif Pro', serif;
}
.copy-notification.show {
opacity: 1;
}
/* Animation for headline changes */
@keyframes headlineChange {
0% {
transform: scale(1);
}
50% {
transform: scale(1.05);
}
100% {
transform: scale(1);
}
}
.headline.changed {
animation: headlineChange 0.5s ease;
}
/* Responsive Design */
@media (max-width: 768px) {
.newspaper {
padding: 1rem;
}
.newspaper-title {
font-size: 2.5rem;
}
.newspaper-columns {
grid-template-columns: 1fr;
gap: 1rem;
}
.headline {
font-size: 2rem;
}
.button-container {
flex-direction: column;
}
.check-button, .share-button {
width: 100%;
}
}