From 2481a71f71b246138425a6573277360c7fe4f646 Mon Sep 17 00:00:00 2001 From: Blake Ridgway Date: Wed, 5 Feb 2025 08:07:56 -0600 Subject: [PATCH] Slow overhaul of the landing page --- .idea/.gitignore | 8 + .../inspectionProfiles/profiles_settings.xml | 6 + .idea/jsLibraryMappings.xml | 6 + .idea/landing.iml | 22 ++ .idea/misc.xml | 7 + .idea/modules.xml | 8 + .idea/vcs.xml | 6 + __pycache__/database.cpython-311.pyc | Bin 0 -> 1446 bytes static/assets/undraw_indoor-bike_9lxj.svg | 1 + static/css/old.css | 78 +++++++ static/css/styles.css | 192 +++++++++++++----- static/js/main.js | 9 + templates/index.html | 102 +++++++++- 13 files changed, 386 insertions(+), 59 deletions(-) create mode 100644 .idea/.gitignore create mode 100644 .idea/inspectionProfiles/profiles_settings.xml create mode 100644 .idea/jsLibraryMappings.xml create mode 100644 .idea/landing.iml create mode 100644 .idea/misc.xml create mode 100644 .idea/modules.xml create mode 100644 .idea/vcs.xml create mode 100644 __pycache__/database.cpython-311.pyc create mode 100644 static/assets/undraw_indoor-bike_9lxj.svg create mode 100644 static/css/old.css diff --git a/.idea/.gitignore b/.idea/.gitignore new file mode 100644 index 0000000..13566b8 --- /dev/null +++ b/.idea/.gitignore @@ -0,0 +1,8 @@ +# Default ignored files +/shelf/ +/workspace.xml +# Editor-based HTTP Client requests +/httpRequests/ +# Datasource local storage ignored files +/dataSources/ +/dataSources.local.xml diff --git a/.idea/inspectionProfiles/profiles_settings.xml b/.idea/inspectionProfiles/profiles_settings.xml new file mode 100644 index 0000000..105ce2d --- /dev/null +++ b/.idea/inspectionProfiles/profiles_settings.xml @@ -0,0 +1,6 @@ + + + + \ No newline at end of file diff --git a/.idea/jsLibraryMappings.xml b/.idea/jsLibraryMappings.xml new file mode 100644 index 0000000..6b253d1 --- /dev/null +++ b/.idea/jsLibraryMappings.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/.idea/landing.iml b/.idea/landing.iml new file mode 100644 index 0000000..1223067 --- /dev/null +++ b/.idea/landing.iml @@ -0,0 +1,22 @@ + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/misc.xml b/.idea/misc.xml new file mode 100644 index 0000000..d0e0bfd --- /dev/null +++ b/.idea/misc.xml @@ -0,0 +1,7 @@ + + + + + + \ No newline at end of file diff --git a/.idea/modules.xml b/.idea/modules.xml new file mode 100644 index 0000000..0f25e4f --- /dev/null +++ b/.idea/modules.xml @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/.idea/vcs.xml b/.idea/vcs.xml new file mode 100644 index 0000000..35eb1dd --- /dev/null +++ b/.idea/vcs.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/__pycache__/database.cpython-311.pyc b/__pycache__/database.cpython-311.pyc new file mode 100644 index 0000000000000000000000000000000000000000..9770f826204bd8595e9c1b0ca29a888e1be6edc3 GIT binary patch literal 1446 zcma)6-)q}e6h2p$V)-}el5H%MX{@kn2~}aRr>#Y6l%d8}I$JJDO6hD%%aqyHb|v>0 z>FS0+oL~qWgRr;2AYQaXtnMNKs|$yC3}Ymz=A8FQwj&FdwzB>iVb zx;z+QbB-nHhN*q66{TB6y`UBsq*-l2Qp@I?ZlGd8Gt8+o6LzEG)Fo4!H>I+ne^b_? z2N~sjen69>Odbj2-cNPMw?7NxHMiNcYkoLVYf;aoVcdRb*IK@f4Y$#7{7|UXUC)-e zkY`jH$9KYv0g`mAD&M;eTdCG7KiJANb?)1qGF|a2$}Q?Hqo}9cw(G9mY`XU=zOB?N zP0ML6DHc+y70=Ck}-z8zhM zs1CJ(!LVRvh>Xc$cN-GJT9a9B7;ADX-2Yi~1->J@sIfQDLEDib?MZfqvuCUXAA`@1 zeG1JL}WPXtH!$&6l;3bosh$ z&d71fc0-wTWDzQ|EWv>NPr|I;^z9|;_>VM7T`I>yA(Ek~(+Q7#1T;QPGk&6CS@+&B zE?}L*+k1-8hCU|><1cgXcAxe>RQ7XM4{}#Kd@wq`J@M{fO&+k5ZE zbNl)HzGxhXMo%;XF};=AOl@SknNEfk$<5?Ox|{B#gWNkE{|GI2kou?(L>PYyL2j(m z>a_YX>>eE*d2BPQ>L=cU41@DM*A>;_Y(xSaULSw*Mn9cl>h($ literal 0 HcmV?d00001 diff --git a/static/assets/undraw_indoor-bike_9lxj.svg b/static/assets/undraw_indoor-bike_9lxj.svg new file mode 100644 index 0000000..3fbb967 --- /dev/null +++ b/static/assets/undraw_indoor-bike_9lxj.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/static/css/old.css b/static/css/old.css new file mode 100644 index 0000000..4c833eb --- /dev/null +++ b/static/css/old.css @@ -0,0 +1,78 @@ +body { + margin: 0; + padding: 0; + font-family: Arial, sans-serif; + height: 100vh; + width: 100vw; +} + +html { + background: linear-gradient(#1e4e9c, #9198e5); + height: 100%; + width: 100%; +} + + +.container { + position: absolute; + top: 50%; + left: 50%; + transform: translate(-50%, -50%); + max-width: 600px; + padding: 20px; + background-color: rgba(0, 0, 0, 0.5); + border-radius: 10px; + box-shadow: 0 0 10px rgba(0, 0, 0, 0.2); + text-align: center; + color: #fff; +} + +.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; +} + +.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; +} \ No newline at end of file diff --git a/static/css/styles.css b/static/css/styles.css index 4c833eb..76b6d7f 100644 --- a/static/css/styles.css +++ b/static/css/styles.css @@ -1,78 +1,174 @@ body { + font-family: Arial, sans-serif; margin: 0; padding: 0; - font-family: Arial, sans-serif; - height: 100vh; - width: 100vw; } -html { - background: linear-gradient(#1e4e9c, #9198e5); - height: 100%; +header { + background-color: #fff; + padding: 10px 20px; + text-align: center; + font-size: 24px; + box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1); + margin: 5px auto; +} + +header nav { + display: flex; + justify-content: normal; + align-items: center; +} + +header nav a { + text-decoration: none; + color: #000; + margin-left: 20px; + font-size: 18px; +} + +.hero-section-1 { + background-image: linear-gradient(to bottom, #337cf2, #fff); + padding: 100px 20px; width: 100%; } +.hero-content { + display: flex; + justify-content: space-between; + align-items: center; +} -.container { - position: absolute; - top: 50%; - left: 50%; - transform: translate(-50%, -50%); - max-width: 600px; - padding: 20px; - background-color: rgba(0, 0, 0, 0.5); +.hero-illustration { + width: 40%; + height: 500px; + background-size: cover; + background-position: center; border-radius: 10px; - box-shadow: 0 0 10px rgba(0, 0, 0, 0.2); - text-align: center; - color: #fff; + box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1); } -.coming-soon { - text-align: center; - max-width: 600px; +.hero-illustration img { + width: 100%; + height: 100%; + object-fit: cover; + border-radius: 30px; +} + +.hero-text { + width: 60%; padding: 20px; } -.logo img { - width: 150px; - margin-bottom: 20px; +.hero-text h1 { + font-size: 48px; + font-weight: bold; + color: #000; + text-shadow: 0 2px 4px rgba(0, 0, 0, 0.1); } -h1 { - font-size: 2.5rem; - margin: 10px 0; +.hero-text p { + font-size: 18px; + color: #000; + text-shadow: 0 2px 4px rgba(0, 0, 0, 0.1); } -p { - font-size: 1.2rem; - margin: 10px 0 20px; +.hero-section-2 { + background-color: #337cf2; + padding: 100px; + text-align: center; + width: 100%; } - -.subscription { - margin-top: 20px; -} - -.subscription input { +.hero-section-2 form { padding: 10px; font-size: 1rem; width: calc(100% - 110px); - border: none; - border-radius: 10px; - outline: none; } -.subscription button { +.hero-section-2 input { + padding: 10px; + width: 15%; + border: 1px solid #ccc; + border-radius: 10px; + box-shadow: 0 0 10px rgba(0, 0, 0, 0.1); +} + +.hero-section-2 button { padding: 10px 20px; - font-size: 1rem; - background: #ff4500; border: none; - border-radius: 10px; - color: #fff; + border-radius: 5px; cursor: pointer; - outline: none; - margin-top: 10px; } -.subscription button:hover { - background: #e03e00; -} \ No newline at end of file +.hero-section-3 { + width: 100%; +} + +.hero-section-3 h2 { + margin-top: 0; + text-align: center; +} + +.feature-cards { + display: flex; + flex-wrap: wrap; + justify-content: center; +} + +.feature-card { + background-color: #fff; + padding: 20px; + border: 1px solid #ddd; + border-radius: 10px; + box-shadow: 0 0 20px rgba(0, 0, 0, 0.2); + margin: 20px; + width: 30%; + display: flex; + flex-direction: column; + align-items: center; + justify-content: center; +} + +.feature-card h3 { + margin-top: 0; + text-align: center; + font-size: 18px; + font-weight: bold; + margin-bottom: 10px; +} + +.feature-card ul { + list-style: none; + padding: 0; + margin: 0; + text-align: center; +} + +.feature-card li { + margin-bottom: 10px; + font-size: 16px; + color: #666; +} + +.feature-card li::before { + content: "\2022"; + font-size: 16px; + color: #337cf2; + margin-right: 10px; +} + +main { + display: flex; + flex-direction: column; + align-items: center; + padding: 20px; + width: 100%; + margin: 0 auto; +} + +footer { + background-color: #333; + color: #fff; + padding: 10px; + text-align: center; + clear: both; +} diff --git a/static/js/main.js b/static/js/main.js index 33d8a70..f15327d 100644 --- a/static/js/main.js +++ b/static/js/main.js @@ -16,3 +16,12 @@ document.getElementById("notify-button").addEventListener("click", async () => { alert("Please enter a valid email."); } }); + +window.addEventListener('scroll', function() { + var footerHeight = document.querySelector('footer').offsetHeight; + if (window.scrollY + window.innerHeight >= document.body.offsetHeight - footerHeight) { + document.querySelector('footer').style.display = 'block'; + } else { + document.querySelector('footer').style.display = 'none'; + } +}); diff --git a/templates/index.html b/templates/index.html index b78e3e7..6177d4c 100644 --- a/templates/index.html +++ b/templates/index.html @@ -3,19 +3,99 @@ - RideAware Landing Page + RideAware -
-

