diff --git a/.eslintrc.json b/.eslintrc.json index bffb357..f16da9b 100644 --- a/.eslintrc.json +++ b/.eslintrc.json @@ -1,3 +1,6 @@ { - "extends": "next/core-web-vitals" + "extends": "next/core-web-vitals", + "rules": { + "import/no-anonymous-default-export": "off" + } } diff --git a/app/about/me/content.mdx b/app/about/me/content.mdx new file mode 100644 index 0000000..0d0c3ca --- /dev/null +++ b/app/about/me/content.mdx @@ -0,0 +1,79 @@ +# What I Do + +## CREATE FULL STACK WEB APPLICATIONS + +I have experience building web applications with and without back-end integrations. + +I am comfortable conceptualizing and organizing complex structures, and as such, my projects tend to be natural in their structure and easy to maintain. + +## COLLABORATIVE SOFTWARE ENGINEERING + +I have consulted on small teams with: + +- Dization, a Pittsburgh-based company developing an enterprise resource planning solution for small businesses +- Metazu Studio, a Nashville-based startup connecting clients with services in video production, AR/VR, social media, photography, and web design. + +My work on these projects deals with managing the complexities of full-stack web engineering, as well as delivering beautiful user experiences to end customers. + +## CREATIVE MINDED PROBLEM SOLVER + +My background as a musician, composer, producer, and artistic collaborator provide me with a unique frame of reference for solving technical problems and adapting to dynamic environments. + +## DATABASE OPERATIONS AND MANAGEMENT + +My projects have featured both relational and non-relational databases, in particular PostgreSQL and MongoDB. I also have experience with various methods of connecting these to front-end applications. + +# Education + +## BACHELORS OF ARTS, MUSIC + +Southern Methodist University, 2014 - 2017 + +Concentrations: Piano Performance, Music Composition, Music Theory + +Minor: French Language and Culture + +## SELF DIRECTED STUDY, WEB ENGINEERING + +2021 - present + +Codecademy Pro, Front End Engineer Career Path + +Concentrations: React, Redux, Express, PostgreSQL + +# Employment + +## SOFTWARE ENGINEER + +Dropper Studio | Nashville, TN +Mar 2023 - present +Relevant Duties: developing a full-stack web application for a client in the music industry. + +- Next.js +- tRPC, MongoDB +- Integrating additional services (Redis, S3) +- Networking and cloud management (on premise) +- UI/UX Design + +## FULL STACK ENGINEER, INTERN + +Dization, Inc | Pittsburgh, PA (remote) +Sept 2022 - Mar 2023 +Relevant Duties: contributing to the development of a full-stack enterprise resource planning application built using the LAMP stack hosted on AWS. + +- Enterprise Resource Planning +- AWS +- System Design +- UI/UX Design +- Database management + +## FULL STACK ENGINEER, INTERN +Dization, Inc | Pittsburgh, PA (remote) +Sept 2022 - present +Relevant Duties: contributing to the development of a full-stack enterprise resource planning application built using the LAMP stack hosted on AWS. + +Enterprise Resource Planning +AWS +System Design +UI/UX Design +Database management diff --git a/app/about/me/page.tsx b/app/about/me/page.tsx index 98ef263..cb829aa 100644 --- a/app/about/me/page.tsx +++ b/app/about/me/page.tsx @@ -1,7 +1,2 @@ -export default function AboutMePage() { - return ( -
-

About Me Page

-
- ) -} +'use client' +export { default } from "./content.mdx" diff --git a/app/about/skills/content.mdx b/app/about/skills/content.mdx new file mode 100644 index 0000000..60ddb57 --- /dev/null +++ b/app/about/skills/content.mdx @@ -0,0 +1,24 @@ +Check out my skills, and some of the technologies I work with the most: + +# Programming Languages + +## JavaScript + +- Typescript +- React / Next.js + - Redux + - tRPC +- Node.js + - Express.js + - ToneJS +- jQuery +- Jest + +## Python + +- Pandas +- Micropython + +# Front End Skills + + diff --git a/app/about/skills/page.tsx b/app/about/skills/page.tsx index e88ea09..cb829aa 100644 --- a/app/about/skills/page.tsx +++ b/app/about/skills/page.tsx @@ -1,7 +1,2 @@ -export default function SkillsPage() { - return ( -
-

