found it
This commit is contained in:
commit
f126272d75
BIN
0life-web-main.zip
Normal file
BIN
0life-web-main.zip
Normal file
Binary file not shown.
19
50x.html
Normal file
19
50x.html
Normal file
@ -0,0 +1,19 @@
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<title>Error</title>
|
||||
<style>
|
||||
html { color-scheme: light dark; }
|
||||
body { width: 35em; margin: 0 auto;
|
||||
font-family: Tahoma, Verdana, Arial, sans-serif; }
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<h1>An error occurred.</h1>
|
||||
<p>Sorry, the page you are looking for is currently unavailable.<br/>
|
||||
Please try again later.</p>
|
||||
<p>If you are the system administrator of this resource then you should check
|
||||
the error log for details.</p>
|
||||
<p><em>Faithfully yours, nginx.</em></p>
|
||||
</body>
|
||||
</html>
|
||||
33
css/card.css
Normal file
33
css/card.css
Normal file
@ -0,0 +1,33 @@
|
||||
/*
|
||||
.card {
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
display: flex;
|
||||
overflow: hidden;
|
||||
/* position: relative; *//*
|
||||
z-index: 1;
|
||||
background-image: url(../img/planeta.jpg);
|
||||
left: 0px;
|
||||
top: 0px;
|
||||
background-size: 100%;
|
||||
background-position: 0% 0%;
|
||||
opacity: 0.6;
|
||||
position: absolute;
|
||||
/* animation: pan-image 15s linear infinite; *//*
|
||||
}
|
||||
*/
|
||||
/*
|
||||
.card > .card-content {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
align-items: center;
|
||||
justify-content: flex-end;
|
||||
gap: 4rem;
|
||||
position: relative;
|
||||
z-index: 10;
|
||||
margin: 0rem;
|
||||
padding-bottom: 6rem;
|
||||
border-radius: 0.6rem;
|
||||
flex-grow: 1;
|
||||
}
|
||||
|
||||
15
css/doc.css
Normal file
15
css/doc.css
Normal file
@ -0,0 +1,15 @@
|
||||
.nav > #doc {
|
||||
background-color: rgb(var(--primary-rgb));
|
||||
border-color: rgb(var(--secondary-rgb));
|
||||
flex-grow: 4;
|
||||
width: 90%;
|
||||
border-right-width: 0px;
|
||||
font-size: 140%;
|
||||
}
|
||||
|
||||
|
||||
.nav > #doc:hover {
|
||||
flex-grow: 5;
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
14
css/interview.css
Normal file
14
css/interview.css
Normal file
@ -0,0 +1,14 @@
|
||||
.nav > #interview {
|
||||
background-color: rgb(var(--primary-rgb));
|
||||
border-color: rgb(var(--secondary-rgb));
|
||||
flex-grow: 4;
|
||||
width: 90%;
|
||||
border-right-width: 0px;
|
||||
font-size: 140%;
|
||||
}
|
||||
|
||||
.nav > #interview:hover {
|
||||
flex-grow: 5;
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
147
css/life.css
Normal file
147
css/life.css
Normal file
@ -0,0 +1,147 @@
|
||||
/* NAV */
|
||||
|
||||
.nav > #life {
|
||||
background-color: rgb(var(--primary-rgb));
|
||||
border-color: rgb(var(--secondary-rgb));
|
||||
flex-grow: 4;
|
||||
width: 90%;
|
||||
border-right-width: 0px;
|
||||
font-size: 140%;
|
||||
}
|
||||
|
||||
.nav > #life:hover {
|
||||
flex-grow: 5;
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
|
||||
/* DOCS */
|
||||
|
||||
.content > #Doc{
|
||||
background-color: rgb(var(--background-rgb));
|
||||
background-image: url(../img/sky.jpeg);
|
||||
background-size: cover;
|
||||
height: 100vh;
|
||||
}
|
||||
|
||||
.content > #Doc > .fade {
|
||||
background-image: radial-gradient(rgba(0,0,0,0) 50%, black);
|
||||
height: 100%;
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
.content > #Doc > .fade > .star {
|
||||
background-image: url(../img/star.png);
|
||||
background-size: cover;
|
||||
|
||||
width: 100px; /* potřeba udělat relativni vůči stránce */
|
||||
height: 100px;
|
||||
position: absolute;
|
||||
}
|
||||
|
||||
#Doc > .fade > #phrack{
|
||||
margin-top: 10vh;
|
||||
margin-left: 40vw;
|
||||
}
|
||||
|
||||
#Doc > .fade > #Secrets{
|
||||
margin-top: 30vh;
|
||||
margin-left: 15vw;
|
||||
}
|
||||
|
||||
#Doc > .fade > #HTB{
|
||||
margin-top: 40vh;
|
||||
margin-left: 65vw;
|
||||
}
|
||||
|
||||
#Doc > .fade > #bin{
|
||||
margin-top: 60vh;
|
||||
margin-left: 20vw;
|
||||
}
|
||||
|
||||
#Doc > .fade > #archive{
|
||||
margin-top: 70vh;
|
||||
margin-left: 25vw;
|
||||
}
|
||||
|
||||
#Doc > .fade > #fingerprint{
|
||||
margin-top: 80vh;
|
||||
margin-left: 55vw;
|
||||
}
|
||||
|
||||
|
||||
/* TERMINAL */
|
||||
|
||||
.content > #terminal {
|
||||
background-color: rgb(var(--background-rgb));
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
justify-items: center;
|
||||
flex-wrap: wrap;
|
||||
}
|
||||
|
||||
.content > #terminal > .block {
|
||||
background-color: rgb(var(--secondary-background-rgb));
|
||||
margin: 20px;
|
||||
overflow: auto;
|
||||
height: 100vh;
|
||||
|
||||
resize: both;
|
||||
width: 100%;
|
||||
overflow: auto;
|
||||
|
||||
border-style: solid;
|
||||
border-width: 15px;
|
||||
border-color: rgb(var(--secondary-rgb));
|
||||
border-radius: 15px;
|
||||
|
||||
text-align: left;
|
||||
|
||||
justify-content: center;
|
||||
}
|
||||
|
||||
.content > #terminal > .block > p {
|
||||
color: rgb(var(--detail-rgb));
|
||||
margin: 10px;
|
||||
font-family: "Source Code Pro", monospace;
|
||||
}
|
||||
|
||||
.content > #terminal > .block > p > b{
|
||||
color: rgb(var(--primary-rgb));
|
||||
|
||||
}
|
||||
|
||||
.content > #terminal > .block > .neofetch {
|
||||
display: flex;
|
||||
flex-wrap: wrap;
|
||||
}
|
||||
|
||||
.neofetch > .logo {
|
||||
white-space: pre;
|
||||
color: rgb(var(--primary-rgb));
|
||||
margin: 10px;
|
||||
font-family: "Source Code Pro", monospace;
|
||||
font-weight: bold;
|
||||
width: auto;
|
||||
height: auto;
|
||||
}
|
||||
|
||||
.neofetch > .text {
|
||||
color: rgb(var(--detail-rgb));
|
||||
margin: 10px;
|
||||
font-family: "Source Code Pro", monospace;
|
||||
width: auto;
|
||||
height: auto;
|
||||
}
|
||||
|
||||
.neofetch > .text > b {
|
||||
color: rgb(var(--primary-rgb));
|
||||
font-family: "Source Code Pro", monospace;
|
||||
}
|
||||
|
||||
#terminal > .block > table {
|
||||
color: rgb(var(--detail-rgb));
|
||||
margin: 10px;
|
||||
}
|
||||
|
||||
|
||||
14
css/login.css
Normal file
14
css/login.css
Normal file
@ -0,0 +1,14 @@
|
||||
.nav > #login {
|
||||
background-color: rgb(var(--primary-rgb));
|
||||
border-color: rgb(var(--secondary-rgb));
|
||||
flex-grow: 4;
|
||||
width: 90%;
|
||||
border-right-width: 0px;
|
||||
font-size: 140%;
|
||||
}
|
||||
|
||||
.nav > #login:hover {
|
||||
flex-grow: 5;
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
191
css/main.css
Normal file
191
css/main.css
Normal file
@ -0,0 +1,191 @@
|
||||
:root {
|
||||
--background-rgb: 0 0 0;
|
||||
--secondary-background-rgb: 60 60 60;
|
||||
|
||||
|
||||
/*--primary-rgb: 0 158 0; /* green */
|
||||
--primary-rgb: 33 150 243; /* blue */
|
||||
|
||||
/*--secondary-rgb: 0 85 102; /* petroley-blue */
|
||||
/*--secondary-rgb: 59 83 102; /* dark-blue */
|
||||
--secondary-rgb: 22 50 102; /* darker-blue */
|
||||
|
||||
--detail-rgb: 255 255 255; /* white */
|
||||
|
||||
}
|
||||
|
||||
body {
|
||||
background-color: rgb(var(--background-rgb));
|
||||
margin: 0;
|
||||
}
|
||||
|
||||
|
||||
/* Navigation */
|
||||
|
||||
.nav {
|
||||
position: fixed;
|
||||
left: auto;
|
||||
right: 0px;
|
||||
height: 50%;
|
||||
width: 10%;
|
||||
z-index: 7;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
justify-content: space-evenly;
|
||||
align-items: flex-end;
|
||||
}
|
||||
|
||||
.nav > .nav-gap {
|
||||
flex-grow: 1;
|
||||
background-color: none;
|
||||
}
|
||||
|
||||
.nav > .nav-flag {
|
||||
background-color: rgb(var(--detail-rgb));
|
||||
border-color: rgb(var(--detail-rgb));
|
||||
border-top-left-radius: 15px;
|
||||
border-bottom-left-radius: 15px;
|
||||
border-width: 5px;
|
||||
border-style:solid;
|
||||
|
||||
flex-grow: 2;
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
align-items: center;
|
||||
|
||||
color: black;
|
||||
text-decoration: none;
|
||||
width: 70%;
|
||||
font-family: "Source Code Pro", monospace;
|
||||
font-size: fill;
|
||||
|
||||
transition:
|
||||
border-color 0.3s,
|
||||
border-width 0.3s,
|
||||
border-right-width 0.3s,
|
||||
flex-grow 0.3s,
|
||||
font-size 0.3s,
|
||||
width 0.3s;
|
||||
}
|
||||
|
||||
.nav > .nav-flag:hover {
|
||||
border-color: rgb(var(--secondary-rgb));
|
||||
border-width: 10px;
|
||||
border-right-width: 0px;
|
||||
flex-grow: 5;
|
||||
font-size: 140%;
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
|
||||
|
||||
/* Content */
|
||||
|
||||
.content {
|
||||
z-index: 1;
|
||||
overflow: auto;
|
||||
position: relative;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
justify-content: flex-start;
|
||||
scroll-snap-align: x mandatory;
|
||||
}
|
||||
|
||||
.content > .card {
|
||||
display: flex;
|
||||
position: relative;
|
||||
flex-basis: 100vh;
|
||||
scroll-snap-align: center;
|
||||
}
|
||||
|
||||
.content:after,
|
||||
.content:before {
|
||||
content: "";
|
||||
height: 5px;
|
||||
position: absolute;
|
||||
left: 50%;
|
||||
translate: -50% 0%;
|
||||
background-color: rgb(var(--primary-rgb));
|
||||
z-index: 5;
|
||||
}
|
||||
|
||||
.content::before {
|
||||
width: 15%;
|
||||
top: 0rem;
|
||||
border-bottom-left-radius: 1rem;
|
||||
border-bottom-right-radius: 1rem;
|
||||
}
|
||||
|
||||
.content:after {
|
||||
width: 25%;
|
||||
bottom: 0rem;
|
||||
border-top-left-radius: 1rem;
|
||||
border-top-right-radius: 1rem;
|
||||
}
|
||||
|
||||
|
||||
/* Life */
|
||||
|
||||
.content > #life {
|
||||
top: 0px;
|
||||
left: 0px;
|
||||
flex-direction: column;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
flex-grow: 1;
|
||||
padding: 1rem;
|
||||
z-index: 2;
|
||||
background: linear-gradient(rgba(255, 0, 0, 0)40%, rgb(var(--primary-rgb)));
|
||||
}
|
||||
|
||||
.content > #life > #planet {
|
||||
position: absolute;
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
background-image: url(../img/planeta.png);
|
||||
background-size: cover;
|
||||
z-index: 1;
|
||||
}
|
||||
|
||||
#life > .magic,
|
||||
#life > .link {
|
||||
font-family: "Source Code Pro", monospace;
|
||||
color: rgb(var(--detail-rgb));
|
||||
text-align: center;
|
||||
text-transform: uppercase;
|
||||
z-index: 7;
|
||||
}
|
||||
|
||||
#life > .magic {
|
||||
position: relative;
|
||||
font-size: 4.25rem;
|
||||
font-weight: 400;
|
||||
}
|
||||
|
||||
#life > .magic:before,
|
||||
#life > .magic:after {
|
||||
content: "";
|
||||
height: 4px;
|
||||
width: 4px;
|
||||
position: absolute;
|
||||
border: 2px solid rgb(var(--detail-rgb));
|
||||
border-radius: 2px;
|
||||
}
|
||||
|
||||
#life > .magic:before {
|
||||
top: 45%;
|
||||
right: -1.5rem;
|
||||
}
|
||||
|
||||
#life > .magic:after {
|
||||
top: 45%;
|
||||
left: -1.5rem;
|
||||
}
|
||||
|
||||
#life > .link {
|
||||
font-size: 1.5rem;
|
||||
text-shadow: 0px 0px 0.5rem rgb(var(--detail-rgb));
|
||||
font-weight: 400;
|
||||
letter-spacing: 0.3rem;
|
||||
text-decoration: none;
|
||||
}
|
||||
14
css/reborn.css
Normal file
14
css/reborn.css
Normal file
@ -0,0 +1,14 @@
|
||||
.nav > #reborn {
|
||||
background-color: rgb(var(--primary-rgb));
|
||||
border-color: rgb(var(--secondary-rgb));
|
||||
flex-grow: 4;
|
||||
width: 90%;
|
||||
border-right-width: 0px;
|
||||
font-size: 140%;
|
||||
}
|
||||
|
||||
.nav > #reborn:hover {
|
||||
flex-grow: 5;
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
310
css/screen.css
Normal file
310
css/screen.css
Normal file
@ -0,0 +1,310 @@
|
||||
/*
|
||||
.screen {
|
||||
width: 100vw;
|
||||
height: 100vh;
|
||||
display: flex;
|
||||
border: 3px solid rgb(var(--primary-rgb) / 80%);
|
||||
/*aspect-ratio: 10 / 16;*//*
|
||||
border-radius: 1rem;
|
||||
background-color: rgb(var(--primary-rgb) / 15%);
|
||||
overflow: hidden;
|
||||
position: relative;
|
||||
z-index: 10;
|
||||
}
|
||||
*/9/*
|
||||
.screen:after,
|
||||
.screen:before {
|
||||
content: "";
|
||||
height: 5px;
|
||||
position: absolute;
|
||||
z-index: 4;
|
||||
left: 50%;
|
||||
translate: -50% 0%;
|
||||
background-color: white;
|
||||
}
|
||||
|
||||
.screen:before {
|
||||
width: 15%;
|
||||
top: 0rem;
|
||||
border-bottom-left-radius: 1rem;
|
||||
border-bottom-right-radius: 1rem;
|
||||
}
|
||||
|
||||
.screen:after {
|
||||
width: 25%;
|
||||
bottom: 0rem;
|
||||
border-top-left-radius: 1rem;
|
||||
border-top-right-radius: 1rem;
|
||||
}*/
|
||||
|
||||
@keyframes pan-overlay {
|
||||
from {
|
||||
background-position: 0% 0%;
|
||||
}
|
||||
|
||||
to {
|
||||
background-position: 0% -100%;
|
||||
}
|
||||
}
|
||||
/*
|
||||
.screen-overlay {
|
||||
background: linear-gradient(
|
||||
rgb(var(--primary-rgb) / 0.15),
|
||||
rgb(var(--primary-rgb) / 0.15) 3px,
|
||||
transparent 3px,
|
||||
transparent 9px
|
||||
);
|
||||
background-size: 100% 9px;
|
||||
height: 100%;
|
||||
width: 100%;
|
||||
animation: pan-overlay 22s infinite linear;
|
||||
position: absolute;
|
||||
z-index: 2;
|
||||
left: 0px;
|
||||
top: 0px;
|
||||
}*/
|
||||
|
||||
@keyframes pan-image {
|
||||
0% {
|
||||
background-position: 36% 42%;
|
||||
background-size: 200%;
|
||||
}
|
||||
|
||||
20% {
|
||||
background-position: 30% 35%;
|
||||
background-size: 200%;
|
||||
}
|
||||
|
||||
20.0001% { /* -- View 2 -- */
|
||||
background-position: 60% 85%;
|
||||
background-size: 500%;
|
||||
}
|
||||
|
||||
40% {
|
||||
background-position: 49% 81%;
|
||||
background-size: 500%;
|
||||
}
|
||||
|
||||
40.0001% { /* -- View 3 -- */
|
||||
background-position: 80% 42%;
|
||||
background-size: 300%;
|
||||
}
|
||||
|
||||
60% {
|
||||
background-position: 84% 33%;
|
||||
background-size: 300%;
|
||||
}
|
||||
|
||||
60.0001% { /* -- View 4 -- */
|
||||
background-position: 0% 0%;
|
||||
background-size: 300%;
|
||||
}
|
||||
|
||||
80% {
|
||||
background-position: 15% 4%;
|
||||
background-size: 300%;
|
||||
}
|
||||
|
||||
80.0001% { /* -- View 5 -- */
|
||||
background-position: 80% 10%;
|
||||
background-size: 300%;
|
||||
}
|
||||
|
||||
100% {
|
||||
background-position: 72% 14%;
|
||||
background-size: 300%;
|
||||
}
|
||||
}
|
||||
/*
|
||||
.screen > .screen-image {
|
||||
background-image: url("https://images.unsplash.com/photo-1515266591878-f93e32bc5937?ixlib=rb-4.0.3&ixid=MnwxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8&auto=format&fit=crop&w=2574&q=80");
|
||||
height: 100%;
|
||||
width: 100%;
|
||||
position: absolute;
|
||||
z-index: 1;
|
||||
left: 0px;
|
||||
top: 0px;
|
||||
background-size: 300%;
|
||||
background-position: 0% 0%;
|
||||
filter: sepia(100%) hue-rotate(160deg);
|
||||
opacity: 0.6;
|
||||
animation: pan-image 15s linear infinite;
|
||||
}
|
||||
*//*
|
||||
.screen > .screen-content {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
align-items: center;
|
||||
justify-content: flex-end;
|
||||
flex-grow: 1;
|
||||
gap: 4rem;
|
||||
position: relative;
|
||||
z-index: 3;
|
||||
margin: 1rem;
|
||||
padding-bottom: 6rem;
|
||||
border: 1px solid rgb(var(--primary-rgb) / 50%);
|
||||
border-radius: 0.6rem;
|
||||
}*/
|
||||
|
||||
.screen > .screen-content > .screen-icon {
|
||||
color: white;
|
||||
font-size: 4rem;
|
||||
text-shadow: 0px 0px 0.5rem white;
|
||||
}
|
||||
|
||||
.screen > .screen-content > .screen-user{
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
align-items: center;
|
||||
gap: 1rem;
|
||||
position: relative;
|
||||
}
|
||||
|
||||
.screen > .screen-content > .screen-user:before,
|
||||
.screen > .screen-content > .screen-user:after {
|
||||
content: "";
|
||||
position: absolute;
|
||||
top: 0px;
|
||||
background-color: rgb(var(--primary-rgb));
|
||||
border-radius: 1rem;
|
||||
box-shadow: 0px 0px 8px 3px rgb(var(--primary-rgb) / 60%);
|
||||
}
|
||||
|
||||
.screen > .screen-content > .screen-user:before {
|
||||
height: 2px;
|
||||
width: 50px;
|
||||
translate: -20px -1rem;
|
||||
opacity: 0.75;
|
||||
}
|
||||
|
||||
.screen > .screen-content > .screen-user:after {
|
||||
height: 3px;
|
||||
width: 30px;
|
||||
translate: 26px calc(-1rem - 0.5px);
|
||||
}
|
||||
|
||||
.screen > .screen-content > .screen-user > :is(.name, .link) {
|
||||
font-family: "Source Code Pro", monospace;
|
||||
color: white;
|
||||
text-align: center;
|
||||
text-transform: uppercase;
|
||||
}
|
||||
|
||||
.screen > .screen-content > .screen-user > .name {
|
||||
position: relative;
|
||||
font-size: 4.25rem;
|
||||
font-weight: 400;
|
||||
}
|
||||
|
||||
.screen > .screen-content > .screen-user > .name:before,
|
||||
.screen > .screen-content > .screen-user > .name:after {
|
||||
content: "";
|
||||
height: 4px;
|
||||
width: 4px;
|
||||
position: absolute;
|
||||
border: 2px solid white;
|
||||
border-radius: 2px;
|
||||
}
|
||||
|
||||
.screen > .screen-content > .screen-user > .name:before {
|
||||
top: 45%;
|
||||
right: -1.5rem;
|
||||
}
|
||||
|
||||
.screen > .screen-content > .screen-user > .name:after {
|
||||
top: 45%;
|
||||
left: -1.5rem;
|
||||
}
|
||||
|
||||
.screen > .screen-content > .screen-user > .link {
|
||||
opacity: 0.8;
|
||||
font-size: 1.5rem;
|
||||
text-shadow: 0px 0px 0.5rem white;
|
||||
font-weight: 400;
|
||||
letter-spacing: 0.3rem;
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
.screen > .screen-content > .screen-user > .link:is(:hover, :focus) {
|
||||
text-decoration: underline;
|
||||
}
|
||||
|
||||
@media(max-width: 700px) {
|
||||
.screen {
|
||||
scale: 0.6;
|
||||
margin-bottom: 0rem;
|
||||
}
|
||||
}
|
||||
|
||||
/* -- Blob effect --
|
||||
|
||||
@keyframes rotate {
|
||||
from {
|
||||
rotate: 0deg;
|
||||
}
|
||||
|
||||
50% {
|
||||
scale: 1 1.5;
|
||||
}
|
||||
|
||||
to {
|
||||
rotate: 360deg;
|
||||
}
|
||||
}
|
||||
|
||||
*//* -- Links --
|
||||
|
||||
#links {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
gap: 0.5rem;
|
||||
position: absolute;
|
||||
top: 0px;
|
||||
left: 0px;
|
||||
z-index: 10;
|
||||
padding: 1rem;
|
||||
}
|
||||
|
||||
.meta-link {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
gap: 0.5rem;
|
||||
}
|
||||
|
||||
.meta-link > :is(span, a) {
|
||||
font-family: "Rubik", sans-serif;
|
||||
font-size: 0.9rem;
|
||||
color: white;
|
||||
}
|
||||
|
||||
.meta-link > .label {
|
||||
width: 160px;
|
||||
text-align: right;
|
||||
}
|
||||
|
||||
.meta-link > a {
|
||||
text-decoration: none;
|
||||
outline: none;
|
||||
}
|
||||
|
||||
.meta-link > a.source {
|
||||
color: rgb(94, 106, 210);
|
||||
}
|
||||
|
||||
.meta-link > a:is(:hover, :focus) > i {
|
||||
color: white;
|
||||
}
|
||||
|
||||
.meta-link > a.youtube {
|
||||
color: rgb(239, 83, 80);
|
||||
}
|
||||
|
||||
.meta-link > a.youtube > i {
|
||||
padding-top: 0.2rem;
|
||||
}
|
||||
|
||||
.meta-link > a > i {
|
||||
height: 1rem;
|
||||
line-height: 1rem;
|
||||
}
|
||||
|
||||
131
css/style.css
Normal file
131
css/style.css
Normal file
@ -0,0 +1,131 @@
|
||||
body {
|
||||
margin: 0;
|
||||
padding: 15px 20px;
|
||||
min-height: 99%;
|
||||
width: 100%;
|
||||
min-width: 550px;
|
||||
color: #519975;
|
||||
background: #211D1B;
|
||||
font-family: cursor, monospace;
|
||||
overflow-x: hidden;
|
||||
}
|
||||
::selection {
|
||||
color: #211830;
|
||||
background-color: #519975;
|
||||
}
|
||||
::-moz-selection {
|
||||
color: #211830;
|
||||
background-color: #519975;
|
||||
}
|
||||
textarea {
|
||||
left: -1000px;
|
||||
position: absolute;
|
||||
}
|
||||
b {
|
||||
font-weight: bold;
|
||||
text-decoration: underline;
|
||||
}
|
||||
/* Cursor Start */
|
||||
.cursor {
|
||||
font-size: 12px;
|
||||
color: #73ABAD;
|
||||
background-color: #73ABAD;
|
||||
position: relative;
|
||||
opacity: 1;
|
||||
height: 1.5em;
|
||||
width: 10px;
|
||||
max-width: 10px;
|
||||
transform: translateY(4px);
|
||||
overflow: hidden;
|
||||
text-indent: -5px;
|
||||
display: inline-block;
|
||||
text-decoration: blink;
|
||||
animation: blinker 1s linear infinite;
|
||||
}
|
||||
@keyframes blinker {
|
||||
50% {
|
||||
opacity: 0;
|
||||
}
|
||||
}
|
||||
#command {
|
||||
cursor: text;
|
||||
height: 50px;
|
||||
color: #73ABAD;
|
||||
}
|
||||
#liner {
|
||||
line-height: 1.3em;
|
||||
margin-top: -2px;
|
||||
animation: show 0.5s ease forwards;
|
||||
animation-delay: 1.2s;
|
||||
opacity: 0;
|
||||
}
|
||||
#liner::before {
|
||||
color: #519975;
|
||||
content: "visitor@fkcodes.com:~$";
|
||||
}
|
||||
#liner.password::before {
|
||||
content: "Password:";
|
||||
}
|
||||
@keyframes show {
|
||||
from {
|
||||
opacity: 0;
|
||||
}
|
||||
to {
|
||||
opacity: 1;
|
||||
}
|
||||
}
|
||||
/* Cursor End */
|
||||
p {
|
||||
display: block;
|
||||
line-height: 1.3em;
|
||||
margin: 0;
|
||||
overflow: hidden;
|
||||
white-space: nowrap;
|
||||
margin: 0;
|
||||
letter-spacing: 0.05em;
|
||||
animation: typing 0.5s steps(30, end);
|
||||
}
|
||||
.no-animation {
|
||||
animation: typing 0 steps(30, end);
|
||||
}
|
||||
.margin {
|
||||
margin-left: 20px;
|
||||
}
|
||||
@keyframes typing {
|
||||
from {
|
||||
width: 0;
|
||||
}
|
||||
to {
|
||||
width: 100%;
|
||||
}
|
||||
}
|
||||
.index {
|
||||
color: #DCDCCC;
|
||||
}
|
||||
.color2 {
|
||||
color: #B89076;
|
||||
}
|
||||
.command {
|
||||
color: #73ABAD;
|
||||
text-shadow: 0 0 5px #73ABAD;
|
||||
}
|
||||
.error {
|
||||
color: #B89076;
|
||||
}
|
||||
.white {
|
||||
color: #fff;
|
||||
}
|
||||
.inherit,
|
||||
a {
|
||||
color: #9C8394;
|
||||
}
|
||||
a {
|
||||
text-decoration: inherit;
|
||||
}
|
||||
a:hover {
|
||||
background: #73ABAD;
|
||||
color: #211830;
|
||||
}
|
||||
a:focus {
|
||||
outline: 0;
|
||||
}
|
||||
14
css/terminal.css
Normal file
14
css/terminal.css
Normal file
@ -0,0 +1,14 @@
|
||||
.nav > #terminal {
|
||||
background-color: rgb(var(--primary-rgb));
|
||||
border-color: rgb(var(--secondary-rgb));
|
||||
flex-grow: 4;
|
||||
width: 90%;
|
||||
border-right-width: 0px;
|
||||
font-size: 140%;
|
||||
}
|
||||
|
||||
.nav > #terminal:hover {
|
||||
flex-grow: 5;
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
64
doc.html
Normal file
64
doc.html
Normal file
@ -0,0 +1,64 @@
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<meta name="viewport" content="width=device-width", initial-scale="1.0">
|
||||
<title>Life Reborn</title>
|
||||
|
||||
<link rel="icon" type="image/x-icon" href="img/fav.png">
|
||||
<link rel="stylesheet" type="text/css" href="css/main.css">
|
||||
<link rel="stylesheet" type="text/css" href="css/doc.css">
|
||||
|
||||
|
||||
|
||||
</head>
|
||||
<body>
|
||||
|
||||
|
||||
<!-- NAV -->
|
||||
|
||||
<div class="nav">
|
||||
<a class="nav-gap"></a>
|
||||
<a href="index.html" class="nav-flag" id="life">0-LIFE</a>
|
||||
<a class="nav-gap"></a>
|
||||
<a href="reborn.html" class="nav-flag" id="reborn">Reborn</a>
|
||||
<a class="nav-gap"></a>
|
||||
<a href="doc.html" class="nav-flag" id="doc">Docs</a>
|
||||
<a class="nav-gap"></a>
|
||||
<a href="terminal.html" class="nav-flag" id="terminal">Terminal</a>
|
||||
<a class="nav-gap"></a>
|
||||
<a href="interview.html" class="nav-flag" id="interview">Interview</a>
|
||||
<a class="nav-gap"></a>
|
||||
<a href="login.html" class="nav-flag" id="login">Login</a>
|
||||
</div>
|
||||
|
||||
|
||||
<!-- CONTENT OF WEB -->
|
||||
|
||||
<div class="content">
|
||||
<div class="card" id="life">
|
||||
<div class="background" id="planet"></div>
|
||||
<div class="magic" data-value="Documentation">Documentation</div>
|
||||
<a class="link" href="https://youtu.be/dQw4w9WgXcQ">REBORN</a>
|
||||
</div>
|
||||
|
||||
<div class="card" id="Doc">Doc</div>
|
||||
|
||||
<div class="card" id="terminal">WhoAmI</div>
|
||||
|
||||
<div class="card" id="inter">Interview</div>
|
||||
|
||||
<div class="card" id="login">Login</div>
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
|
||||
<!-- SCRIPTS -->
|
||||
|
||||
<script src="js/magic.js"></script>
|
||||
|
||||
</div></body>
|
||||
</html>
|
||||
|
||||
BIN
img/fav.png
Normal file
BIN
img/fav.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 12 KiB |
BIN
img/planeta.jpg
Normal file
BIN
img/planeta.jpg
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 1.8 MiB |
BIN
img/planeta.png
Normal file
BIN
img/planeta.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 11 MiB |
BIN
img/sky.jpeg
Normal file
BIN
img/sky.jpeg
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 91 KiB |
BIN
img/star.jpeg
Normal file
BIN
img/star.jpeg
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 3.8 KiB |
BIN
img/star.png
Normal file
BIN
img/star.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 406 KiB |
150
index.html
Normal file
150
index.html
Normal file
@ -0,0 +1,150 @@
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<meta name="viewport" content="width=device-width", initial-scale="1.0">
|
||||
<title>Life Reborn</title>
|
||||
|
||||
<link rel="icon" type="image/x-icon" href="img/fav.png">
|
||||
<link rel="stylesheet" type="text/css" href="css/main.css">
|
||||
<link rel="stylesheet" type="text/css" href="css/life.css">
|
||||
|
||||
|
||||
|
||||
</head>
|
||||
<body>
|
||||
|
||||
|
||||
<!-- NAV -->
|
||||
|
||||
<div class="nav">
|
||||
<a class="nav-gap"></a>
|
||||
<a href="index.html" class="nav-flag" id="life">0-LIFE</a>
|
||||
<a class="nav-gap"></a>
|
||||
<a href="reborn.html" class="nav-flag" id="reborn">Reborn</a>
|
||||
<a class="nav-gap"></a>
|
||||
<a href="terminal.html" class="nav-flag" id="terminal">Terminal</a>
|
||||
<a class="nav-gap"></a>
|
||||
<a href="doc.html" class="nav-flag" id="doc">Docs</a>
|
||||
<a class="nav-gap"></a>
|
||||
<a href="interview.html" class="nav-flag" id="interview">Interview</a>
|
||||
<a class="nav-gap"></a>
|
||||
<a href="login.html" class="nav-flag" id="login">Login</a>
|
||||
</div>
|
||||
|
||||
|
||||
<!-- CONTENT OF WEB -->
|
||||
|
||||
<div class="content">
|
||||
<div class="card" id="life">
|
||||
<div class="background" id="planet"></div>
|
||||
<div class="magic" data-value="0-LIFE">0-LIFE</div>
|
||||
<a class="link" href="https://youtu.be/dQw4w9WgXcQ">REBORN</a>
|
||||
</div>
|
||||
|
||||
<!-- TERMINAL -->
|
||||
|
||||
<div class="card" id="terminal">
|
||||
<div class="block">
|
||||
<p><b>gest@web ~$</b> whoami</p>
|
||||
<p>R4ND0M</p>
|
||||
<p><b>gest@web ~$</b> neofetch</p>
|
||||
<div class="neofetch">
|
||||
<div class="logo">
|
||||
-`
|
||||
.o+`
|
||||
`ooo/
|
||||
`+oooo:
|
||||
`+oooooo:
|
||||
-+oooooo+:
|
||||
`/:-:++oooo+:
|
||||
`/++++/+++++++:
|
||||
`/++++++++++++++:
|
||||
`/+++ooooooooooooo/`
|
||||
./ooosssso++osssssso+`
|
||||
.oossssso-````/ossssss+`
|
||||
-osssssso. :ssssssso.
|
||||
:osssssss/ osssso+++.
|
||||
/ossssssss/ +ssssooo/-
|
||||
`/ossssso+/:- -:/+osssso+-
|
||||
`+sso+:-` `.-/+oso:
|
||||
`++:. `-/+/
|
||||
.` `/
|
||||
</div><div class="text">
|
||||
<b>gest</b>@<b>web</b><br>
|
||||
--------------- <br>
|
||||
<b>OS</b>: Arch Linux x86_64 <br>
|
||||
<b>Host</b>: HP Pav Gaming Laptop 16-a0900nc <br>
|
||||
<b>Kernel</b>: 6.01.0-19-amd64 <br>
|
||||
<b>Uptime</b>: 37 mins <br>
|
||||
<b>Packages</b>: 1932 (pacman), 45 (nix-default) <br>
|
||||
<b>Shell</b>: bash 5.2.15 <br>
|
||||
<b>Resolution</b>: 1920x1080 <br>
|
||||
<b>DE</b>: Xfce 4.18 <br>
|
||||
<b>WM</b>: Xfwm4 <br>
|
||||
<b>WM Theme</b>: Default <br>
|
||||
<b>Theme</b>: Peppermint-10-Red-Dark [GTK2/3] <br>
|
||||
<b>Icons</b>: Pepirus [GTK2], Adwaita [GTK3] <br>
|
||||
<b>Terminal</b>: xfce4-terminal <br>
|
||||
<b>Terminal Font</b>: Source Code Pro 10 <br>
|
||||
<b>CPU</b>: Intel i5-10300H (8) @ 4.500GHz <br>
|
||||
<b>GPU</b>: NVIDIA 01:00.0 NVIDIA Corporation TU117M <br>
|
||||
<b>GPU</b>: Intel CometLake-H GT2 [UHD Graphics] <br>
|
||||
<b>Memory</b>: 4677MiB / 15780MiB <br>
|
||||
|
||||
</div></div>
|
||||
|
||||
<p><b>gest@web ~$</b> cd Documents/</p>
|
||||
<p><b>gest@web ~/Documents$</b> ls -la</p>
|
||||
<table clas="table">
|
||||
<tr><td>total 16720</td></tr>
|
||||
<tr><td>drwxr-xr-x</td><td>12</td><td>R4ND0M</td><td>R4ND0M</td><td>4096</td><td>7.</td><td>kvě</td><td>08.24</td><td>.</td></tr>
|
||||
<tr><td>drwxr-xr-x</td><td>30</td><td>R4ND0M</td><td>R4ND0M</td><td>4096</td><td>15.</td><td>kvě</td><td>19.31</td><td>..</td></tr>
|
||||
<tr><td>drwxrwxrwx</td><td>8</td><td>R4ND0M</td><td>R4ND0M</td><td>4096</td><td>15.</td><td>kvě</td><td>00.05</td><td>0life</td></tr>
|
||||
<tr><td>-rwxrwxrwx</td><td>1</td><td>B1t</td><td>R4ND0M</td><td>12067</td><td>10.</td><td>led</td><td>2022</td><td>bye.md</td></tr>
|
||||
<tr><td>-rwxrwxrwx</td><td>1</td><td>R4ND0M</td><td>R4ND0M</td><td>18090</td><td>6.</td><td>kvě</td><td>2021</td><td>logs.xlsx</td></tr>
|
||||
<tr><td>drwxr-xr-x</td><td>2</td><td>R4ND0M</td><td>R4ND0M</td><td>4096</td><td>7.</td><td>bře</td><td>15.46</td><td>Conti-fuck</td></tr>
|
||||
<tr><td>drwxrwxrwx</td><td>3</td><td>R4ND0M</td><td>R4ND0M</td><td>4096</td><td>26.</td><td>úno</td><td>13.03</td><td>thx-bro</td></tr>
|
||||
<tr><td>drwxr-xr-x</td><td>2</td><td>R4ND0M</td><td>R4ND0M</td><td>4096</td><td>5.</td><td>bře</td><td>10.22</td><td>Nix</td></tr>
|
||||
<tr><td>-rwxr--r--</td><td>1</td><td>R4ND0M</td><td>R4ND0M</td><td>15844544</td><td>7.</td><td>kvě</td><td>08.24</td><td>nvim.appimage</td></tr>
|
||||
<tr><td>-rwxrwxrwx</td><td>1</td><td>R4ND0M</td><td>R4ND0M</td><td>342</td><td>3.</td><td>pro</td><td>21.00</td><td>poznamky.txt.txt</td></tr>
|
||||
<tr><td>-rwxrwxrwx</td><td>1</td><td>R4ND0M</td><td>R4ND0M</td><td>9900</td><td>15.</td><td>lis</td><td>22.24</td><td>'WaterZebraBakery(20).txt'</td></tr>
|
||||
</table>
|
||||
|
||||
<p><b>gest@web ~/Documents$</b> cd 0life/</p>
|
||||
<p>bash: cd: 0life. Permission denied. Type "help" for more information</p>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- DOCS -->
|
||||
|
||||
<div class="card" id="Doc">
|
||||
<div class="fade">
|
||||
<a href="http://www.phrack.org/" class="star" id="phrack"></a>
|
||||
<a href="https://ddosecrets.com/wiki/Distributed_Denial_of_Secrets" class="star" id="Secrets"></a>
|
||||
<a href="https://academy.hackthebox.com/" class="star" id="HTB"></a>
|
||||
<a href="https://pastebin.com" class="star" id="bin"></a>
|
||||
<a href="https://archive.org/" class="star" id="archive"></a>
|
||||
<a href="https://amiunique.org/fp" class="star" id="fingerprint"></a>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- INTERVIEW -->
|
||||
|
||||
<div class="card" id="inter">Interview</div>
|
||||
|
||||
<div class="card" id="login">Login</div>
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
|
||||
<!-- SCRIPTS -->
|
||||
|
||||
<script src="js/magic.js"></script>
|
||||
|
||||
</div></body>
|
||||
</html>
|
||||
|
||||
64
interview.html
Normal file
64
interview.html
Normal file
@ -0,0 +1,64 @@
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<meta name="viewport" content="width=device-width", initial-scale="1.0">
|
||||
<title>Life Reborn</title>
|
||||
|
||||
<link rel="icon" type="image/x-icon" href="img/fav.png">
|
||||
<link rel="stylesheet" type="text/css" href="css/main.css">
|
||||
<link rel="stylesheet" type="text/css" href="css/interview.css">
|
||||
|
||||
|
||||
|
||||
</head>
|
||||
<body>
|
||||
|
||||
|
||||
<!-- NAV -->
|
||||
|
||||
<div class="nav">
|
||||
<a class="nav-gap"></a>
|
||||
<a href="index.html" class="nav-flag" id="life">0-LIFE</a>
|
||||
<a class="nav-gap"></a>
|
||||
<a href="reborn.html" class="nav-flag" id="reborn">Reborn</a>
|
||||
<a class="nav-gap"></a>
|
||||
<a href="doc.html" class="nav-flag" id="doc">Docs</a>
|
||||
<a class="nav-gap"></a>
|
||||
<a href="terminal.html" class="nav-flag" id="terminal">Terminal</a>
|
||||
<a class="nav-gap"></a>
|
||||
<a href="interview.html" class="nav-flag" id="interview">Interview</a>
|
||||
<a class="nav-gap"></a>
|
||||
<a href="login.html" class="nav-flag" id="login">Login</a>
|
||||
</div>
|
||||
|
||||
|
||||
<!-- CONTENT OF WEB -->
|
||||
|
||||
<div class="content">
|
||||
<div class="card" id="life">
|
||||
<div class="background" id="planet"></div>
|
||||
<div class="magic" data-value="Interview">Interview</div>
|
||||
<a class="link" href="https://youtu.be/dQw4w9WgXcQ">REBORN</a>
|
||||
</div>
|
||||
|
||||
<div class="card" id="Doc">Doc</div>
|
||||
|
||||
<div class="card" id="terminal">WhoAmI</div>
|
||||
|
||||
<div class="card" id="inter">Interview</div>
|
||||
|
||||
<div class="card" id="login">Login</div>
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
|
||||
<!-- SCRIPTS -->
|
||||
|
||||
<script src="js/magic.js"></script>
|
||||
|
||||
</div></body>
|
||||
</html>
|
||||
|
||||
38
js/caret.js
Normal file
38
js/caret.js
Normal file
@ -0,0 +1,38 @@
|
||||
function $(elid) {
|
||||
return document.getElementById(elid);
|
||||
}
|
||||
|
||||
var cursor;
|
||||
window.onload = init;
|
||||
|
||||
function init() {
|
||||
cursor = $("cursor");
|
||||
cursor.style.left = "0px";
|
||||
}
|
||||
|
||||
function nl2br(txt) {
|
||||
return txt.replace(/\n/g, '');
|
||||
}
|
||||
|
||||
function typeIt(from, e) {
|
||||
e = e || window.event;
|
||||
var w = $("typer");
|
||||
var tw = from.value;
|
||||
if (!pw){
|
||||
w.innerHTML = nl2br(tw);
|
||||
}
|
||||
}
|
||||
|
||||
function moveIt(count, e) {
|
||||
e = e || window.event;
|
||||
var keycode = e.keyCode || e.which;
|
||||
if (keycode == 37 && parseInt(cursor.style.left) >= (0 - ((count - 1) * 10))) {
|
||||
cursor.style.left = parseInt(cursor.style.left) - 10 + "px";
|
||||
} else if (keycode == 39 && (parseInt(cursor.style.left) + 10) <= 0) {
|
||||
cursor.style.left = parseInt(cursor.style.left) + 10 + "px";
|
||||
}
|
||||
}
|
||||
|
||||
function alert(txt) {
|
||||
console.log(txt);
|
||||
}
|
||||
87
js/commands.js
Normal file
87
js/commands.js
Normal file
@ -0,0 +1,87 @@
|
||||
var youtube = "https://www.youtube.com/fknight/";
|
||||
var twitter = "https://www.twitter.com/forrestpknight/";
|
||||
var password = "fkcodes";
|
||||
var linkedin = "https://www.linkedin.com/in/forrestpknight/";
|
||||
var instagram = "https://www.instagram.com/forrestpknight/";
|
||||
var github = "https://github.com/forrestknight/";
|
||||
var email = 'mailto:forrest@fkcodes.com';
|
||||
|
||||
whois = [
|
||||
"<br>",
|
||||
"Hey, I'm Forrest!👋",
|
||||
"I'm a software developer and content creator, who builds engaging websites like this one",
|
||||
"and makes YouTube videos about computer science & software engineering.",
|
||||
"After graduating with a Bachelor's in Computer Science, I worked professionally",
|
||||
"as a software engineer building enterprise web applications for Fortune 500 companies.",
|
||||
"While doing all of that, I documentned my coding journey on YouTube - trying to enlighten",
|
||||
"the next generation of developers and help them navigate the crazy world that is software", "development & computer science.",
|
||||
"Before I knew it, that online presence took on a life of its own, to the point where I knew",
|
||||
"I needed to make the jump from software engineering to full time content creator, and it's",
|
||||
"the best decision I ever made.",
|
||||
"Now, I make videos about creating cool shit like this terminal website, and hosting my",
|
||||
"podcast 'Decoded w/ Forrest Knight.' What most people don't know, and will only know",
|
||||
"because they're reading this right now, is that I also run a creative & media agency.",
|
||||
"We partner with clients to drive their business outcomes using modern marketing strategies.",
|
||||
"<br>"
|
||||
];
|
||||
|
||||
whoami = [
|
||||
"<br>",
|
||||
"The paradox of “Who am I?” is: we never know, but, we constantly find out.",
|
||||
"<br>"
|
||||
];
|
||||
|
||||
social = [
|
||||
"<br>",
|
||||
'youtube <a href="' + youtube + '" target="_blank">youtube/fknight' + "</a>",
|
||||
'twitter <a href="' + twitter + '" target="_blank">twitter/forrestpknight' + '</a>',
|
||||
'linkedin <a href="' + linkedin + '" target="_blank">linkedin/forrestpknight' + "</a>",
|
||||
'instagram <a href="' + instagram + '" target="_blank">instagram/forrestpknight' + '</a>',
|
||||
'github <a href="' + github + '" target="_blank">github/forrestknight' + "</a>",
|
||||
"<br>"
|
||||
];
|
||||
|
||||
secret = [
|
||||
"<br>",
|
||||
'<span class="command">sudo</span> Only use if you\'re admin',
|
||||
"<br>"
|
||||
];
|
||||
|
||||
projects = [
|
||||
"<br>",
|
||||
"Still curating... most projects are offline, on GitHub, or confidential.",
|
||||
"<br>"
|
||||
];
|
||||
|
||||
help = [
|
||||
"<br>",
|
||||
'<span class="command">whois</span> Who is Forrest?',
|
||||
'<span class="command">whoami</span> Who are you?',
|
||||
'<span class="command">video</span> View YouTube videos',
|
||||
'<span class="command">social</span> Display social networks',
|
||||
'<span class="command">secret</span> Find the password',
|
||||
'<span class="command">projects</span> View coding projects',
|
||||
'<span class="command">history</span> View command history',
|
||||
'<span class="command">help</span> You obviously already know what this does',
|
||||
'<span class="command">email</span> Do not email me',
|
||||
'<span class="command">clear</span> Clear terminal',
|
||||
'<span class="command">banner</span> Display the header',
|
||||
"<br>",
|
||||
];
|
||||
|
||||
banner = [
|
||||
'<span class="index">ForrestKnight (FK) Not A Corporation. All knights reserved.</span>',
|
||||
" ___ ____",
|
||||
" /' --;^/ ,-_\\ \\ | / ",
|
||||
" / / --o\\ o-\\ \\\\ --(_)-- ",
|
||||
" /-/-/|o|-|\\-\\\\|\\\\ / | \\ ______ __ __ __ _ __ __ ",
|
||||
" '` ` |-| `` ' / ____/___ _____________ _____/ /_ / //_/____ (_)___ _/ /_ / /_ ",
|
||||
" |-| / /_ / __ \\/ ___/ ___/ _ \\/ ___/ __/ / ,< / __ \\/ / __ `/ __ \\/ __/ ",
|
||||
" |-|O / __/ / /_/ / / / / / __(__ ) /_ / /| |/ / / / / /_/ / / / / /_ ",
|
||||
" |-(\\,__ /_/ \\____/_/ /_/ \\___/____/\\__/ /_/ |_/_/ /_/_/\\__, /_/ /_/\\__/ ",
|
||||
" ...|-|\\--,\\_.... /____/ © 2022",
|
||||
" ,;;;;;;;;;;;;;;;;;;;;;;;;,. ",
|
||||
"~~,;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;,~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~",
|
||||
'<span class="color2">Welcome to my interactive web terminal.</span>',
|
||||
"<span class=\"color2\">For a list of available commands, type</span> <span class=\"command\">'help'</span><span class=\"color2\">.</span>",
|
||||
];
|
||||
32
js/magic.js
Normal file
32
js/magic.js
Normal file
@ -0,0 +1,32 @@
|
||||
|
||||
const letters = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
|
||||
|
||||
let interval = null;
|
||||
|
||||
const screen = document.querySelector(".magic"),
|
||||
name = document.querySelector(".magic");
|
||||
|
||||
screen.onmouseenter = event => {
|
||||
let iteration = 0;
|
||||
|
||||
clearInterval(interval);
|
||||
|
||||
interval = setInterval(() => {
|
||||
name.innerText = name.innerText
|
||||
.split("")
|
||||
.map((letter, index) => {
|
||||
if(index < iteration) {
|
||||
return name.dataset.value[index];
|
||||
}
|
||||
|
||||
return letters[Math.floor(Math.random() * 26)]
|
||||
})
|
||||
.join("");
|
||||
|
||||
if(iteration >= name.dataset.value.length){
|
||||
clearInterval(interval);
|
||||
}
|
||||
|
||||
iteration += 1 / 3;
|
||||
}, 30);
|
||||
}
|
||||
190
js/main.js
Normal file
190
js/main.js
Normal file
@ -0,0 +1,190 @@
|
||||
var before = document.getElementById("before");
|
||||
var liner = document.getElementById("liner");
|
||||
var command = document.getElementById("typer");
|
||||
var textarea = document.getElementById("texter");
|
||||
var terminal = document.getElementById("terminal");
|
||||
|
||||
var git = 0;
|
||||
var pw = false;
|
||||
let pwd = false;
|
||||
var commands = [];
|
||||
|
||||
setTimeout(function() {
|
||||
loopLines(banner, "", 80);
|
||||
textarea.focus();
|
||||
}, 100);
|
||||
|
||||
window.addEventListener("keyup", enterKey);
|
||||
|
||||
console.log(
|
||||
"%cYou hacked my password!😠",
|
||||
"color: #04ff00; font-weight: bold; font-size: 24px;"
|
||||
);
|
||||
console.log("%cPassword: '" + password + "' - I wonder what it does?🤔", "color: grey");
|
||||
|
||||
//init
|
||||
textarea.value = "";
|
||||
command.innerHTML = textarea.value;
|
||||
|
||||
function enterKey(e) {
|
||||
if (e.keyCode == 181) {
|
||||
document.location.reload(true);
|
||||
}
|
||||
if (pw) {
|
||||
let et = "*";
|
||||
let w = textarea.value.length;
|
||||
command.innerHTML = et.repeat(w);
|
||||
if (textarea.value === password) {
|
||||
pwd = true;
|
||||
}
|
||||
if (pwd && e.keyCode == 13) {
|
||||
loopLines(secret, "color2 margin", 120);
|
||||
command.innerHTML = "";
|
||||
textarea.value = "";
|
||||
pwd = false;
|
||||
pw = false;
|
||||
liner.classList.remove("password");
|
||||
} else if (e.keyCode == 13) {
|
||||
addLine("Wrong password", "error", 0);
|
||||
command.innerHTML = "";
|
||||
textarea.value = "";
|
||||
pw = false;
|
||||
liner.classList.remove("password");
|
||||
}
|
||||
} else {
|
||||
if (e.keyCode == 13) {
|
||||
commands.push(command.innerHTML);
|
||||
git = commands.length;
|
||||
addLine("visitor@fkcodes.com:~$ " + command.innerHTML, "no-animation", 0);
|
||||
commander(command.innerHTML.toLowerCase());
|
||||
command.innerHTML = "";
|
||||
textarea.value = "";
|
||||
}
|
||||
if (e.keyCode == 38 && git != 0) {
|
||||
git -= 1;
|
||||
textarea.value = commands[git];
|
||||
command.innerHTML = textarea.value;
|
||||
}
|
||||
if (e.keyCode == 40 && git != commands.length) {
|
||||
git += 1;
|
||||
if (commands[git] === undefined) {
|
||||
textarea.value = "";
|
||||
} else {
|
||||
textarea.value = commands[git];
|
||||
}
|
||||
command.innerHTML = textarea.value;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
function commander(cmd) {
|
||||
switch (cmd.toLowerCase()) {
|
||||
case "help":
|
||||
loopLines(help, "color2 margin", 80);
|
||||
break;
|
||||
case "whois":
|
||||
loopLines(whois, "color2 margin", 80);
|
||||
break;
|
||||
case "whoami":
|
||||
loopLines(whoami, "color2 margin", 80);
|
||||
break;
|
||||
case "video":
|
||||
addLine("Opening YouTube...", "color2", 80);
|
||||
newTab(youtube);
|
||||
break;
|
||||
case "sudo":
|
||||
addLine("Oh no, you're not admin...", "color2", 80);
|
||||
setTimeout(function() {
|
||||
window.open('https://www.youtube.com/watch?v=dQw4w9WgXcQ');
|
||||
}, 1000);
|
||||
break;
|
||||
case "social":
|
||||
loopLines(social, "color2 margin", 80);
|
||||
break;
|
||||
case "secret":
|
||||
liner.classList.add("password");
|
||||
pw = true;
|
||||
break;
|
||||
case "projects":
|
||||
loopLines(projects, "color2 margin", 80);
|
||||
break;
|
||||
case "password":
|
||||
addLine("<span class=\"inherit\"> Lol! You're joking, right? You\'re gonna have to try harder than that!😂</span>", "error", 100);
|
||||
break;
|
||||
case "history":
|
||||
addLine("<br>", "", 0);
|
||||
loopLines(commands, "color2", 80);
|
||||
addLine("<br>", "command", 80 * commands.length + 50);
|
||||
break;
|
||||
case "email":
|
||||
addLine('Opening mailto:<a href="mailto:forrest@fkcodes.com">forrest@fkcodes.com</a>...', "color2", 80);
|
||||
newTab(email);
|
||||
break;
|
||||
case "clear":
|
||||
setTimeout(function() {
|
||||
terminal.innerHTML = '<a id="before"></a>';
|
||||
before = document.getElementById("before");
|
||||
}, 1);
|
||||
break;
|
||||
case "banner":
|
||||
loopLines(banner, "", 80);
|
||||
break;
|
||||
// socials
|
||||
case "youtube":
|
||||
addLine("Opening YouTube...", "color2", 80);
|
||||
newTab(youtube);
|
||||
break;
|
||||
case "twitter":
|
||||
addLine("Opening Twitter...", "color2", 0);
|
||||
newTab(twitter);
|
||||
break;
|
||||
case "linkedin":
|
||||
addLine("Opening LinkedIn...", "color2", 0);
|
||||
newTab(linkedin);
|
||||
break;
|
||||
case "instagram":
|
||||
addLine("Opening Instagram...", "color2", 0);
|
||||
newTab(instagram);
|
||||
break;
|
||||
case "github":
|
||||
addLine("Opening GitHub...", "color2", 0);
|
||||
newTab(github);
|
||||
break;
|
||||
default:
|
||||
addLine("<span class=\"inherit\">Command not found. For a list of commands, type <span class=\"command\">'help'</span>.</span>", "error", 100);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
function newTab(link) {
|
||||
setTimeout(function() {
|
||||
window.open(link, "_blank");
|
||||
}, 500);
|
||||
}
|
||||
|
||||
function addLine(text, style, time) {
|
||||
var t = "";
|
||||
for (let i = 0; i < text.length; i++) {
|
||||
if (text.charAt(i) == " " && text.charAt(i + 1) == " ") {
|
||||
t += " ";
|
||||
i++;
|
||||
} else {
|
||||
t += text.charAt(i);
|
||||
}
|
||||
}
|
||||
setTimeout(function() {
|
||||
var next = document.createElement("p");
|
||||
next.innerHTML = t;
|
||||
next.className = style;
|
||||
|
||||
before.parentNode.insertBefore(next, before);
|
||||
|
||||
window.scrollTo(0, document.body.offsetHeight);
|
||||
}, time);
|
||||
}
|
||||
|
||||
function loopLines(name, style, time) {
|
||||
name.forEach(function(item, index) {
|
||||
addLine(item, style, index * time);
|
||||
});
|
||||
}
|
||||
64
login.html
Normal file
64
login.html
Normal file
@ -0,0 +1,64 @@
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<meta name="viewport" content="width=device-width", initial-scale="1.0">
|
||||
<title>Life Reborn</title>
|
||||
|
||||
<link rel="icon" type="image/x-icon" href="img/fav.png">
|
||||
<link rel="stylesheet" type="text/css" href="css/main.css">
|
||||
<link rel="stylesheet" type="text/css" href="css/login.css">
|
||||
|
||||
|
||||
|
||||
</head>
|
||||
<body>
|
||||
|
||||
|
||||
<!-- NAV -->
|
||||
|
||||
<div class="nav">
|
||||
<a class="nav-gap"></a>
|
||||
<a href="index.html" class="nav-flag" id="life">0-LIFE</a>
|
||||
<a class="nav-gap"></a>
|
||||
<a href="reborn.html" class="nav-flag" id="reborn">Reborn</a>
|
||||
<a class="nav-gap"></a>
|
||||
<a href="doc.html" class="nav-flag" id="doc">Docs</a>
|
||||
<a class="nav-gap"></a>
|
||||
<a href="terminal.html" class="nav-flag" id="terminal">Terminal</a>
|
||||
<a class="nav-gap"></a>
|
||||
<a href="interview.html" class="nav-flag" id="interview">Interview</a>
|
||||
<a class="nav-gap"></a>
|
||||
<a href="login.html" class="nav-flag" id="login">Login</a>
|
||||
</div>
|
||||
|
||||
|
||||
<!-- CONTENT OF WEB -->
|
||||
|
||||
<div class="content">
|
||||
<div class="card" id="life">
|
||||
<div class="background" id="planet"></div>
|
||||
<div class="magic" data-value="Login">Login</div>
|
||||
<a class="link" href="https://youtu.be/dQw4w9WgXcQ">REBORN</a>
|
||||
</div>
|
||||
|
||||
<div class="card" id="Doc">Doc</div>
|
||||
|
||||
<div class="card" id="terminal">WhoAmI</div>
|
||||
|
||||
<div class="card" id="inter">Interview</div>
|
||||
|
||||
<div class="card" id="login">Login</div>
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
|
||||
<!-- SCRIPTS -->
|
||||
|
||||
<script src="js/magic.js"></script>
|
||||
|
||||
</div></body>
|
||||
</html>
|
||||
|
||||
64
reborn.html
Normal file
64
reborn.html
Normal file
@ -0,0 +1,64 @@
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<meta name="viewport" content="width=device-width", initial-scale="1.0">
|
||||
<title>Life Reborn</title>
|
||||
|
||||
<link rel="icon" type="image/x-icon" href="img/fav.png">
|
||||
<link rel="stylesheet" type="text/css" href="css/main.css">
|
||||
<link rel="stylesheet" type="text/css" href="css/reborn.css">
|
||||
|
||||
|
||||
|
||||
</head>
|
||||
<body>
|
||||
|
||||
|
||||
<!-- NAV -->
|
||||
|
||||
<div class="nav">
|
||||
<a class="nav-gap"></a>
|
||||
<a href="index.html" class="nav-flag" id="life">0-LIFE</a>
|
||||
<a class="nav-gap"></a>
|
||||
<a href="reborn.html" class="nav-flag" id="reborn">Reborn</a>
|
||||
<a class="nav-gap"></a>
|
||||
<a href="doc.html" class="nav-flag" id="doc">Docs</a>
|
||||
<a class="nav-gap"></a>
|
||||
<a href="terminal.html" class="nav-flag" id="terminal">Terminal</a>
|
||||
<a class="nav-gap"></a>
|
||||
<a href="interview.html" class="nav-flag" id="interview">Interview</a>
|
||||
<a class="nav-gap"></a>
|
||||
<a href="login.html" class="nav-flag" id="login">Login</a>
|
||||
</div>
|
||||
|
||||
|
||||
<!-- CONTENT OF WEB -->
|
||||
|
||||
<div class="content">
|
||||
<div class="card" id="life">
|
||||
<div class="background" id="planet"></div>
|
||||
<div class="magic" data-value="Reborn">Reborn</div>
|
||||
<a class="link" href="https://youtu.be/dQw4w9WgXcQ">REBORN</a>
|
||||
</div>
|
||||
|
||||
<div class="card" id="Doc">Doc</div>
|
||||
|
||||
<div class="card" id="terminal">WhoAmI</div>
|
||||
|
||||
<div class="card" id="inter">Interview</div>
|
||||
|
||||
<div class="card" id="login">Login</div>
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
|
||||
<!-- SCRIPTS -->
|
||||
|
||||
<script src="js/magic.js"></script>
|
||||
|
||||
</div></body>
|
||||
</html>
|
||||
|
||||
64
terminal.html
Normal file
64
terminal.html
Normal file
@ -0,0 +1,64 @@
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<meta name="viewport" content="width=device-width", initial-scale="1.0">
|
||||
<title>Life Reborn</title>
|
||||
|
||||
<link rel="icon" type="image/x-icon" href="img/fav.png">
|
||||
<link rel="stylesheet" type="text/css" href="css/main.css">
|
||||
<link rel="stylesheet" type="text/css" href="css/terminal.css">
|
||||
|
||||
|
||||
|
||||
</head>
|
||||
<body>
|
||||
|
||||
|
||||
<!-- NAV -->
|
||||
|
||||
<div class="nav">
|
||||
<a class="nav-gap"></a>
|
||||
<a href="index.html" class="nav-flag" id="life">0-LIFE</a>
|
||||
<a class="nav-gap"></a>
|
||||
<a href="reborn.html" class="nav-flag" id="reborn">Reborn</a>
|
||||
<a class="nav-gap"></a>
|
||||
<a href="doc.html" class="nav-flag" id="doc">Docs</a>
|
||||
<a class="nav-gap"></a>
|
||||
<a href="terminal.html" class="nav-flag" id="terminal">Terminal</a>
|
||||
<a class="nav-gap"></a>
|
||||
<a href="interview.html" class="nav-flag" id="interview">Interview</a>
|
||||
<a class="nav-gap"></a>
|
||||
<a href="login.html" class="nav-flag" id="login">Login</a>
|
||||
</div>
|
||||
|
||||
|
||||
<!-- CONTENT OF WEB -->
|
||||
|
||||
<div class="content">
|
||||
<div class="card" id="life">
|
||||
<div class="background" id="planet"></div>
|
||||
<div class="magic" data-value="Terminal">Terminal</div>
|
||||
<a class="link" href="https://youtu.be/dQw4w9WgXcQ">REBORN</a>
|
||||
</div>
|
||||
|
||||
<div class="card" id="Doc">Doc</div>
|
||||
|
||||
<div class="card" id="terminal">WhoAmI</div>
|
||||
|
||||
<div class="card" id="inter">Interview</div>
|
||||
|
||||
<div class="card" id="login">Login</div>
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
|
||||
<!-- SCRIPTS -->
|
||||
|
||||
<script src="js/magic.js"></script>
|
||||
|
||||
</div></body>
|
||||
</html>
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user