RideAware

-

Coming Soon!

-

Be the first to know when we launch. Subscribe below:

-
- - -
-
- +
+ +
+
+
+
+
+ Cycling Illustration +
+
+

Train with Focus. Ride with Awareness

+
+

RideAware is a comprehensive cycling training platform designed to help riders stay aware of their performance, progress, and goals.

+
+
+
+ +
+

Get notified when we’re launching

+

Sign up to receive updates and special offers as we prepare to launch.

+ +
+ + +
+ + +
+
+

Features

+
+
+

Workout Planning

+
    +
  • Customizable Training Plans: Allow users to create customized training plans based on their goals and fitness level.
  • +
  • Workout Scheduling: Provide a feature to schedule workouts and set reminders.
  • +
  • Goal Setting: Allow users to set and track their fitness goals.
  • +
+
+
+

Workout Tracking

+
    +
  • Workout Logging: Allow users to log their workouts, including exercises, sets, reps, and weight.
  • +
  • Data Analysis: Provide tools to analyze user data, including charts, graphs, and statistics.
  • +
  • Progress Tracking: Allow users to track their progress over time.
  • +
+
+
+

Training and Coaching

+
    +
  • Coaching and Guidance: Provide coaching and guidance to help users achieve their fitness goals.
  • +
  • Virtual Training Rides: Offer immersive virtual training rides to boost users' cycling performance.
  • +
  • Structured Workouts: Offer structured workouts to help users improve their fitness and performance.
  • +
+
+
+

Nutrition and Recovery

+
    +
  • Nutrition Planning: Provide tools to help users plan and track their nutrition.
  • +
  • Recovery Planning: Offer resources and tools to help users plan and track their recovery.
  • +
  • Injury Prevention and Management: Provide resources and tools to help users prevent and manage injuries.
  • +
+
+
+

Social and Community

+
    +
  • Social Sharing: Allow users to share their workouts and progress on social media.
  • +
  • Community Forum: Create a community forum where users can connect with each other and share their experiences.
  • +
  • Leaderboards: Provide leaderboards to encourage competition and motivation.
  • +
+
+
+

Integration and Data

+
    +
  • Integration with Wearable Devices: Integrate with wearable devices to track user activity and health metrics.
  • +
  • Integration with Music Services: Integrate with music services to provide a more engaging workout experience.
  • +
  • Data Import/Export: Allow users to import and export their data to other platforms.
  • +
+
+
+
+
+
+ Copyright © 2025 RideAware. All rights reserved. +
+