Upload 13 files
Browse files- .gitattributes +1 -0
- Dockerfile +13 -0
- README.md +10 -10
- app.py +56 -0
- crypto.pkl +3 -0
- requirements.txt +7 -0
- scaler_x.pkl +3 -0
- scaler_x_full.pkl +3 -0
- static/background.mp4 +3 -0
- static/index.css +163 -0
- templates/about.html +43 -0
- templates/canva.html +26 -0
- templates/home.html +88 -0
- templates/index.html +173 -0
.gitattributes
CHANGED
|
@@ -33,3 +33,4 @@ saved_model/**/* filter=lfs diff=lfs merge=lfs -text
|
|
| 33 |
*.zip filter=lfs diff=lfs merge=lfs -text
|
| 34 |
*.zst filter=lfs diff=lfs merge=lfs -text
|
| 35 |
*tfevents* filter=lfs diff=lfs merge=lfs -text
|
|
|
|
|
|
| 33 |
*.zip filter=lfs diff=lfs merge=lfs -text
|
| 34 |
*.zst filter=lfs diff=lfs merge=lfs -text
|
| 35 |
*tfevents* filter=lfs diff=lfs merge=lfs -text
|
| 36 |
+
static/background.mp4 filter=lfs diff=lfs merge=lfs -text
|
Dockerfile
ADDED
|
@@ -0,0 +1,13 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
FROM python:3.9
|
| 2 |
+
|
| 3 |
+
RUN useradd -m -u 1000 user
|
| 4 |
+
USER user
|
| 5 |
+
ENV PATH="/home/user/.local/bin:$PATH"
|
| 6 |
+
|
| 7 |
+
WORKDIR /app
|
| 8 |
+
|
| 9 |
+
COPY --chown=user ./requirements.txt requirements.txt
|
| 10 |
+
RUN pip install --no-cache-dir --upgrade -r requirements.txt
|
| 11 |
+
|
| 12 |
+
COPY --chown=user . /app
|
| 13 |
+
CMD ["gunicorn", "app:app", "-b", "0.0.0.0:7860"]
|
README.md
CHANGED
|
@@ -1,10 +1,10 @@
|
|
| 1 |
-
---
|
| 2 |
-
title: Crypto
|
| 3 |
-
emoji:
|
| 4 |
-
colorFrom: gray
|
| 5 |
-
colorTo:
|
| 6 |
-
sdk: docker
|
| 7 |
-
pinned: false
|
| 8 |
-
---
|
| 9 |
-
|
| 10 |
-
Check out the configuration reference at https://huggingface.co/docs/hub/spaces-config-reference
|
|
|
|
| 1 |
+
---
|
| 2 |
+
title: Crypto
|
| 3 |
+
emoji: 😻
|
| 4 |
+
colorFrom: gray
|
| 5 |
+
colorTo: gray
|
| 6 |
+
sdk: docker
|
| 7 |
+
pinned: false
|
| 8 |
+
---
|
| 9 |
+
|
| 10 |
+
Check out the configuration reference at https://huggingface.co/docs/hub/spaces-config-reference
|
app.py
ADDED
|
@@ -0,0 +1,56 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
import joblib
|
| 2 |
+
from sklearn.preprocessing import StandardScaler
|
| 3 |
+
from flask import Flask,render_template,request, redirect, url_for
|
| 4 |
+
import numpy as np
|
| 5 |
+
import requests
|
| 6 |
+
|
| 7 |
+
|
| 8 |
+
app=Flask(__name__)
|
| 9 |
+
|
| 10 |
+
model=joblib.load('crypto.pkl')
|
| 11 |
+
scaler_x=joblib.load('scaler_x.pkl')
|
| 12 |
+
|
| 13 |
+
@app.route('/')
|
| 14 |
+
def home():
|
| 15 |
+
print("HOME ROUTE ACCESSED!") # Debug print
|
| 16 |
+
try:
|
| 17 |
+
response = requests.get('https://api.coingecko.com/api/v3/simple/price?ids=bitcoin&vs_currencies=usd', timeout=5)
|
| 18 |
+
response.raise_for_status()
|
| 19 |
+
data = response.json()
|
| 20 |
+
btc_price = data['bitcoin']['usd']
|
| 21 |
+
print(f"BTC Price: {btc_price}") # Debug print
|
| 22 |
+
except Exception as e:
|
| 23 |
+
print("Error fetching price:", e)
|
| 24 |
+
btc_price = "Error fetching price"
|
| 25 |
+
|
| 26 |
+
print("Rendering home.html") # Debug print
|
| 27 |
+
return render_template('home.html', btc_price=btc_price)
|
| 28 |
+
|
| 29 |
+
@app.route('/about')
|
| 30 |
+
def about():
|
| 31 |
+
return render_template('about.html')
|
| 32 |
+
|
| 33 |
+
@app.route('/canva')
|
| 34 |
+
def canva():
|
| 35 |
+
return render.template('canva.html')
|
| 36 |
+
|
| 37 |
+
@app.route('/start')
|
| 38 |
+
def startt():
|
| 39 |
+
return render_template('index.html')
|
| 40 |
+
|
| 41 |
+
@app.route('/predict',methods=['POST','GET'])
|
| 42 |
+
def pred():
|
| 43 |
+
Open=float(request.form.get('open'))
|
| 44 |
+
High=float(request.form.get('high'))
|
| 45 |
+
Low=float(request.form.get('low'))
|
| 46 |
+
Close=float(request.form.get('close'))
|
| 47 |
+
Volume=float(request.form.get('volume'))
|
| 48 |
+
|
| 49 |
+
user_input=[[Open,High,Low,Close,Volume]]
|
| 50 |
+
scaled_input=scaler_x.transform(user_input)
|
| 51 |
+
prediction=model.predict(scaled_input)
|
| 52 |
+
|
| 53 |
+
return render_template('index.html',result=prediction[0])
|
| 54 |
+
|
| 55 |
+
if __name__=='__main__':
|
| 56 |
+
app.run(debug=True)
|
crypto.pkl
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:16b04c9fcd2c47cbc8ff9442639a9a93fd7e5c313ab296aacea1cfaf95b7d4df
|
| 3 |
+
size 625
|
requirements.txt
ADDED
|
@@ -0,0 +1,7 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
numpy
|
| 2 |
+
pandas
|
| 3 |
+
flask
|
| 4 |
+
scikit-learn
|
| 5 |
+
joblib
|
| 6 |
+
gunicorn
|
| 7 |
+
requests
|
scaler_x.pkl
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:e6dcc2d7d3f56a07c4d7318a05ea6c86d0304ae0fe2bf1c8d1637b63d7cef1d6
|
| 3 |
+
size 1007
|
scaler_x_full.pkl
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:0efa805a260525a8dc2a305bf5850a8ecea073e5d7122965f1982df31706432a
|
| 3 |
+
size 129
|
static/background.mp4
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:56a274d6bb2edb570a45fcf20c748dad57f6f08eacf4aafdfa654c1b7781f38c
|
| 3 |
+
size 625407
|
static/index.css
ADDED
|
@@ -0,0 +1,163 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
html, body {
|
| 2 |
+
height: 100%;
|
| 3 |
+
margin: 0;
|
| 4 |
+
font-family: Arial, sans-serif;
|
| 5 |
+
background-color: #f0f4f8;
|
| 6 |
+
}
|
| 7 |
+
|
| 8 |
+
body {
|
| 9 |
+
display: flex;
|
| 10 |
+
justify-content: center;
|
| 11 |
+
align-items: center;
|
| 12 |
+
min-height: 100vh;
|
| 13 |
+
padding: 20px;
|
| 14 |
+
background-image: url('https://cdn-uploads.huggingface.co/production/uploads/68c9040752743c0e389c6079/godxRSU1oajLeS-WEFT1z.gif')
|
| 15 |
+
|
| 16 |
+
');
|
| 17 |
+
background-size: cover;
|
| 18 |
+
}
|
| 19 |
+
|
| 20 |
+
/* Video background with fallback image */
|
| 21 |
+
.video-container {
|
| 22 |
+
position: fixed;
|
| 23 |
+
top: 0;
|
| 24 |
+
left: 0;
|
| 25 |
+
width: 100%;
|
| 26 |
+
height: 100%;
|
| 27 |
+
z-index: -2;
|
| 28 |
+
overflow: hidden;
|
| 29 |
+
|
| 30 |
+
background-position: center;
|
| 31 |
+
}
|
| 32 |
+
|
| 33 |
+
#backgroundVideo {
|
| 34 |
+
position: absolute;
|
| 35 |
+
top: 50%;
|
| 36 |
+
left: 50%;
|
| 37 |
+
min-width: 100%;
|
| 38 |
+
min-height: 100%;
|
| 39 |
+
width: auto;
|
| 40 |
+
height: auto;
|
| 41 |
+
transform: translate(-50%, -50%);
|
| 42 |
+
object-fit: cover;
|
| 43 |
+
}
|
| 44 |
+
|
| 45 |
+
/* Overlay to darken video */
|
| 46 |
+
.video-overlay {
|
| 47 |
+
position: fixed;
|
| 48 |
+
top: 0;
|
| 49 |
+
left: 0;
|
| 50 |
+
width: 100%;
|
| 51 |
+
height: 100%;
|
| 52 |
+
background-color: rgba(0, 0, 0, 0.4);
|
| 53 |
+
z-index: -1;
|
| 54 |
+
}
|
| 55 |
+
|
| 56 |
+
/* HOME link at top right */
|
| 57 |
+
a {
|
| 58 |
+
position: fixed;
|
| 59 |
+
top: 20px;
|
| 60 |
+
right: 20px;
|
| 61 |
+
z-index: 9999; /* very high so it’s on top */
|
| 62 |
+
font-size: 18px;
|
| 63 |
+
padding: 10px 20px;
|
| 64 |
+
background-color: white;
|
| 65 |
+
color: #1a73e8;
|
| 66 |
+
text-decoration: none;
|
| 67 |
+
border-radius: 5px;
|
| 68 |
+
border: 1px solid #1a73e8;
|
| 69 |
+
font-weight: bold;
|
| 70 |
+
box-shadow: 1px 1px 4px rgba(0,0,0,0.2);
|
| 71 |
+
}
|
| 72 |
+
|
| 73 |
+
|
| 74 |
+
|
| 75 |
+
/* Form container */
|
| 76 |
+
.page-container {
|
| 77 |
+
width: 400px;
|
| 78 |
+
background-color: white;
|
| 79 |
+
border-radius: 10px;
|
| 80 |
+
padding: 30px 40px;
|
| 81 |
+
box-sizing: border-box;
|
| 82 |
+
color: black;
|
| 83 |
+
display: flex;
|
| 84 |
+
flex-direction: column;
|
| 85 |
+
align-items: flex-start;
|
| 86 |
+
}
|
| 87 |
+
|
| 88 |
+
/* Heading */
|
| 89 |
+
.page-container h1 {
|
| 90 |
+
font-weight: bold;
|
| 91 |
+
font-size: 28px;
|
| 92 |
+
margin-bottom: 25px;
|
| 93 |
+
color: #1a73e8;
|
| 94 |
+
}
|
| 95 |
+
|
| 96 |
+
/* Labels and inputs */
|
| 97 |
+
.form-group label {
|
| 98 |
+
font-size: 20px;
|
| 99 |
+
color: #333;
|
| 100 |
+
margin-bottom: 5px;
|
| 101 |
+
display: block;
|
| 102 |
+
}
|
| 103 |
+
|
| 104 |
+
.form-group input {
|
| 105 |
+
width: 100%;
|
| 106 |
+
padding: 8px;
|
| 107 |
+
margin-bottom: 15px;
|
| 108 |
+
font-size: 16px;
|
| 109 |
+
border: 1px solid #ccc;
|
| 110 |
+
border-radius: 4px;
|
| 111 |
+
}
|
| 112 |
+
|
| 113 |
+
/* Buttons container */
|
| 114 |
+
.btn {
|
| 115 |
+
flex:1;
|
| 116 |
+
flex-direction:column;
|
| 117 |
+
padding: 14px 18px;
|
| 118 |
+
border: none;
|
| 119 |
+
border-radius: 8px;
|
| 120 |
+
font-size: 16px;
|
| 121 |
+
font-weight: 600;
|
| 122 |
+
cursor: pointer;
|
| 123 |
+
transition: all 0.3s ease;
|
| 124 |
+
text-decoration: none;
|
| 125 |
+
align-items: center;
|
| 126 |
+
justify-content: center;
|
| 127 |
+
gap: 8px;
|
| 128 |
+
}
|
| 129 |
+
.btn-primary {
|
| 130 |
+
background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
|
| 131 |
+
color: white;
|
| 132 |
+
}
|
| 133 |
+
.btn-primary:hover:not(:disabled) {
|
| 134 |
+
transform: translateY(-2px);
|
| 135 |
+
box-shadow: 0 5px 15px rgba(102, 126, 234, 0.4);
|
| 136 |
+
}
|
| 137 |
+
.btn-secondary {
|
| 138 |
+
background: white;
|
| 139 |
+
color: #333;
|
| 140 |
+
border: 2px solid #e1e5e9;
|
| 141 |
+
}
|
| 142 |
+
.btn-secondary:hover {
|
| 143 |
+
background: #f8f9fa;
|
| 144 |
+
border-color: #333;
|
| 145 |
+
}
|
| 146 |
+
.btn:disabled {
|
| 147 |
+
opacity: 0.6;
|
| 148 |
+
cursor: not-allowed;
|
| 149 |
+
}
|
| 150 |
+
|
| 151 |
+
/* Footer */
|
| 152 |
+
.footer {
|
| 153 |
+
text-align: center;
|
| 154 |
+
margin-top: 2rem;
|
| 155 |
+
padding-top: 1.5rem;
|
| 156 |
+
border-top: 1px solid rgba(255, 255, 255, 0.1);
|
| 157 |
+
}
|
| 158 |
+
|
| 159 |
+
.footer p {
|
| 160 |
+
color: rgba(255, 255, 255, 0.7);
|
| 161 |
+
font-size: 0.9rem;
|
| 162 |
+
font-weight: 500;
|
| 163 |
+
}
|
templates/about.html
ADDED
|
@@ -0,0 +1,43 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
<!DOCTYPE html>
|
| 2 |
+
<html lang="en">
|
| 3 |
+
<head>
|
| 4 |
+
<meta charset="UTF-8">
|
| 5 |
+
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
| 6 |
+
<title>About - Crypto Price Prediction Project</title>
|
| 7 |
+
<link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.5.2/css/bootstrap.min.css">
|
| 8 |
+
<style>
|
| 9 |
+
body {
|
| 10 |
+
background-color: #f4f4f4;
|
| 11 |
+
font-family: Arial, sans-serif;
|
| 12 |
+
}
|
| 13 |
+
.container {
|
| 14 |
+
margin-top: 50px;
|
| 15 |
+
}
|
| 16 |
+
.btn-primary {
|
| 17 |
+
margin-top: 20px;
|
| 18 |
+
}
|
| 19 |
+
.project-description {
|
| 20 |
+
margin-bottom: 30px;
|
| 21 |
+
}
|
| 22 |
+
</style>
|
| 23 |
+
</head>
|
| 24 |
+
<body>
|
| 25 |
+
<div class="container">
|
| 26 |
+
<h2 class="mt-5">Crypto Price Prediction Project</h2>
|
| 27 |
+
|
| 28 |
+
<div class="project-description">
|
| 29 |
+
<p>This project aims to predict the next day’s closing price of cryptocurrencies by analyzing historical market data, including open, high, low, close prices, and trading volume</p><br><br>
|
| 30 |
+
<p>Using a comprehensive dataset that captures daily market movements, we apply advanced machine learning techniques to uncover patterns and trends that help forecast future price fluctuations.
|
| 31 |
+
By leveraging data points such as previous day prices and volume, the model strives to provide accurate and timely predictions that can assist traders and investors in making informed decisions in the highly volatile cryptocurrency market.</p><br><br>
|
| 32 |
+
<p>Our goal is to enhance market understanding and support strategic investment through data-driven insights.</p><br><br>
|
| 33 |
+
|
| 34 |
+
<h4>Link to Google Colab Notebook</h4>
|
| 35 |
+
<p>You can view and edit the Google Colab notebook used to train the machine learning model by clicking the link below:</p>
|
| 36 |
+
|
| 37 |
+
<a href="https://colab.research.google.com/drive/1fjgR5q1BTnk67vLxUNEvrZx-5pIF5MyE#scrollTo=P6Rt1UvgAQeU" class="btn btn-primary" target="_blank">Open Google Colab Notebook</a>
|
| 38 |
+
|
| 39 |
+
<br><br>
|
| 40 |
+
<a href="/" class="btn btn-secondary">Back to Home</a>
|
| 41 |
+
</div>
|
| 42 |
+
</body>
|
| 43 |
+
</html>
|
templates/canva.html
ADDED
|
@@ -0,0 +1,26 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
<html>
|
| 2 |
+
<head>
|
| 3 |
+
<title>Canva Poster Showcase</title>
|
| 4 |
+
<meta charset="UTF-8">
|
| 5 |
+
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
| 6 |
+
</head>
|
| 7 |
+
|
| 8 |
+
<body>
|
| 9 |
+
<h1 style="text-align:center;">Your First Look at "COINSIGHT AI PROJECT": The Poster Says It All</h1>
|
| 10 |
+
|
| 11 |
+
<!-- Make the image clickable to open in a new tab -->
|
| 12 |
+
<a href="https://cdn-uploads.huggingface.co/production/uploads/68c9040752743c0e389c6079/8QNXmSCVwd5DrgnZPb1Io.png" target="_blank">
|
| 13 |
+
<img
|
| 14 |
+
src="https://cdn-uploads.huggingface.co/production/uploads/68c9040752743c0e389c6079/8QNXmSCVwd5DrgnZPb1Io.png"
|
| 15 |
+
alt="poster_img"
|
| 16 |
+
style="display:block; margin:auto; max-width:90%; height:auto; cursor: pointer;"
|
| 17 |
+
>
|
| 18 |
+
</a>
|
| 19 |
+
|
| 20 |
+
<p style="text-align:center;">
|
| 21 |
+
<a href="https://drive.google.com/file/d/1C-7fv3XZsAhIZYcb5UxjLAL7XLM-tkuc/view?usp=sharing" target="_blank">
|
| 22 |
+
View Poster as PDF
|
| 23 |
+
</a>
|
| 24 |
+
</p>
|
| 25 |
+
</body>
|
| 26 |
+
</html>
|
templates/home.html
ADDED
|
@@ -0,0 +1,88 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
<!DOCTYPE html>
|
| 2 |
+
<html lang="en">
|
| 3 |
+
<head>
|
| 4 |
+
<meta charset="UTF-8" />
|
| 5 |
+
<meta name="viewport" content="width=device-width, initial-scale=1" />
|
| 6 |
+
<title>Home - COINSIGHT AI</title>
|
| 7 |
+
<style>
|
| 8 |
+
body {
|
| 9 |
+
font-family: Arial, sans-serif;
|
| 10 |
+
background-color: #f0f4f8;
|
| 11 |
+
margin: 0;
|
| 12 |
+
padding: 0;
|
| 13 |
+
display: flex;
|
| 14 |
+
flex-direction: column;
|
| 15 |
+
align-items: center;
|
| 16 |
+
justify-content: center;
|
| 17 |
+
height: 100vh;
|
| 18 |
+
}
|
| 19 |
+
video {
|
| 20 |
+
position: fixed;
|
| 21 |
+
top: 0;
|
| 22 |
+
left: 0;
|
| 23 |
+
min-width: 100%;
|
| 24 |
+
min-height: 100%;
|
| 25 |
+
object-fit: cover;
|
| 26 |
+
z-index: -1;
|
| 27 |
+
filter: brightness(0.6);
|
| 28 |
+
}
|
| 29 |
+
.container {
|
| 30 |
+
background: white;
|
| 31 |
+
padding: 40px 60px;
|
| 32 |
+
border-radius: 10px;
|
| 33 |
+
box-shadow: 0 4px 15px rgba(0,0,0,0.1);
|
| 34 |
+
text-align: center;
|
| 35 |
+
max-width: 400px;
|
| 36 |
+
}
|
| 37 |
+
.btn-primary {
|
| 38 |
+
text-decoration: none;
|
| 39 |
+
background-color: #1a73e8;
|
| 40 |
+
color: white;
|
| 41 |
+
padding: 12px 25px;
|
| 42 |
+
border-radius: 5px;
|
| 43 |
+
font-weight: bold;
|
| 44 |
+
font-size: 16px;
|
| 45 |
+
display: inline-block;
|
| 46 |
+
margin-top: 20px;
|
| 47 |
+
}
|
| 48 |
+
.footer {
|
| 49 |
+
margin-top: 30px;
|
| 50 |
+
font-size: 14px;
|
| 51 |
+
color: #888;
|
| 52 |
+
}
|
| 53 |
+
</style>
|
| 54 |
+
</head>
|
| 55 |
+
<body>
|
| 56 |
+
|
| 57 |
+
<video autoplay muted loop playsinline>
|
| 58 |
+
<source src="https://dl.statusvideoz.com/uploads/file_id627072_2025.mp4" type="video/mp4" />
|
| 59 |
+
<!-- Fallback text for unsupported browsers -->
|
| 60 |
+
Your browser does not support the video tag.
|
| 61 |
+
</video>
|
| 62 |
+
|
| 63 |
+
<div class="container">
|
| 64 |
+
<h1 style="color: #1a73e8;">Welcome to COINSIGHT AI</h1>
|
| 65 |
+
<p style="color: #555; font-size: 18px;">
|
| 66 |
+
Your trusted crypto price predictor.
|
| 67 |
+
</p>
|
| 68 |
+
<p>Latest Bitcoin Price (USD): <strong>{{ btc_price }}</strong></p>
|
| 69 |
+
<p>Fetched using CoinGecko API</p>
|
| 70 |
+
|
| 71 |
+
<a href="/start" class="btn-primary">Start Prediction</a>
|
| 72 |
+
|
| 73 |
+
<input
|
| 74 |
+
type="button"
|
| 75 |
+
value="ABOUT"
|
| 76 |
+
onclick="window.location.href='/about' " />
|
| 77 |
+
<input
|
| 78 |
+
type="button"
|
| 79 |
+
value="POSTER"
|
| 80 |
+
onclick="window.location.href='/canva' " />
|
| 81 |
+
|
| 82 |
+
|
| 83 |
+
<div class="footer">
|
| 84 |
+
<p>© Made By Gursimranjot Kaur</p>
|
| 85 |
+
</div>
|
| 86 |
+
</div>
|
| 87 |
+
</body>
|
| 88 |
+
</html>
|
templates/index.html
ADDED
|
@@ -0,0 +1,173 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
<!DOCTYPE html>
|
| 2 |
+
<html lang="en">
|
| 3 |
+
<head>
|
| 4 |
+
<meta charset="UTF-8">
|
| 5 |
+
<title>COINSIGHT AI</title>
|
| 6 |
+
<!-- <link rel="stylesheet" href="{{ url_for('static', filename='index.css') }}"> -->
|
| 7 |
+
<link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.0.0/css/all.min.css" rel="stylesheet">
|
| 8 |
+
|
| 9 |
+
<style>
|
| 10 |
+
body, html {
|
| 11 |
+
margin: 0;
|
| 12 |
+
padding: 0;
|
| 13 |
+
height: 100%;
|
| 14 |
+
font-family: Arial, sans-serif;
|
| 15 |
+
text-align: center;
|
| 16 |
+
}
|
| 17 |
+
|
| 18 |
+
.page-container {
|
| 19 |
+
position: relative;
|
| 20 |
+
z-index: 2;
|
| 21 |
+
display: flex;
|
| 22 |
+
flex-direction: column;
|
| 23 |
+
align-items: center;
|
| 24 |
+
justify-content: center;
|
| 25 |
+
min-height: 100vh;
|
| 26 |
+
padding: 20px;
|
| 27 |
+
}
|
| 28 |
+
|
| 29 |
+
.form-group {
|
| 30 |
+
margin: 20px 0;
|
| 31 |
+
}
|
| 32 |
+
|
| 33 |
+
input {
|
| 34 |
+
width: 300px;
|
| 35 |
+
padding: 10px;
|
| 36 |
+
margin-bottom: 15px;
|
| 37 |
+
border-radius: 5px;
|
| 38 |
+
border: 1px solid #ccc;
|
| 39 |
+
}
|
| 40 |
+
|
| 41 |
+
.button-group {
|
| 42 |
+
margin-top: 20px;
|
| 43 |
+
}
|
| 44 |
+
|
| 45 |
+
.btn {
|
| 46 |
+
padding: 10px 20px;
|
| 47 |
+
border: none;
|
| 48 |
+
border-radius: 5px;
|
| 49 |
+
font-size: 18px;
|
| 50 |
+
cursor: pointer;
|
| 51 |
+
margin: 5px;
|
| 52 |
+
}
|
| 53 |
+
|
| 54 |
+
.btn-primary {
|
| 55 |
+
background-color: navy;
|
| 56 |
+
color: white;
|
| 57 |
+
}
|
| 58 |
+
|
| 59 |
+
.btn-secondary {
|
| 60 |
+
background-color: gray;
|
| 61 |
+
color: white;
|
| 62 |
+
}
|
| 63 |
+
|
| 64 |
+
.video-container {
|
| 65 |
+
position: fixed;
|
| 66 |
+
top: 0; left: 0;
|
| 67 |
+
width: 100%;
|
| 68 |
+
height: 100%;
|
| 69 |
+
z-index: -2;
|
| 70 |
+
overflow: hidden;
|
| 71 |
+
}
|
| 72 |
+
|
| 73 |
+
video {
|
| 74 |
+
width: 100%;
|
| 75 |
+
height: 100%;
|
| 76 |
+
object-fit: cover;
|
| 77 |
+
}
|
| 78 |
+
|
| 79 |
+
.video-overlay {
|
| 80 |
+
position: fixed;
|
| 81 |
+
top: 0; left: 0;
|
| 82 |
+
width: 100%;
|
| 83 |
+
height: 100%;
|
| 84 |
+
background: rgba(0, 0, 0, 0.4);
|
| 85 |
+
z-index: -1;
|
| 86 |
+
}
|
| 87 |
+
|
| 88 |
+
.footer {
|
| 89 |
+
margin-top: 40px;
|
| 90 |
+
font-size: 16px;
|
| 91 |
+
color: white;
|
| 92 |
+
}
|
| 93 |
+
|
| 94 |
+
h1, h2 {
|
| 95 |
+
text-align: center;
|
| 96 |
+
}
|
| 97 |
+
|
| 98 |
+
|
| 99 |
+
</style>
|
| 100 |
+
</head>
|
| 101 |
+
|
| 102 |
+
<body>
|
| 103 |
+
|
| 104 |
+
<input
|
| 105 |
+
type="button"
|
| 106 |
+
value="Go to Home"
|
| 107 |
+
onclick="window.location.href='/'" />
|
| 108 |
+
|
| 109 |
+
|
| 110 |
+
|
| 111 |
+
<!-- Background Video -->
|
| 112 |
+
<div class="video-container">
|
| 113 |
+
<video
|
| 114 |
+
id="backgroundVideo"
|
| 115 |
+
autoplay
|
| 116 |
+
muted
|
| 117 |
+
loop
|
| 118 |
+
playsinline
|
| 119 |
+
preload="metadata"
|
| 120 |
+
aria-label="Background animation">
|
| 121 |
+
<source src="{{ url_for('static', filename='background.mp4') }}" type="video/mp4">
|
| 122 |
+
Your browser does not support the video tag.
|
| 123 |
+
</video>
|
| 124 |
+
</div>
|
| 125 |
+
|
| 126 |
+
<div class="video-overlay"></div>
|
| 127 |
+
|
| 128 |
+
<!-- Page Content -->
|
| 129 |
+
<div class="page-container">
|
| 130 |
+
<h1 style="color:grey; font-weight: bold;text-shadow: 2px 2px 0 #000, 2px 2px 0 #555;">
|
| 131 |
+
Forecast Your Crypto Future
|
| 132 |
+
</h1>
|
| 133 |
+
|
| 134 |
+
<form action="/predict" method="post" id="predictionForm">
|
| 135 |
+
<div class="form-group">
|
| 136 |
+
<label style="font-size:26px;color:navy;text-shadow: 2px 2px 5px rgba(0, 0, 0, 0.5);">Opening Price:</label><br>
|
| 137 |
+
<input type="number" name="open" placeholder="Enter opening price" required><br>
|
| 138 |
+
|
| 139 |
+
<label style="font-size:26px;color:navy;">Highest Price:</label><br>
|
| 140 |
+
<input type="number" name="high" placeholder="Enter highest price" required><br>
|
| 141 |
+
|
| 142 |
+
<label style="font-size:26px;color:navy;">Lowest Price:</label><br>
|
| 143 |
+
<input type="number" name="low" placeholder="Enter lowest price" required><br>
|
| 144 |
+
|
| 145 |
+
<label style="font-size:26px;color:navy;">Closing Price:</label><br>
|
| 146 |
+
<input type="number" name="close" placeholder="Enter closing price" required><br>
|
| 147 |
+
|
| 148 |
+
<label style="font-size:26px;color:navy;">Volume:</label><br>
|
| 149 |
+
<input type="number" name="volume" placeholder="Enter volume" required><br>
|
| 150 |
+
</div>
|
| 151 |
+
|
| 152 |
+
<div class="button-group">
|
| 153 |
+
<button type="submit" class="btn btn-primary">
|
| 154 |
+
<span>🔍</span> Predict
|
| 155 |
+
</button>
|
| 156 |
+
<button type="button" class="btn btn-secondary" onclick="document.getElementById('predictionForm').reset();">
|
| 157 |
+
<span>🔄</span> Reset Form
|
| 158 |
+
</button>
|
| 159 |
+
</div>
|
| 160 |
+
|
| 161 |
+
{% if result %}
|
| 162 |
+
<h2 style="color:rebeccapurple; font-weight: bold; text-shadow: 1px 1px 0 #000, 2px 2px 0 #555;">
|
| 163 |
+
Nearest Predicted Closing Price for Tomorrow: {{ result }}
|
| 164 |
+
</h2>
|
| 165 |
+
{% endif %}
|
| 166 |
+
</form>
|
| 167 |
+
|
| 168 |
+
<div class="footer">
|
| 169 |
+
<p><i class="fas fa-heart" style="color: #ef4444;"></i> Made with love by Gursimranjot Kaur</p>
|
| 170 |
+
</div>
|
| 171 |
+
</div>
|
| 172 |
+
</body>
|
| 173 |
+
</html>
|