XeNote/pages/index.tsx

164 lines
6.0 KiB
TypeScript
Raw Normal View History

2023-12-30 16:42:21 +00:00
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'
2023-12-30 16:42:21 +00:00
import type { GetStaticProps } from 'next'
interface LandingProps {
jobs: JobsType[]
skills: SkillsType[]
projects: ProjectsType[]
}
2023-12-26 01:25:55 +00:00
export default function Landing({ jobs, skills, projects }: LandingProps) {
2023-12-26 01:25:55 +00:00
return (
<div>
<Head>
<meta name="color-scheme" content='dark' />
<body className='bg-gradient' />
2023-12-26 01:25:55 +00:00
</Head>
<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} />)}
2024-01-01 03:10:16 +00:00
</div>
2023-12-26 01:25:55 +00:00
</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>
2024-01-07 18:05:04 +00:00
{'|'}
2024-01-07 03:05:53 +00:00
<a href="/playground" target="_blank" className='text-md font-muted font-bold'>🏃 Playground</a>
</div>
<div className='flex-row gap-1'>
<UsefulLinksList />
</div>
2024-01-07 18:05:04 +00:00
<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 >
2023-12-30 16:42:21 +00:00
)
2023-12-26 01:25:55 +00:00
}
export function getStaticProps(): ReturnType<GetStaticProps<{
2023-12-30 16:42:21 +00:00
projects: ProjectsType[]
skills: SkillsType[]
jobs: JobsType[]
}>> {
2023-12-26 01:25:55 +00:00
return {
props: {
projects: [
2023-12-30 16:42:21 +00:00
{ 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' }
2023-12-26 01:25:55 +00:00
],
skills: [
2023-12-30 16:42:21 +00:00
{ label: 'Typescript' },
{ label: 'Python' },
{ label: 'Rust' },
{ label: 'Javascript' }
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',
2023-12-30 16:42:21 +00:00
dateFrom: 'May 2023',
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',
2023-12-30 16:42:21 +00:00
dateFrom: 'May 2022',
dateTo: 'May 2023'
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',
2023-12-30 16:42:21 +00:00
dateFrom: 'July 2020',
dateTo: 'Nov 2021'
2023-12-26 01:25:55 +00:00
}, {
logo: '#',
name: 'Makers Ladder LLC',
details: 'Did some thangs',
2023-12-30 16:42:21 +00:00
dateFrom: 'Dec 2019',
dateTo: 'Apr 2022'
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
}
}
type SkillsType = SkillProps
type JobsType = JobProps
2023-12-30 16:42:21 +00:00
type ProjectsType = ListItemProps