forked from lenape/timer.jacquesingram.online
15 changed files with 594 additions and 0 deletions
@ -0,0 +1,8 @@ |
|||||||
|
FROM nginx:latest |
||||||
|
|
||||||
|
##USER www-data |
||||||
|
|
||||||
|
WORKDIR /usr/share/nginx/html |
||||||
|
|
||||||
|
COPY --chown=www-data:www-data --chmod=755 . . |
||||||
|
|
@ -0,0 +1,75 @@ |
|||||||
|
pipeline { |
||||||
|
|
||||||
|
agent none |
||||||
|
|
||||||
|
options { |
||||||
|
|
||||||
|
disableConcurrentBuilds(abortPrevious: true) |
||||||
|
|
||||||
|
buildDiscarder(logRotator(numToKeepStr: '1')) |
||||||
|
} |
||||||
|
|
||||||
|
stages { |
||||||
|
|
||||||
|
stage('docker compose build') { |
||||||
|
|
||||||
|
agent { |
||||||
|
|
||||||
|
label "aventador" |
||||||
|
|
||||||
|
} |
||||||
|
|
||||||
|
steps { |
||||||
|
|
||||||
|
dir('.') { |
||||||
|
|
||||||
|
sh 'docker compose build' |
||||||
|
|
||||||
|
} |
||||||
|
|
||||||
|
} |
||||||
|
|
||||||
|
} |
||||||
|
|
||||||
|
stage('docker compose push') { |
||||||
|
|
||||||
|
agent { |
||||||
|
|
||||||
|
label "aventador" |
||||||
|
|
||||||
|
} |
||||||
|
|
||||||
|
steps { |
||||||
|
|
||||||
|
dir('.') { |
||||||
|
|
||||||
|
sh 'docker compose push' |
||||||
|
|
||||||
|
} |
||||||
|
|
||||||
|
} |
||||||
|
|
||||||
|
} |
||||||
|
|
||||||
|
stage('prune') { |
||||||
|
|
||||||
|
agent { |
||||||
|
|
||||||
|
label "aventador" |
||||||
|
|
||||||
|
} |
||||||
|
|
||||||
|
steps { |
||||||
|
|
||||||
|
dir('.') { |
||||||
|
|
||||||
|
sh 'docker system prune -a -f' |
||||||
|
|
||||||
|
} |
||||||
|
|
||||||
|
} |
||||||
|
|
||||||
|
} |
||||||
|
|
||||||
|
}} |
||||||
|
|
@ -0,0 +1,42 @@ |
|||||||
|
const pomodoroTime = document.querySelector('.pomodoro__time'); |
||||||
|
const pomodoroState = document.querySelector('.pomodoro__state'); |
||||||
|
const modes = document.querySelectorAll('.mode'); |
||||||
|
const getStartedMessage = document.querySelector('.get-started'); |
||||||
|
const sound = document.querySelector('audio'); |
||||||
|
let countdown; |
||||||
|
|
||||||
|
modes.forEach(mode => mode.addEventListener('click', switchModes)); |
||||||
|
|
||||||
|
function switchModes(e) { |
||||||
|
const secondsForMode = parseInt(e.target.dataset.time, 10); |
||||||
|
modes.forEach(mode => mode.classList.remove('active')); |
||||||
|
e.target.classList.add('active'); |
||||||
|
getStartedMessage.style.display = 'none'; |
||||||
|
timer(secondsForMode); |
||||||
|
} |
||||||
|
|
||||||
|
function timer(seconds) { |
||||||
|
clearInterval(countdown); |
||||||
|
const start = Date.now(); |
||||||
|
const finish = start + seconds * 1000; |
||||||
|
displayTimeLeft(seconds); |
||||||
|
|
||||||
|
countdown = setInterval(() => { |
||||||
|
const secondsLeft = Math.round((finish - Date.now()) / 1000); |
||||||
|
if (secondsLeft <= 0) { |
||||||
|
clearInterval(countdown); |
||||||
|
document.title = 'Time Up!'; |
||||||
|
sound.currentTime = 5; |
||||||
|
sound.play(); |
||||||
|
} |
||||||
|
displayTimeLeft(secondsLeft); |
||||||
|
}, 1000); |
||||||
|
} |
||||||
|
|
||||||
|
function displayTimeLeft(seconds) { |
||||||
|
const minutes = Math.floor(seconds / 60); |
||||||
|
const secondsRemaining = seconds % 60; |
||||||
|
const displayTime = `${minutes}:${secondsRemaining < 10 ? '0' : ''}${secondsRemaining}`; |
||||||
|
document.title = displayTime; |
||||||
|
pomodoroTime.textContent = displayTime; |
||||||
|
} |
@ -0,0 +1,9 @@ |
|||||||
|
{ |
||||||
|
"version": 3, |
||||||
|
"mappings": "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", |
||||||
|
"sources": [ |
||||||
|
"../style.scss" |
||||||
|
], |
||||||
|
"names": [], |
||||||
|
"file": "style.css" |
||||||
|
} |
@ -0,0 +1,171 @@ |
|||||||
|
*::before, |
||||||
|
*::after, |
||||||
|
* { |
||||||
|
margin: 0; |
||||||
|
padding: 0; |
||||||
|
box-sizing: inherit; |
||||||
|
} |
||||||
|
|
||||||
|
html { |
||||||
|
box-sizing: border-box; |
||||||
|
font-size: 62.5%; |
||||||
|
} |
||||||
|
|
||||||
|
body { |
||||||
|
display: flex; |
||||||
|
flex-direction: column; |
||||||
|
justify-content: space-evenly; |
||||||
|
align-items: center; |
||||||
|
min-height: 90vh; |
||||||
|
font-family: 'Poppins', sans-serif; |
||||||
|
background-color: #1e2140; |
||||||
|
color: white; |
||||||
|
|
||||||
|
.main-heading { |
||||||
|
font-size: 3.2rem; |
||||||
|
font-weight: 500; |
||||||
|
} |
||||||
|
|
||||||
|
main { |
||||||
|
width: 40rem; |
||||||
|
height: 40rem; |
||||||
|
border-radius: 50%; |
||||||
|
text-align: center; |
||||||
|
} |
||||||
|
|
||||||
|
.modes { |
||||||
|
font-size: 1.8rem; |
||||||
|
padding: 1.6rem 1rem; |
||||||
|
background: #151932; |
||||||
|
border-radius: 10rem; |
||||||
|
|
||||||
|
a { |
||||||
|
margin-right: 2em; |
||||||
|
text-decoration: none; |
||||||
|
font-weight: 500; |
||||||
|
color: #484c67; |
||||||
|
transition: all 300ms ease-out; |
||||||
|
|
||||||
|
&.active { |
||||||
|
padding: 0.5em 1em; |
||||||
|
border-radius: 50px; |
||||||
|
background-color: #fa6f71; |
||||||
|
color: #1c2244; |
||||||
|
} |
||||||
|
|
||||||
|
&:last-child { margin-right: 0; } |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
.get-started { |
||||||
|
background: royalblue; |
||||||
|
padding: 1.2rem 2rem; |
||||||
|
border-radius: 0.4rem; |
||||||
|
font-size: 1.8rem; |
||||||
|
margin-top: 2rem; |
||||||
|
} |
||||||
|
|
||||||
|
.pomodoro { |
||||||
|
display: flex; |
||||||
|
flex-direction: column; |
||||||
|
justify-content: center; |
||||||
|
align-items: center; |
||||||
|
width: 100%; |
||||||
|
height: 100%; |
||||||
|
position: relative; |
||||||
|
margin: 2.5rem 0; |
||||||
|
text-align: center; |
||||||
|
border-radius: 50%; |
||||||
|
background: #151932; |
||||||
|
box-shadow: 50px 50px 82px #0e1021, -50px -50px 82px #1c2244; |
||||||
|
|
||||||
|
&::before { |
||||||
|
content: ''; |
||||||
|
position: absolute; |
||||||
|
border: 10px solid royalblue; |
||||||
|
border-radius: 50%; |
||||||
|
width: 35rem; |
||||||
|
height: 35rem; |
||||||
|
} |
||||||
|
|
||||||
|
&__time { |
||||||
|
font-size: 7rem; |
||||||
|
font-weight: 500; |
||||||
|
} |
||||||
|
|
||||||
|
&__state { |
||||||
|
font-size: 2rem; |
||||||
|
margin-top: 1em; |
||||||
|
padding-left: 1em; |
||||||
|
letter-spacing: 1em; |
||||||
|
text-transform: uppercase; |
||||||
|
} |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
.tooltip-container { |
||||||
|
position: fixed; |
||||||
|
bottom: 2.5rem; |
||||||
|
right: 5.5rem; |
||||||
|
} |
||||||
|
|
||||||
|
.help__tooltip { |
||||||
|
position: relative; |
||||||
|
padding: 0.8rem; |
||||||
|
background: rgba(65, 105, 225, 0.7); |
||||||
|
border-radius: 50%; |
||||||
|
text-align: center; |
||||||
|
|
||||||
|
&:hover .help__tooltip-content { |
||||||
|
opacity: 1; |
||||||
|
visibility: visible; |
||||||
|
} |
||||||
|
|
||||||
|
&-content { |
||||||
|
opacity: 0; |
||||||
|
visibility: hidden; |
||||||
|
width: 15rem; |
||||||
|
position: absolute; |
||||||
|
bottom: 150%; |
||||||
|
left: 30%; |
||||||
|
background-color: #151932; |
||||||
|
font-size: 1.4rem; |
||||||
|
color: #fff; |
||||||
|
text-align: center; |
||||||
|
border-radius: 6px; |
||||||
|
padding: 1rem; |
||||||
|
margin-left: -6.5rem; |
||||||
|
z-index: 1; |
||||||
|
transition: visibility 200ms, opacity 200ms ease-in-out; |
||||||
|
|
||||||
|
h4 { margin-bottom: 0.8rem; } |
||||||
|
|
||||||
|
ul { |
||||||
|
list-style: none; |
||||||
|
|
||||||
|
li:nth-child(even) { margin-bottom: 0.8rem; } |
||||||
|
} |
||||||
|
|
||||||
|
&::after { |
||||||
|
content: ''; |
||||||
|
position: absolute; |
||||||
|
top: 100%; |
||||||
|
left: 50%; |
||||||
|
margin-left: -10px; |
||||||
|
border-width: 10px; |
||||||
|
border-style: solid; |
||||||
|
border-color: #151932 transparent transparent transparent; |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
img { |
||||||
|
opacity: 0.6; |
||||||
|
cursor: pointer; |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
@media screen and (min-width: 320px) and (max-width: 480px) { |
||||||
|
main { transform: scale(0.8); } |
||||||
|
|
||||||
|
body .modes { font-size: 1.5rem; } |
||||||
|
} |
@ -0,0 +1,133 @@ |
|||||||
|
*::before, |
||||||
|
*::after, |
||||||
|
* { |
||||||
|
margin: 0; |
||||||
|
padding: 0; |
||||||
|
-webkit-box-sizing: inherit; |
||||||
|
box-sizing: inherit; |
||||||
|
} |
||||||
|
html { |
||||||
|
-webkit-box-sizing: border-box; |
||||||
|
box-sizing: border-box; |
||||||
|
font-size: 62.5%; |
||||||
|
} |
||||||
|
body { |
||||||
|
display: -webkit-box; |
||||||
|
display: -ms-flexbox; |
||||||
|
display: flex; |
||||||
|
-webkit-box-orient: vertical; |
||||||
|
-webkit-box-direction: normal; |
||||||
|
-ms-flex-direction: column; |
||||||
|
flex-direction: column; |
||||||
|
-webkit-box-pack: space-evenly; |
||||||
|
-ms-flex-pack: space-evenly; |
||||||
|
justify-content: space-evenly; |
||||||
|
-webkit-box-align: center; |
||||||
|
-ms-flex-align: center; |
||||||
|
align-items: center; |
||||||
|
min-height: 90vh; |
||||||
|
font-family: "Poppins", sans-serif; |
||||||
|
2background-color: #1e2140; |
||||||
|
color: white; |
||||||
|
} |
||||||
|
body .main-heading { |
||||||
|
font-size: 3.2rem; |
||||||
|
font-weight: 500; |
||||||
|
} |
||||||
|
body main { |
||||||
|
width: 40rem; |
||||||
|
height: 40rem; |
||||||
|
border-radius: 50%; |
||||||
|
text-align: center; |
||||||
|
} |
||||||
|
body .modes { |
||||||
|
font-size: 1.8rem; |
||||||
|
padding: 1.6rem 1rem; |
||||||
|
2background: #151932; |
||||||
|
border-radius: 10rem; |
||||||
|
} |
||||||
|
body .modes a { |
||||||
|
margin-right: 2em; |
||||||
|
text-decoration: none; |
||||||
|
font-weight: 500; |
||||||
|
color: #484c67; |
||||||
|
-webkit-transition: all 300ms ease-out; |
||||||
|
transition: all 300ms ease-out; |
||||||
|
} |
||||||
|
|
||||||
|
body .modes a.active { |
||||||
|
|
||||||
|
padding: 0.5em 1em; |
||||||
|
|
||||||
|
border-radius: 50px; |
||||||
|
|
||||||
|
background-color: hotpink; |
||||||
|
|
||||||
|
color: #1c2244; |
||||||
|
|
||||||
|
} |
||||||
|
|
||||||
|
body .modes a:last-child { |
||||||
|
margin-right: 0; |
||||||
|
} |
||||||
|
body .get-started { |
||||||
|
background: royalblue; |
||||||
|
padding: 1.2rem 2rem; |
||||||
|
border-radius: 0.4rem; |
||||||
|
font-size: 1.8rem; |
||||||
|
margin-top: 2rem; |
||||||
|
} |
||||||
|
body .pomodoro { |
||||||
|
display: -webkit-box; |
||||||
|
display: -ms-flexbox; |
||||||
|
display: flex; |
||||||
|
-webkit-box-orient: vertical; |
||||||
|
-webkit-box-direction: normal; |
||||||
|
-ms-flex-direction: column; |
||||||
|
flex-direction: column; |
||||||
|
-webkit-box-pack: center; |
||||||
|
-ms-flex-pack: center; |
||||||
|
justify-content: center; |
||||||
|
-webkit-box-align: center; |
||||||
|
-ms-flex-align: center; |
||||||
|
align-items: center; |
||||||
|
width: 100%; |
||||||
|
height: 100%; |
||||||
|
position: relative; |
||||||
|
margin: 2.5rem 0; |
||||||
|
text-align: center; |
||||||
|
border-radius: 50%; |
||||||
|
23background: #151932; |
||||||
|
-webkit-box-shadow: 50px 50px 82px #0e1021, -50px -50px 82px #1c2244; |
||||||
|
box-shadow: 50px 50px 82px #0e1021, -50px -50px 82px #1c2244; |
||||||
|
} |
||||||
|
body .pomodoro::before { |
||||||
|
content: ""; |
||||||
|
position: absolute; |
||||||
|
border: 10px solid hotpink; |
||||||
|
border-radius: 50%; |
||||||
|
width: 35rem; |
||||||
|
height: 35rem; |
||||||
|
} |
||||||
|
body .pomodoro__time { |
||||||
|
font-size: 7rem; |
||||||
|
font-weight: 500; |
||||||
|
} |
||||||
|
body .pomodoro__state { |
||||||
|
font-size: 2rem; |
||||||
|
margin-top: 1em; |
||||||
|
padding-left: 1em; |
||||||
|
letter-spacing: 1em; |
||||||
|
text-transform: uppercase; |
||||||
|
} |
||||||
|
|
||||||
|
@media screen and (min-width: 320px) and (max-width: 480px) { |
||||||
|
main { |
||||||
|
-webkit-transform: scale(0.8); |
||||||
|
transform: scale(0.8); |
||||||
|
} |
||||||
|
body .modes { |
||||||
|
font-size: 1.5rem; |
||||||
|
} |
||||||
|
} |
||||||
|
/*# sourceMappingURL=style.css.map */ |
Binary file not shown.
Binary file not shown.
@ -0,0 +1,19 @@ |
|||||||
|
#!/bin/bash |
||||||
|
|
||||||
|
## |
||||||
|
|
||||||
|
reset |
||||||
|
|
||||||
|
clear |
||||||
|
|
||||||
|
## |
||||||
|
|
||||||
|
set -e |
||||||
|
|
||||||
|
set -x |
||||||
|
|
||||||
|
## |
||||||
|
|
||||||
|
docker compose down --remove-orphans |
||||||
|
|
||||||
|
docker compose up --build -d |
@ -0,0 +1,20 @@ |
|||||||
|
|
||||||
|
services: |
||||||
|
|
||||||
|
clocks.softwareshinobi.digital: |
||||||
|
|
||||||
|
container_name: clocks.softwareshinobi.digital |
||||||
|
|
||||||
|
image: softwareshinobi/clocks.softwareshinobi.digital |
||||||
|
|
||||||
|
build: |
||||||
|
|
||||||
|
context: . |
||||||
|
|
||||||
|
dockerfile: Dockerfile |
||||||
|
|
||||||
|
restart: unless-stopped |
||||||
|
|
||||||
|
ports: |
||||||
|
|
||||||
|
- "8080:80" |
After Width: | Height: | Size: 135 KiB |
@ -0,0 +1,66 @@ |
|||||||
|
<!doctype html> |
||||||
|
|
||||||
|
<html lang="en"> |
||||||
|
|
||||||
|
<head> |
||||||
|
|
||||||
|
<!-- Required meta tags --> |
||||||
|
|
||||||
|
<meta charset="utf-8"> |
||||||
|
|
||||||
|
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no"> |
||||||
|
|
||||||
|
<link rel="stylesheet" href="assets/css/styling.css" /> |
||||||
|
|
||||||
|
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap@4.0.0/dist/css/bootstrap.min.css" integrity="sha384-Gn5384xqQ1aoWXA+058RXPxPg6fy4IWvTNh0E263XmFcJlSAwiGgFAW/dAiS6JXm" crossorigin="anonymous"> |
||||||
|
|
||||||
|
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootswatch@5.1.3/dist/vapor/bootstrap.min.css"> |
||||||
|
|
||||||
|
<title> |
||||||
|
|
||||||
|
Shinobi Countdown Timer |
||||||
|
|
||||||
|
</title> |
||||||
|
|
||||||
|
</head> |
||||||
|
|
||||||
|
<body> |
||||||
|
|
||||||
|
<br><br> |
||||||
|
|
||||||
|
<h1 class="main-heading">shinobi countdown timers |
||||||
|
|
||||||
|
</h1> |
||||||
|
|
||||||
|
<div class="modes"> |
||||||
|
|
||||||
|
<a class="mode" href="#" data-time="300">5x situation</a> |
||||||
|
|
||||||
|
<a class="mode" href="#" data-time="600">10x everything</a> |
||||||
|
|
||||||
|
<a class="mode" href="#" data-time="1200">20x system</a> |
||||||
|
|
||||||
|
|
||||||
|
</div> |
||||||
|
|
||||||
|
<div class="get-started" style="display:none;"> |
||||||
|
|
||||||
|
</div> |
||||||
|
|
||||||
|
<main> |
||||||
|
|
||||||
|
<div class="pomodoro"> |
||||||
|
|
||||||
|
<h1 class="pomodoro__time"></h1> |
||||||
|
|
||||||
|
</div> |
||||||
|
|
||||||
|
</main> |
||||||
|
|
||||||
|
<audio src="assets/sounds/alarm.mp3"></audio> |
||||||
|
|
||||||
|
<script src="assets/countdown.js"></script> |
||||||
|
|
||||||
|
</body> |
||||||
|
|
||||||
|
</html> |
@ -0,0 +1,50 @@ |
|||||||
|
# get-ready |
||||||
|
|
||||||
|
Get Ready is a free coming soon responsive HTML5 template that fits across multiple screen sizes. |
||||||
|
|
||||||
|
<img src="cover.png" /> |
||||||
|
|
||||||
|
This type of website is a great option for connecting your future customers with the awesome project you’re going to launch. The burger menu on the top-right corner comes with a full-width drawer navigation on-click. Moreover, the background slider makes the site more enthralling alongside the countdown timer. And, email subscription, as well as social media icons, allow users to connect more efficiently. |
||||||
|
|
||||||
|
## Features |
||||||
|
|
||||||
|
Bootstrap Template |
||||||
|
Burger Menu |
||||||
|
Drawer Navigation |
||||||
|
Engaging Animtion |
||||||
|
Countdown Timer |
||||||
|
Email Subscription |
||||||
|
Social Media Icons |
||||||
|
Font Awesome |
||||||
|
Background Slider |
||||||
|
Fully Responsive |
||||||
|
|
||||||
|
## In the box |
||||||
|
|
||||||
|
1 HTML File |
||||||
|
4 CSS Files |
||||||
|
7 Javascript Files |
||||||
|
Slider Images |
||||||
|
|
||||||
|
## Credits |
||||||
|
|
||||||
|
Bootstrap v3.3.6 |
||||||
|
jQuery v2.2.3 |
||||||
|
FontAwesome 4.7.0 |
||||||
|
Vegas |
||||||
|
themewagon.com/themes/free-coming-soon-responsive-html5-template/ |
||||||
|
|
||||||
|
## Conclusion |
||||||
|
|
||||||
|
ThemeWagon offers you +300 free HTML5 templates to kickstart your project with ease and comfort. Let’s create a responsive website painlessly with a free bootstrap template. Furthermore, our quality checked section is ready to take your website to a whole new level of elegance with innovative design and incomparable functionality. |
||||||
|
|
||||||
|
## See demo |
||||||
|
|
||||||
|
go play with the app. |
||||||
|
|
||||||
|
<a href="index.html"> |
||||||
|
|
||||||
|
Demo |
||||||
|
|
||||||
|
|
||||||
|
</a> |
Loading…
Reference in new issue