Compare commits

...

3 Commits

Author SHA1 Message Date
Notoric 038f4f6f31 added contact me 2025-01-23 15:18:57 +00:00
Notoric d2e7849724 updated about-me 2025-01-22 16:29:45 +00:00
Notoric 9b484cce17 fixed css for mobile 2025-01-22 15:50:02 +00:00
4 changed files with 272 additions and 72 deletions

BIN
Tom Cornes CV.pdf Normal file

Binary file not shown.

View File

@ -39,7 +39,7 @@
<div id="aboutme">
<h1>About Me</h1>
<div id="box-with-title">
<p>I am a <em id=age>22</em> year old Computer Science graduate from De Montfort University. For as long as I can remember, I have had a desire to tinker and solve logical problems. As a child, I found myself playing with circuit kits and components all the time. I loved creating a circuit as the instructions told me, and then modifying it to add features or change how it worked. When I got my first laptop I was extatic. I began hosting game servers for my friends, tinkering around in the settings and troubleshooting crashes or installing mods. I wrote my first script in python at the age of 12 and have never looked back since.</p>
<p>I am a <em id=age>22</em> year-old Computer Science graduate from De Montfort University with a passion for creating a wide range of practical applications. While I specialise in full-stack development, I have experience across a broad range of technologies, as showcased in my projects below. I am driven by a desire to create, and I feel incredibly fulfilled when I can see and interact with something that I have built. I enjoy working with others, and strive to create readable and maintainable code that adheres to common standards. When I'm not programming, you'll find me modifying hardware, such as keyboards or controllers.</p>
</div>
</div>
<div id="projects">
@ -83,6 +83,28 @@
<a href="https://ctec3905.notoric.net" target="_blank"><img src="/assets/CTEC3905.png"></a>
</div>
</div>
<div id="contact">
<h1>Looking to hire me?</h1>
<a id="cv-button-wrapper" href="/Tom Cornes CV.pdf" target="_blank"><button id="cv-button">CV</button></a>
<h1>Contact me here</h2>
<div id="contact-showcase" class="card">
<div class="contact-area" id="email">
<svg id="email-logo" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg" stroke="#7520ff"><g id="SVGRepo_bgCarrier" stroke-width="0"></g><g id="SVGRepo_tracerCarrier" stroke-linecap="round" stroke-linejoin="round"></g><g id="SVGRepo_iconCarrier"> <path d="M4 18L9 12M20 18L15 12M3 8L10.225 12.8166C10.8665 13.2443 11.1872 13.4582 11.5339 13.5412C11.8403 13.6147 12.1597 13.6147 12.4661 13.5412C12.8128 13.4582 13.1335 13.2443 13.775 12.8166L21 8M6.2 19H17.8C18.9201 19 19.4802 19 19.908 18.782C20.2843 18.5903 20.5903 18.2843 20.782 17.908C21 17.4802 21 16.9201 21 15.8V8.2C21 7.0799 21 6.51984 20.782 6.09202C20.5903 5.71569 20.2843 5.40973 19.908 5.21799C19.4802 5 18.9201 5 17.8 5H6.2C5.0799 5 4.51984 5 4.09202 5.21799C3.71569 5.40973 3.40973 5.71569 3.21799 6.09202C3 6.51984 3 7.07989 3 8.2V15.8C3 16.9201 3 17.4802 3.21799 17.908C3.40973 18.2843 3.71569 18.5903 4.09202 18.782C4.51984 19 5.07989 19 6.2 19Z" stroke="#7520ff" stroke-width="0.72" stroke-linecap="round" stroke-linejoin="round"></path> </g></svg>
<a id="email-link" href="mailto:hireme@notoric.net" target="_blank">hireme@notoric.net</a>
<p id="email-desc">Email me directly for any job opportunities or questions.</p>
</div>
<div class="contact-area" id="phone">
<svg id="phone-logo" viewBox="0 0 64 64" xmlns="http://www.w3.org/2000/svg" fill="none" stroke="#ff0050" stroke-width="1.92"><g id="SVGRepo_bgCarrier" stroke-width="0"></g><g id="SVGRepo_tracerCarrier" stroke-linecap="round" stroke-linejoin="round"></g><g id="SVGRepo_iconCarrier"><rect x="18" y="8" width="28" height="48" rx="4"></rect><line x1="28" y1="12" x2="36" y2="12"></line><line x1="30" y1="52" x2="34" y2="52"></line></g></svg>
<a id="phone-link" href="https://wa.me/447938135980" target="_blank">07938135980</a>
<p id="phone-desc">I prefer to be contacted via WhatsApp, but I am also available via text or phone.</p>
</div>
<div class="contact-area" id="linkedin">
<svg fill="#ff8000" version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="-243 51 700 700" xml:space="preserve" stroke="#ff8000"><g id="SVGRepo_bgCarrier" stroke-width="0"></g><g id="SVGRepo_tracerCarrier" stroke-linecap="round" stroke-linejoin="round"></g><g id="SVGRepo_iconCarrier"> <g> <path d="M329,145h-432c-22.1,0-40,17.9-40,40v432c0,22.1,17.9,40,40,40h432c22.1,0,40-17.9,40-40V185C369,162.9,351.1,145,329,145z M339,617c0,5.5-4.5,10-10,10h-432c-5.5,0-10-4.5-10-10V185c0-5.5,4.5-10,10-10h432c5.5,0,10,4.5,10,10V617z"></path> <rect x="-8.5" y="348.4" width="49.9" height="159.7"></rect> <path d="M177.7,346.9c-28.6,0-46.5,15.6-49.8,26.6v-25.1H71.8c0.7,13.3,0,159.7,0,159.7h56.1v-86.3c0-4.9-0.2-9.7,1.2-13.1 c3.8-9.6,12.1-19.6,27-19.6c19.5,0,28.3,14.8,28.3,36.4v82.6H241v-88.8C241,369.9,213.2,346.9,177.7,346.9z"></path> <path d="M15.4,273c-18.4,0-30.5,11.9-30.5,27.7c0,15.5,11.7,27.7,29.8,27.7h0.4c18.8,0,30.5-12.3,30.4-27.7 C45.1,284.9,33.8,273,15.4,273z"></path> </g> </g></svg>
<a id="linkedin-link" href="https://www.linkedin.com/in/tom-cornes/" target="_blank">Tom Cornes</a>
<p id="linkedin-desc">Connect with me on LinkedIn for professional networking.</p>
</div>
</div>
</div>
</main>
<script src="/scripts/homepage.js"></script>
</body>

