2024-01-14 20:03:45 +00:00
|
|
|
|
import Job, { type JobProps } from '../components/portfolio/Job'
|
|
|
|
|
import Skill, { type SkillProps } from '../components/portfolio/Skill'
|
|
|
|
|
import ListItem, { type ListItemProps } from '../components/portfolio/ListItem'
|
2023-12-30 01:17:02 +00:00
|
|
|
|
import { UsefulLinksList } from '../components/UsefulLinks/index'
|
|
|
|
|
import { SocialLinksList } from '../components/SocialLinks/SocialLinks'
|
2023-12-30 16:42:21 +00:00
|
|
|
|
import type { GetStaticProps } from 'next'
|
2024-01-14 20:03:45 +00:00
|
|
|
|
import AlienHeader from 'components/portfolio/AlienHeader'
|
|
|
|
|
import Head from 'next/head'
|
2023-12-30 01:17:02 +00:00
|
|
|
|
|
|
|
|
|
interface LandingProps {
|
|
|
|
|
jobs: JobsType[]
|
|
|
|
|
skills: SkillsType[]
|
|
|
|
|
projects: ProjectsType[]
|
|
|
|
|
}
|
2023-12-26 01:25:55 +00:00
|
|
|
|
|
2024-01-09 04:33:54 +00:00
|
|
|
|
export default function Landing({ jobs, skills, projects }: LandingProps): React.JSX.Element {
|
2023-12-26 01:25:55 +00:00
|
|
|
|
return (
|
2024-01-14 20:03:45 +00:00
|
|
|
|
<>
|
|
|
|
|
<Head>
|
|
|
|
|
<title>Triston Armstrong</title>
|
|
|
|
|
</Head>
|
|
|
|
|
<div>
|
|
|
|
|
<article className='flex-row align-baseline'>
|
|
|
|
|
<p>❗👷 This site is under construction 🚧 🏗️ 🚧</p>
|
|
|
|
|
</article>
|
|
|
|
|
|
|
|
|
|
<br />
|
|
|
|
|
|
|
|
|
|
<header>
|
|
|
|
|
<div className="flex-col gap-05">
|
|
|
|
|
|
|
|
|
|
<h1 className='m-0'>Triston Armstrong 🫰</h1>
|
2024-01-07 03:04:57 +00:00
|
|
|
|
</div>
|
|
|
|
|
|
2024-01-14 20:03:45 +00:00
|
|
|
|
<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 <i className='font-muted'><small>(Click me to fast track to docs)</small></i></h4>
|
|
|
|
|
<div className="flex gap-1" id="skills">
|
|
|
|
|
{skills.map(skill => <Skill key={skill.label} label={skill.label} link={skill.link} />)}
|
|
|
|
|
</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>
|
2024-01-07 03:04:57 +00:00
|
|
|
|
</div>
|
|
|
|
|
|
2024-01-14 20:03:45 +00:00
|
|
|
|
<div className='flex-row gap-1'>
|
|
|
|
|
<UsefulLinksList />
|
2024-01-01 03:10:16 +00:00
|
|
|
|
</div>
|
2024-01-07 03:04:57 +00:00
|
|
|
|
|
2024-01-14 20:03:45 +00:00
|
|
|
|
<div style={{ margin: '10px 0' }} />
|
2024-01-07 03:04:57 +00:00
|
|
|
|
|
2024-01-14 20:03:45 +00:00
|
|
|
|
<div className='flex-row flex-between '>
|
|
|
|
|
<div className='flex-row gap-1'>
|
|
|
|
|
<SocialLinksList />
|
|
|
|
|
</div>
|
|
|
|
|
<small>©2023-2024 Triston Armstrong. All rights reserved.</small>
|
2024-01-07 03:04:57 +00:00
|
|
|
|
</div>
|
|
|
|
|
|
2024-01-14 20:03:45 +00:00
|
|
|
|
</footer>
|
|
|
|
|
</div >
|
|
|
|
|
</>
|
2023-12-30 16:42:21 +00:00
|
|
|
|
)
|
2023-12-26 01:25:55 +00:00
|
|
|
|
}
|
|
|
|
|
|
2023-12-30 01:17:02 +00:00
|
|
|
|
export function getStaticProps(): ReturnType<GetStaticProps<{
|
2023-12-30 16:42:21 +00:00
|
|
|
|
projects: ProjectsType[]
|
|
|
|
|
skills: SkillsType[]
|
2023-12-30 01:17:02 +00:00
|
|
|
|
jobs: JobsType[]
|
|
|
|
|
}>> {
|
2023-12-26 01:25:55 +00:00
|
|
|
|
return {
|
|
|
|
|
props: {
|
|
|
|
|
projects: [
|
2024-01-14 06:38:50 +00:00
|
|
|
|
{ label: 'Solar Battery Monitor API', date: 'July \'23', url: 'https://github.com/tristonarmstrong/SolarBatteryMonitorApi' },
|
|
|
|
|
{ label: 'Armstrong Editor', date: 'Dec. \'22', url: 'https://github.com/tristonarmstrong/armstrong-editor' },
|
|
|
|
|
{ label: 'Web Window Manager', date: 'Sept. \'22', url: 'https://github.com/tristonarmstrong/web-window-manager' },
|
|
|
|
|
{ label: 'Component Test Helper', date: 'June \'22', url: 'https://github.com/tristonarmstrong/component-test-helper' },
|
|
|
|
|
{ label: 'Hive DAPP', date: 'Mar. \'22', url: 'https://github.com/tristonarmstrong/hive-dapp' },
|
|
|
|
|
{ label: 'Kivy Twisted Input Capture', date: 'June \'21', url: 'https://github.com/tristonarmstrong/KivyTwistedInputCapture' },
|
|
|
|
|
{ label: 'Plant Monitor Node MCU', date: 'June \'21', url: 'https://github.com/tristonarmstrong/PlantMonitorNodeMCU' },
|
|
|
|
|
{ label: 'Oppo BDP 103 CLI', date: 'Apr. \'21', url: 'https://github.com/tristonarmstrong/oppo_bdp_103_CLI' },
|
|
|
|
|
{ label: 'Sony Bravia Pro Server', date: 'Apr. \'21', url: 'https://github.com/tristonarmstrong/sony_bravia_pro_display_mock_server' },
|
|
|
|
|
{ label: 'Chat IO', date: 'Jun. \'20', url: 'https://github.com/tristonarmstrong/chat.io' },
|
|
|
|
|
{ label: 'Zip Code Distance App', date: 'Jan. \'20', url: 'https://github.com/tristonarmstrong/zipapp' }
|
2023-12-26 01:25:55 +00:00
|
|
|
|
],
|
|
|
|
|
skills: [
|
2024-01-14 06:38:50 +00:00
|
|
|
|
{ label: 'Typescript', link: 'https://www.typescriptlang.org/docs/handbook/intro.html' },
|
|
|
|
|
{ label: 'Python', link: 'https://docs.python.org/3/' },
|
|
|
|
|
{ label: 'Rust', link: 'https://doc.rust-lang.org/std/index.html' },
|
|
|
|
|
{ label: 'Javascript', link: 'https://developer.mozilla.org/en-US/docs/Web/javascript#reference' }
|
2023-12-26 01:25:55 +00:00
|
|
|
|
],
|
|
|
|
|
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',
|
2024-01-14 06:38:50 +00:00
|
|
|
|
dateFrom: 'May \'23',
|
2023-12-30 16:42:21 +00:00
|
|
|
|
dateTo: 'Present'
|
2023-12-26 01:25:55 +00:00
|
|
|
|
}, {
|
|
|
|
|
logo: 'https://www.randstadusa.com/themes/custom/bluex/favicon.ico',
|
|
|
|
|
name: 'Randstad Technologies',
|
|
|
|
|
details: 'Built Web Applications for external clients',
|
2024-01-14 06:38:50 +00:00
|
|
|
|
dateFrom: 'May \'22',
|
|
|
|
|
dateTo: 'May \'23'
|
2023-12-26 01:25:55 +00:00
|
|
|
|
|
|
|
|
|
}, {
|
|
|
|
|
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',
|
2024-01-14 06:38:50 +00:00
|
|
|
|
dateFrom: 'July \'20',
|
|
|
|
|
dateTo: 'Nov. \'21'
|
2023-12-26 01:25:55 +00:00
|
|
|
|
|
|
|
|
|
}, {
|
2024-01-11 23:47:28 +00:00
|
|
|
|
logo: 'images/makers_logo.png',
|
2023-12-26 01:25:55 +00:00
|
|
|
|
name: 'Makers Ladder LLC',
|
|
|
|
|
details: 'Did some thangs',
|
2024-01-14 06:38:50 +00:00
|
|
|
|
dateFrom: 'Dec. \'19',
|
|
|
|
|
dateTo: 'Apr. \'22'
|
2023-12-26 01:25:55 +00:00
|
|
|
|
|
2023-12-30 16:42:21 +00:00
|
|
|
|
}
|
2023-12-26 01:25:55 +00:00
|
|
|
|
]
|
2023-12-30 16:42:21 +00:00
|
|
|
|
}
|
2023-12-26 01:25:55 +00:00
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
2023-12-30 01:17:02 +00:00
|
|
|
|
type SkillsType = SkillProps
|
|
|
|
|
type JobsType = JobProps
|
2023-12-30 16:42:21 +00:00
|
|
|
|
type ProjectsType = ListItemProps
|