Skills Page

-
- ) -} +'use client' +export { default } from "./content.mdx" diff --git a/app/content.mdx b/app/content.mdx index ad2fdac..e82c304 100644 --- a/app/content.mdx +++ b/app/content.mdx @@ -6,12 +6,14 @@ Software design at the confluence of efficiency, ingenuity, and artistry. Here are some things I've provided for my teams in the past: -- Connecting the dots - - My strength lies in the big picture. My background as a composer of classical music has given me a lasting sense - for how to assemble the pieces of a project into a cohesive whole. - - As a software engineer, this means: - - I'm comfortable living in the world between the front-end and back-end - - I love solving emergent problems as a project's stack is expanding +### Connecting the dots + +My strength lies in the big picture. My background as a composer of classical music has given me a lasting sense for how to assemble the pieces of a project into a cohesive whole. + +As a software engineer, this means: + +- I'm comfortable living in the world between the front-end and back-end +- I love solving emergent problems as a project's stack is expanding --- diff --git a/app/layout.tsx b/app/layout.tsx index 6c0a171..02bb3d7 100644 --- a/app/layout.tsx +++ b/app/layout.tsx @@ -1,9 +1,11 @@ 'use client' +import Head from 'next/head' import Navbar from '@/components/Navbar' import SiteTree from '@/components/SiteTree' import { MDXProvider } from '@mdx-js/react' import { Inter } from 'next/font/google' +import components from '@/components/mdx' import './globals.css' const inter = Inter({ subsets: ['latin'] }) @@ -13,22 +15,22 @@ export const metadata = { description: 'Integrating artistry and technology to create beautiful software', } -export default function RootLayout({ - children, -}: { - children: React.ReactNode -}) { +export default function RootLayout({ children }: { children: React.ReactNode }) { return ( - - - <> - - + + {metadata.title} + + + + + + + + {children} - - - + + ) } diff --git a/app/page.tsx b/app/page.tsx index 99539c6..fe0cd63 100644 --- a/app/page.tsx +++ b/app/page.tsx @@ -1,3 +1,4 @@ +'use client' import Content from "./content.mdx" export default function Home() { diff --git a/components/mdx/index.tsx b/components/mdx/index.tsx index c3ef96f..fa5859c 100644 --- a/components/mdx/index.tsx +++ b/components/mdx/index.tsx @@ -1,5 +1,44 @@ -import { ReactNode } from "react"; +import { v4 } from "uuid" -export const P1TAG = ({ children }: { children: ReactNode }) => ( -

{children}

+type ElementType = React.FC +type FormattedTags = { + [Key in keyof JSX.IntrinsicElements]: ElementType +} + +const H1TAG: ElementType<"h1"> = ({ children }) => { return ( +

{children}

+)} + +const H2Tag: ElementType<"h2"> = ({ children }) => ( +

{children}

) + +const H3Tag: ElementType<"h3"> = ({ children }) => ( +

{children}

+) + +const H4Tag: ElementType<"h4"> = ({ children }) => ( +

{children}

+) + +const PTag: ElementType<"p"> = ({ children }) => ( +

{children}

+) + +const LiTag: ElementType<"li"> = ({ children }) => ( +
  • {children}
  • +) + +const BrTag: ElementType<"br"> = () => ( +
    +) + +export default { + "h1": H1TAG, + "h2": H2Tag, + "h3": H3Tag, + "h4": H4Tag, + "p": PTag, + "li": LiTag, + "br": BrTag +} satisfies Partial diff --git a/next.config.js b/next.config.js index e1f35af..6ac55f7 100644 --- a/next.config.js +++ b/next.config.js @@ -9,8 +9,7 @@ const withMDX = require('@next/mdx')({ // https://github.com/remarkjs/remark-gfm#install remarkPlugins: [require("remark-prism")], rehypePlugins: [], - // If you use `MDXProvider`, uncomment the following line. - // providerImportSource: "@mdx-js/react", + providerImportSource: "@mdx-js/react", }, }); @@ -18,9 +17,6 @@ const withMDX = require('@next/mdx')({ const nextConfig = { pageExtensions: ['js', 'jsx', 'ts', 'tsx', 'md', 'mdx'], reactStrictMode: true, - experimental: { - appDir: true, - } } module.exports = withMDX(nextConfig);