View File

@ -1,48 +1,55 @@
const navbtn = document.getElementById('nav-btn');
const topshrtct = document.getElementById('top-shrtct');
navbtn.addEventListener('click', () => {
const navbar = document.getElementById('navbar');
navbar.classList.toggle('expanded');
navbtn.classList.toggle('expanded');
});
window.addEventListener('scroll', () => {
if (window.scrollY > 100) {
topshrtct.classList.add('visible');
} else {
topshrtct.classList.remove('visible');
}
});
topshrtct.addEventListener('click', () => {
if (window.scrollY > 100) {
window.scrollTo({ top: 0, behavior: 'smooth' });
}
});
let links = document.getElementById('navbar').getElementsByTagName('a');
for (let link of links) {
link.addEventListener('click', () => {
const navbar = document.getElementById('navbar');
navbar.classList.remove('expanded');
navbtn.classList.remove('expanded');
});
}
async function updateAge() {
setInterval(() => {
const birthdate = new Date('2002-02-12T07:35:00Z');
let age = Date.now() - birthdate.getTime();
age = age / 31556952000;
age = age.toFixed(9);
const ageElement = document.getElementById('age');
ageElement.textContent = age;
}, 50);
}
const navbtn = document.getElementById('nav-btn');
const topshrtct = document.getElementById('top-shrtct');
const logo = document.getElementById('logo');
navbtn.addEventListener('click', () => {
const navbar = document.getElementById('navbar');
navbar.classList.toggle('expanded');
navbtn.classList.toggle('expanded');
});
window.addEventListener('scroll', () => {
if (window.scrollY > 100) {
topshrtct.classList.add('visible');
} else {
topshrtct.classList.remove('visible');
}
});
topshrtct.addEventListener('click', () => {
if (window.scrollY > 100) {
window.scrollTo({ top: 0, behavior: 'smooth' });
}
});
logo.addEventListener('click', () => {
if (window.scrollY > 100) {
window.scrollTo({ top: 0, behavior: 'smooth' });
}
});
let links = document.getElementById('navbar').getElementsByTagName('a');
for (let link of links) {
link.addEventListener('click', () => {
const navbar = document.getElementById('navbar');
navbar.classList.remove('expanded');
navbtn.classList.remove('expanded');
});
}
async function updateAge() {
setInterval(() => {
const birthdate = new Date('2002-02-12T07:35:00Z');
let age = Date.now() - birthdate.getTime();
age = age / 31556952000;
age = age.toFixed(9);
const ageElement = document.getElementById('age');
ageElement.textContent = age;
}, 50);
}
updateAge();

View File

