first commit
This commit is contained in:
commit
18bcafe29b
8 changed files with 143 additions and 0 deletions
37
.github/workflows/docker-build.yml
vendored
Normal file
37
.github/workflows/docker-build.yml
vendored
Normal file
|
|
@ -0,0 +1,37 @@
|
||||||
|
name: Build and Push Docker Image
|
||||||
|
|
||||||
|
on:
|
||||||
|
push:
|
||||||
|
branches:
|
||||||
|
- main
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
build-and-push:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
|
||||||
|
steps:
|
||||||
|
# Checkout the repository
|
||||||
|
- name: Checkout code
|
||||||
|
uses: actions/checkout@v3
|
||||||
|
|
||||||
|
# Log in to Docker Hub or GitHub Container Registry
|
||||||
|
- name: Log in to Docker Hub
|
||||||
|
uses: docker/login-action@v2
|
||||||
|
with:
|
||||||
|
username: ${{ secrets.DOCKER_USERNAME }}
|
||||||
|
password: ${{ secrets.DOCKER_PASSWORD }}
|
||||||
|
|
||||||
|
# Build the Docker image
|
||||||
|
- name: Build Docker image
|
||||||
|
run: |
|
||||||
|
docker build -t rideaware-landing-page:latest .
|
||||||
|
|
||||||
|
# Tag the image
|
||||||
|
- name: Tag Docker image
|
||||||
|
run: |
|
||||||
|
docker tag rideaware-landing-page:latest username/rideaware-landing-page:latest
|
||||||
|
|
||||||
|
# Push the Docker image
|
||||||
|
- name: Push Docker image
|
||||||
|
run: |
|
||||||
|
docker push username/rideaware-landing-page:latest
|
||||||
1
.gitignore
vendored
Normal file
1
.gitignore
vendored
Normal file
|
|
@ -0,0 +1 @@
|
||||||
|
venv/
|
||||||
18
Dockerfile
Normal file
18
Dockerfile
Normal file
|
|
@ -0,0 +1,18 @@
|
||||||
|
# Use an official Python runtime as a parent image
|
||||||
|
FROM python:3.10-slim
|
||||||
|
|
||||||
|
# Set the working directory in the container
|
||||||
|
WORKDIR /app
|
||||||
|
|
||||||
|
# Copy the requirements and application files
|
||||||
|
COPY requirements.txt requirements.txt
|
||||||
|
COPY . .
|
||||||
|
|
||||||
|
# Install Python dependencies
|
||||||
|
RUN pip install --no-cache-dir -r requirements.txt
|
||||||
|
|
||||||
|
# Expose the port Flask runs on
|
||||||
|
EXPOSE 5000
|
||||||
|
|
||||||
|
# Define the command to run the app
|
||||||
|
CMD ["python", "server.py"]
|
||||||
1
requirements.txt
Normal file
1
requirements.txt
Normal file
|
|
@ -0,0 +1 @@
|
||||||
|
flask
|
||||||
10
server.py
Normal file
10
server.py
Normal file
|
|
@ -0,0 +1,10 @@
|
||||||
|
from flask import Flask, render_template
|
||||||
|
|
||||||
|
app = Flask(__name__)
|
||||||
|
|
||||||
|
@app.route("/")
|
||||||
|
def index():
|
||||||
|
return render_template("index.html")
|
||||||
|
|
||||||
|
if __name__ == "__main__":
|
||||||
|
app.run(debug=True)
|
||||||
BIN
static/logo.png
Normal file
BIN
static/logo.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 1.2 MiB |
52
static/styles.css
Normal file
52
static/styles.css
Normal file
|
|
@ -0,0 +1,52 @@
|
||||||
|
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 */
|
||||||
|
}
|
||||||
24
templates/index.html
Normal file
24
templates/index.html
Normal file
|
|
@ -0,0 +1,24 @@
|
||||||
|
<!DOCTYPE html>
|
||||||
|
<html lang="en">
|
||||||
|
<head>
|
||||||
|
<meta charset="UTF-8">
|
||||||
|
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||||
|
<title>RideAware - Coming Soon</title>
|
||||||
|
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0-alpha1/dist/css/bootstrap.min.css" rel="stylesheet">
|
||||||
|
<link rel="stylesheet" href="/static/styles.css">
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<div class="container">
|
||||||
|
<h1 class="display-4 fw-bold">RideAware</h1>
|
||||||
|
<p class="lead">Our journey begins soon.</p>
|
||||||
|
<!--<p class="mb-4">Sign up to stay updated!</p>
|
||||||
|
<form action="#" class="d-flex justify-content-center">
|
||||||
|
<input type="email" class="form-control me-2" placeholder="Enter your email" required>
|
||||||
|
<button type="submit" class="btn">Notify Me</button>
|
||||||
|
</form>-->
|
||||||
|
<footer>
|
||||||
|
<p class="text-muted">© 2024 RideAware. All rights reserved.</p>
|
||||||
|
</footer>
|
||||||
|
</div>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
Loading…
Add table
Add a link
Reference in a new issue