Browse Source

automated terminal push

production
Software Shinobi 7 months ago
parent
commit
1b26e93f62
  1. 8
      Dockerfile
  2. 75
      Jenkinsfile
  3. 42
      assets/countdown.js
  4. 9
      assets/css/.recycle/style.css.map
  5. 171
      assets/css/.recycle/style.scss
  6. 133
      assets/css/styling.css
  7. 1
      assets/question.svg
  8. BIN
      assets/sounds/alarm.mp3
  9. BIN
      assets/sounds/short-alarm-clock-sound.mp3
  10. 0
      cascade.bash
  11. 19
      compose.bash
  12. 20
      compose.yaml
  13. BIN
      cover.png
  14. 66
      index.html
  15. 50
      readme.md

8
Dockerfile

@ -0,0 +1,8 @@
FROM nginx:latest
##USER www-data
WORKDIR /usr/share/nginx/html
COPY --chown=www-data:www-data --chmod=755 . .

75
Jenkinsfile vendored

@ -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'
}
}
}
}}

42
assets/countdown.js

@ -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;
}

9
assets/css/.recycle/style.css.map

@ -0,0 +1,9 @@
{
"version": 3,
"mappings": "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",
"sources": [
"../style.scss"
],
"names": [],
"file": "style.css"
}

171
assets/css/.recycle/style.scss

@ -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; }
}

133
assets/css/styling.css

@ -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 */

1
assets/question.svg

@ -0,0 +1 @@
<?xml version="1.0" ?><svg viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title/><path d="M12,17a1,1,0,0,1-1-1v-.21a4.7,4.7,0,0,1,2.75-4.19A4,4,0,0,0,12,4h0A4,4,0,0,0,8,8,1,1,0,0,1,6,8a6,6,0,0,1,6-6h0a6.08,6.08,0,0,1,6,6,6,6,0,0,1-3.37,5.39A2.73,2.73,0,0,0,13,15.79V16A1,1,0,0,1,12,17Z" fill="white"/><circle cx="12" cy="20" fill="white" r="1"/></svg>

After

Width:  |  Height:  |  Size: 360 B

BIN
assets/sounds/alarm.mp3

Binary file not shown.

BIN
assets/sounds/short-alarm-clock-sound.mp3

Binary file not shown.

0
cascade.bash

19
compose.bash

@ -0,0 +1,19 @@
#!/bin/bash
##
reset
clear
##
set -e
set -x
##
docker compose down --remove-orphans
docker compose up --build -d

20
compose.yaml

@ -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"

BIN
cover.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 135 KiB

66
index.html

@ -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>

50
readme.md

@ -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…
Cancel
Save