@ -18,6 +18,13 @@ body {
overflow-y: scroll;
}
em {
color: hsl(30, 100%, 65%);
font-style: normal;
}
/* Header */
#top-shrtct {
position: fixed;
bottom: 30px;
@ -59,21 +66,10 @@ body {
z-index: 10;
}
main {
max-width: 1300px;
margin: 0 auto;
padding-inline: 30px;
flex-direction: column;
}
em {
color: hsl(30, 100%, 65%);
font-style: normal;
}
#logo {
font-family: "Fira Mono", monospace;
font-weight: 500;
cursor: pointer;
}
#navbar p {
@ -133,6 +129,17 @@ em {
padding-right: 8px;
}
/* Body */
main {
max-width: 1300px;
margin: 0 auto;
padding-inline: 30px;
flex-direction: column;
}
/* Landing */
#homepage {
width: 100%;
height: calc(100vh - 60px);
@ -249,6 +256,8 @@ em {
font-weight: 700;
}
/* About */
#box-with-title {
border-radius: 60px;
padding-inline: 50px;
@ -318,6 +327,8 @@ em {
font-family: "Fira Mono", monospace;
}
/* Projects */
#projects {
margin: auto;
width: fit-content;
@ -418,10 +429,119 @@ em {
margin: 0;
}
/* Contact */
#contact {
margin: auto;
width: fit-content;
padding-top: 100px;
}
#contact h1 {
padding-left: 75px;
}
#cv-button {
position: relative;
overflow: hidden;
height: 2em;
width: 2em;
font-size: 5em;
font-family: "Fira Mono", monospace;
font-weight: 800;
color: var(--accent);
background: linear-gradient(120deg, #7520ff, #ff0050, #ff8000);
border-radius: 12%;
border: none;
display: block;
margin: auto;
margin-block: 40px;
cursor: pointer;
padding: 0;
}
#cv-button-wrapper {
color: var(--accent);
text-decoration: none;
}
#cv-button::before {
content: '';
position: absolute;
top: -50%;
left: -50%;
width: 200%;
height: 200%;
background: linear-gradient(
0deg,
transparent,
rgba(255, 255, 255, 0.35),
transparent
);
transform: rotate(45deg) translateY(-50%);
transition: transform 0.5s ease;
}
#cv-button:hover::before {
transform: rotate(45deg) translateY(50%);
}
#contact h2 {
padding-left: 75px;
}
#contact-showcase {
max-width: 800px;
padding-inline: 50px;
padding-block: 20px;
gap: 30px;
}
.contact-area {
width: 280px;
display: flex;
flex-direction: column;
align-items: center;
justify-content: flex-start;
margin-bottom: auto;
}
.contact-area svg {
width: 8em;
height: 8em;
}
.contact-area a {
color: var(--accent);
text-decoration: underline;
font-size: 1.4em;
margin: 0;
font-family: "Fira Mono", monospace;
margin-top: 0.3em;
}
.contact-area p {
font-size: 1.1em;
text-align: center;
}
#email-link:hover {
color: #7520ff
}
#phone-link:hover {
color: #ff0050
}
#linkedin-link:hover {
color: #ff8000
}
@media screen and (max-width: 1100px) {
body {
font-size: 30px;
font-size: 20px;
padding-top: 0em;
}
#logo {
@ -508,7 +628,6 @@ em {
#links a:after, #nav a:after {
right: auto;
height: 1.2em;
}
#nav {
@ -525,11 +644,10 @@ em {
#homepage .card {
flex-direction: column-reverse;
padding-block: 80px;
gap: 70px;
width: fit-content;
padding: 80px;
margin-top: 0;
max-width: 65%;;
}
.card::after {
@ -543,8 +661,8 @@ em {
}
#homepage-img {
width: 300px;
height: 300px;
width: 14em;
height: 14em;
}
#hi {
@ -568,6 +686,10 @@ em {
flex-direction: column;
}
.project-description {
max-width: 100%;
}
.project img {
width: calc(100vw - 192px);
height: auto;
@ -577,18 +699,67 @@ em {
padding-bottom: 1em;
}
#homepage-img {
width: 500px;
height: 500px;
}
#aboutme {
padding-top: 70px;
}
#aboutme h1 {
transform: translateY(170px);
top: -150px;
top: -3em;
}
#contact {
width: 100%;
}
#contact h1 {
padding: 0;
width: fit-content;
margin-inline: auto;
}
#contact-showcase {
flex-direction: column;
}
.contact-area {
display: grid;
width: calc(100vw - 192px);
}
.contact-area svg {
grid-column: 1;
grid-row: 1 / span 2;
}
.contact-area a {
grid-column: 2;
grid-row: 1;
width: fit-content;
margin-top: auto;
}
.contact-area p {
grid-column: 2;
grid-row: 2;
width: auto;
text-align: left;
margin-bottom: auto;
}
}
@media screen and (max-width: 650px) {
body {
font-size: 15px;
}
#aboutme h1 {
transform: translateY(170px);
top: -3.5em;
}
#contact-showcase {
padding-inline: 20px;
}
}