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 0000000..9770f82
Binary files /dev/null and b/__pycache__/database.cpython-311.pyc differ
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:
-
-
-
-
-
-
+
+
+
+
+
+

+
+
+
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.
+
+
+
+
+
+
+ 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.
+
+
+
+
+
+
+