XeNote/pages/index.tsx

159 lines
5.9 KiB
TypeScript
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

import Job, { type JobProps } from '../components/Job'
import Skill, { type SkillProps } from '../components/Skill'
import ListItem, { type ListItemProps } from '../components/ListItem'
import Head from 'next/head'
import { UsefulLinksList } from '../components/UsefulLinks/index'
import { SocialLinksList } from '../components/SocialLinks/SocialLinks'
import type { GetStaticProps } from 'next'
interface LandingProps {
jobs: JobsType[]
skills: SkillsType[]
projects: ProjectsType[]
}
export default function Landing({ jobs, skills, projects }: LandingProps) {
return (
<div>
<img src='https://i.giphy.com/TBCVggEb9DzSHTUI19.webp' width={220} height={220} alt="peng" style={{ position: 'fixed', bottom: 0, left: 0 }} />
<article className='flex-row align-baseline'>
<p>👷 This site is under construction 🚧 🏗 🚧</p>
</article>
<br />
<header>
<div className="flex-col gap-05">
<img style={{ border: '1px dashed var(--links)' }} className="rounded xl "
src="https://gitlab.com/uploads/-/system/user/avatar/5083849/avatar.png?width=400" alt="" />
<h1 className='m-0'>Triston Armstrong 🫰</h1>
</div>
<p>
Full Stack Software Developer {' '}
<a target="_blank" href="https://ventrahealth.com">
@VentraHealth
</a>
</p>
<p className='font-muted'>
I am a self taught Full Stack Software Developer with an unhealthy addiction to solving
problems using code.
</p>
<hr />
</header>
<main className="">
<section>
<h4>🤹 Skills</h4>
<div className="flex gap-1" id="skills">
{skills.map(skill => <Skill key={skill.label} label={skill.label} />)}
</div>
</section>
<section>
<h4>💼 Jobs</h4>
<div className="flex-col " id="jobs">
{jobs.map(job => <Job key={job.name} logo={job.logo} name={job.name} details={job.details} dateFrom={job.dateFrom} dateTo={job.dateTo} />)}
</div>
</section>
<section>
<h4>🚧 Projects</h4>
<div className='flex-col'>
{projects.map(project => <ListItem key={project.label} label={project.label} date={project.date} url={project.url} />)}
</div>
</section>
</main>
<footer className='flex-col flex-between gap-1 mt-4 '>
<div className='flex-row gap-1'>
<a href="/notes" target="_blank" className='text-md font-muted font-bold'>🏃 Notes</a>
{'|'}
<a href="/playground" target="_blank" className='text-md font-muted font-bold'>🏃 Playground</a>
</div>
<div className='flex-row gap-1'>
<UsefulLinksList />
</div>
<div style={{ margin: '10px 0' }} />
<div className='flex-row flex-between '>
<div className='flex-row gap-1'>
<SocialLinksList />
</div>
<small>©2023-2024 Triston Armstrong. All rights reserved.</small>
</div>
</footer>
</div >
)
}
export function getStaticProps(): ReturnType<GetStaticProps<{
projects: ProjectsType[]
skills: SkillsType[]
jobs: JobsType[]
}>> {
return {
props: {
projects: [
{ label: 'Web Window Manager', date: '9/18/2022', url: 'https://github.com/tristonarmstrong/web-window-manager' },
{ label: 'Component Test Helper', date: '6/18/2022', url: 'https://github.com/tristonarmstrong/component-test-helper' },
{ label: 'Hive DAPP', date: '3/8/2022', url: 'https://github.com/tristonarmstrong/hive-dapp' },
{ label: 'Kivy Twisted Input Capture', date: '6/27/2021', url: 'https://github.com/tristonarmstrong/KivyTwistedInputCapture' },
{ label: 'Plant Monitor Node MCU', date: '6/27/2021', url: 'https://github.com/tristonarmstrong/PlantMonitorNodeMCU' },
{ label: 'Oppo BDP 103 CLI', date: '4/10/2021', url: 'https://github.com/tristonarmstrong/oppo_bdp_103_CLI' },
{ label: 'Sony Bravia Pro Server', date: '4/10/2021', url: 'https://github.com/tristonarmstrong/sony_bravia_pro_display_mock_server' },
{ label: 'Chat IO', date: '6/10/2020', url: 'https://github.com/tristonarmstrong/chat.io' },
{ label: 'Solar Battery Monitor API', date: '7/18/2023', url: 'https://github.com/tristonarmstrong/SolarBatteryMonitorApi' },
{ label: 'Zip Code Distance App', date: '1/28/2020', url: 'https://github.com/tristonarmstrong/zipapp' },
{ label: 'Armstrong Editor', date: '12/14/2022', url: 'https://github.com/tristonarmstrong/armstrong-editor' }
],
skills: [
{ label: 'Typescript' },
{ label: 'Python' },
{ label: 'Rust' },
{ label: 'Javascript' }
],
jobs: [
{
logo: 'https://ventrahealth.com/wp-content/uploads/2023/08/cropped-Ventra-Health-favicon-circle-192x192.png',
name: 'Ventra Health',
details: 'Maintaining and iterating on an internal web application',
dateFrom: 'May 2023',
dateTo: 'Present'
}, {
logo: 'https://www.randstadusa.com/themes/custom/bluex/favicon.ico',
name: 'Randstad Technologies',
details: 'Built Web Applications for external clients',
dateFrom: 'May 2022',
dateTo: 'May 2023'
}, {
logo: 'https://img1.wsimg.com/isteam/ip/9ba626a3-41c9-4092-90b5-cb351983b726/favicon/a8beec51-e35d-4cca-8e88-befa12f687b0.png/:/rs=w:64,h:64,m',
name: 'Damiano Global Corporation',
details: 'Built Web Applications for external clients',
dateFrom: 'July 2020',
dateTo: 'Nov 2021'
}, {
logo: '#',
name: 'Makers Ladder LLC',
details: 'Did some thangs',
dateFrom: 'Dec 2019',
dateTo: 'Apr 2022'
}
]
}
}
}
type SkillsType = SkillProps
type JobsType = JobProps
type ProjectsType = ListItemProps