diff --git a/.eslintrc.json b/.eslintrc.json
new file mode 100644
index 0000000..bffb357
--- /dev/null
+++ b/.eslintrc.json
@@ -0,0 +1,3 @@
+{
+ "extends": "next/core-web-vitals"
+}
diff --git a/.gitignore b/.gitignore
index 169056a..6a94682 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,26 +1,37 @@
-# Logs
-logs
-*.log
+# See https://help.github.com/articles/ignoring-files/ for more about ignoring files.
+
+# dependencies
+/node_modules
+/.pnp
+.pnp.js
+package-lock.json
+
+# testing
+/coverage
+
+# next.js
+/.next/
+/out/
+
+# production
+/build
+
+# misc
+.DS_Store
+*.pem
+*.env
+
+# debug
npm-debug.log*
yarn-debug.log*
yarn-error.log*
-pnpm-debug.log*
-lerna-debug.log*
-node_modules
-dist
-dist-ssr
-*.local
-package-lock.json
+# local env files
+.env*.local
-# Editor directories and files
-.vscode/*
-!.vscode/extensions.json
-.idea
-.DS_Store
-*.suo
-*.ntvs*
-*.njsproj
-*.sln
-*.sw?
-node_modules
+# vercel
+.vercel
+
+# typescript
+*.tsbuildinfo
+next-env.d.ts
diff --git a/README.md b/README.md
new file mode 100644
index 0000000..f4da3c4
--- /dev/null
+++ b/README.md
@@ -0,0 +1,34 @@
+This is a [Next.js](https://nextjs.org/) project bootstrapped with [`create-next-app`](https://github.com/vercel/next.js/tree/canary/packages/create-next-app).
+
+## Getting Started
+
+First, run the development server:
+
+```bash
+npm run dev
+# or
+yarn dev
+# or
+pnpm dev
+```
+
+Open [http://localhost:3000](http://localhost:3000) with your browser to see the result.
+
+You can start editing the page by modifying `app/page.tsx`. The page auto-updates as you edit the file.
+
+This project uses [`next/font`](https://nextjs.org/docs/basic-features/font-optimization) to automatically optimize and load Inter, a custom Google Font.
+
+## Learn More
+
+To learn more about Next.js, take a look at the following resources:
+
+- [Next.js Documentation](https://nextjs.org/docs) - learn about Next.js features and API.
+- [Learn Next.js](https://nextjs.org/learn) - an interactive Next.js tutorial.
+
+You can check out [the Next.js GitHub repository](https://github.com/vercel/next.js/) - your feedback and contributions are welcome!
+
+## Deploy on Vercel
+
+The easiest way to deploy your Next.js app is to use the [Vercel Platform](https://vercel.com/new?utm_medium=default-template&filter=next.js&utm_source=create-next-app&utm_campaign=create-next-app-readme) from the creators of Next.js.
+
+Check out our [Next.js deployment documentation](https://nextjs.org/docs/deployment) for more details.
diff --git a/app/about/friends/page.tsx b/app/about/friends/page.tsx
new file mode 100644
index 0000000..e69de29
diff --git a/app/about/me/page.tsx b/app/about/me/page.tsx
new file mode 100644
index 0000000..e69de29
diff --git a/app/about/page.tsx b/app/about/page.tsx
new file mode 100644
index 0000000..e69de29
diff --git a/app/about/resume/page.tsx b/app/about/resume/page.tsx
new file mode 100644
index 0000000..e69de29
diff --git a/app/about/skills/[slug]/page.tsx b/app/about/skills/[slug]/page.tsx
new file mode 100644
index 0000000..e69de29
diff --git a/app/about/skills/page.tsx b/app/about/skills/page.tsx
new file mode 100644
index 0000000..e69de29
diff --git a/app/about/work/page.tsx b/app/about/work/page.tsx
new file mode 100644
index 0000000..e69de29
diff --git a/app/content.mdx b/app/content.mdx
new file mode 100644
index 0000000..ad2fdac
--- /dev/null
+++ b/app/content.mdx
@@ -0,0 +1,21 @@
+# Mikayla Dobson | Software Engineer
+
+Software design at the confluence of efficiency, ingenuity, and artistry.
+
+## Why do you want me on your team?
+
+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
+
+---
+
+## Want to know more?
+
+You're in the right place! This site is the best place to learn about the work I've done, what I know, and what I've
+done with the knowledge I have.
diff --git a/app/favicon.ico b/app/favicon.ico
new file mode 100644
index 0000000..718d6fe
Binary files /dev/null and b/app/favicon.ico differ
diff --git a/app/globals.css b/app/globals.css
new file mode 100644
index 0000000..fd81e88
--- /dev/null
+++ b/app/globals.css
@@ -0,0 +1,27 @@
+@tailwind base;
+@tailwind components;
+@tailwind utilities;
+
+:root {
+ --foreground-rgb: 0, 0, 0;
+ --background-start-rgb: 214, 219, 220;
+ --background-end-rgb: 255, 255, 255;
+}
+
+@media (prefers-color-scheme: dark) {
+ :root {
+ --foreground-rgb: 255, 255, 255;
+ --background-start-rgb: 0, 0, 0;
+ --background-end-rgb: 0, 0, 0;
+ }
+}
+
+body {
+ color: rgb(var(--foreground-rgb));
+ background: linear-gradient(
+ to bottom,
+ transparent,
+ rgb(var(--background-end-rgb))
+ )
+ rgb(var(--background-start-rgb));
+}
diff --git a/app/layout.tsx b/app/layout.tsx
new file mode 100644
index 0000000..f6d39b3
--- /dev/null
+++ b/app/layout.tsx
@@ -0,0 +1,30 @@
+import Navbar from '@/components/Navbar'
+import { MDXProvider } from '@mdx-js/react'
+import { Inter } from 'next/font/google'
+import './globals.css'
+
+const inter = Inter({ subsets: ['latin'] })
+
+export const metadata = {
+ title: 'Mikayla Dobson | Software Engineer',
+ description: 'Integrating artistry and technology to create beautiful software',
+}
+
+export default function RootLayout({
+ children,
+}: {
+ children: React.ReactNode
+}) {
+ return (
+
+
+
+ <>
+
+ {children}
+ >
+
+
+
+ )
+}
diff --git a/app/music/page.tsx b/app/music/page.tsx
new file mode 100644
index 0000000..e69de29
diff --git a/app/music/projects/page.tsx b/app/music/projects/page.tsx
new file mode 100644
index 0000000..e69de29
diff --git a/app/music/stream/page.tsx b/app/music/stream/page.tsx
new file mode 100644
index 0000000..e69de29
diff --git a/app/music/works/page.tsx b/app/music/works/page.tsx
new file mode 100644
index 0000000..e69de29
diff --git a/app/page.tsx b/app/page.tsx
new file mode 100644
index 0000000..99539c6
--- /dev/null
+++ b/app/page.tsx
@@ -0,0 +1,9 @@
+import Content from "./content.mdx"
+
+export default function Home() {
+ return (
+
+
+
+ )
+}
diff --git a/app/projects/[id]/page.tsx b/app/projects/[id]/page.tsx
new file mode 100644
index 0000000..e69de29
diff --git a/app/projects/page.tsx b/app/projects/page.tsx
new file mode 100644
index 0000000..e69de29
diff --git a/components/Navbar.tsx b/components/Navbar.tsx
new file mode 100644
index 0000000..1240fa4
--- /dev/null
+++ b/components/Navbar.tsx
@@ -0,0 +1,8 @@
+export default function Navbar() {
+ return (
+
+
Mikayla Dobson
+
+
+ )
+}
diff --git a/components/SiteTree.tsx b/components/SiteTree.tsx
new file mode 100644
index 0000000..e69de29
diff --git a/components/mdx/index.tsx b/components/mdx/index.tsx
new file mode 100644
index 0000000..c3ef96f
--- /dev/null
+++ b/components/mdx/index.tsx
@@ -0,0 +1,5 @@
+import { ReactNode } from "react";
+
+export const P1TAG = ({ children }: { children: ReactNode }) => (
+
{children}
+)
diff --git a/mdx-components.tsx b/mdx-components.tsx
new file mode 100644
index 0000000..77f0053
--- /dev/null
+++ b/mdx-components.tsx
@@ -0,0 +1,12 @@
+// https://github.com/vercel/next.js/blob/canary/examples/app-dir-mdx/mdx-components.tsx
+
+import type { MDXComponents } from 'mdx/types'
+
+// This file is required to use MDX in `app` directory.
+export function useMDXComponents(components: MDXComponents): MDXComponents {
+ return {
+ // Allows customizing built-in components, e.g. to add styling.
+ // h1: ({ children }) =>
{children}
,
+ ...components,
+ }
+}
diff --git a/next.config.js b/next.config.js
new file mode 100644
index 0000000..e1f35af
--- /dev/null
+++ b/next.config.js
@@ -0,0 +1,26 @@
+// more about configuring mdx
+// https://nextjs.org/docs/pages/building-your-application/configuring/mdx
+
+const withMDX = require('@next/mdx')({
+ extension: /\.mdx?$/,
+ options: {
+ // If you use remark-gfm, you'll need to use next.config.mjs
+ // as the package is ESM only
+ // https://github.com/remarkjs/remark-gfm#install
+ remarkPlugins: [require("remark-prism")],
+ rehypePlugins: [],
+ // If you use `MDXProvider`, uncomment the following line.
+ // providerImportSource: "@mdx-js/react",
+ },
+});
+
+/** @type {import('next').NextConfig} */
+const nextConfig = {
+ pageExtensions: ['js', 'jsx', 'ts', 'tsx', 'md', 'mdx'],
+ reactStrictMode: true,
+ experimental: {
+ appDir: true,
+ }
+}
+
+module.exports = withMDX(nextConfig);
diff --git a/package.json b/package.json
new file mode 100644
index 0000000..5393650
--- /dev/null
+++ b/package.json
@@ -0,0 +1,29 @@
+{
+ "name": "mikayla-dobson-dev",
+ "version": "0.1.0",
+ "private": true,
+ "scripts": {
+ "dev": "next dev",
+ "build": "next build",
+ "start": "next start",
+ "lint": "next lint"
+ },
+ "dependencies": {
+ "@mdx-js/loader": "^2.3.0",
+ "@mdx-js/react": "^2.3.0",
+ "@next/mdx": "^13.4.4",
+ "@types/node": "20.2.5",
+ "@types/react": "18.2.7",
+ "@types/react-dom": "18.2.4",
+ "autoprefixer": "10.4.14",
+ "eslint": "8.41.0",
+ "eslint-config-next": "13.4.4",
+ "next": "13.4.4",
+ "postcss": "8.4.24",
+ "react": "18.2.0",
+ "react-dom": "18.2.0",
+ "remark-prism": "^1.3.6",
+ "tailwindcss": "3.3.2",
+ "typescript": "5.0.4"
+ }
+}
diff --git a/postcss.config.js b/postcss.config.js
new file mode 100644
index 0000000..33ad091
--- /dev/null
+++ b/postcss.config.js
@@ -0,0 +1,6 @@
+module.exports = {
+ plugins: {
+ tailwindcss: {},
+ autoprefixer: {},
+ },
+}
diff --git a/previous/README.md b/previous/README.md
deleted file mode 100644
index 39ddc34..0000000
--- a/previous/README.md
+++ /dev/null
@@ -1,5 +0,0 @@
-# Mikayla Dobson, Web Developer, Software Engineer, Musician
-
-Thanks for checking out my portfolio site! This repo has been migrated over from an [older version](https://github.com/innocuous-symmetry/about-mikayla) which is no longer being maintained. This version will stay up to date with my latest projects and experience!
-
-Created using React, Sass, Material UI, and Vite. Hosted with Github pages.
\ No newline at end of file
diff --git a/previous/index.html b/previous/index.html
deleted file mode 100644
index bc48649..0000000
--- a/previous/index.html
+++ /dev/null
@@ -1,16 +0,0 @@
-
-
-
-
-
-
-
-
-
- Mikayla Dobson | Developer
-
-
-
-
-
-
diff --git a/previous/package.json b/previous/package.json
deleted file mode 100644
index 78ad9b7..0000000
--- a/previous/package.json
+++ /dev/null
@@ -1,27 +0,0 @@
-{
- "name": "about-mikayla-0722",
- "private": true,
- "version": "0.0.0",
- "scripts": {
- "dev": "vite",
- "build": "vite build",
- "preview": "vite preview"
- },
- "dependencies": {
- "@emotion/react": "^11.9.3",
- "@emotion/styled": "^11.9.3",
- "@mui/icons-material": "^5.8.4",
- "@mui/material": "^5.8.7",
- "react": "^18.0.0",
- "react-dom": "^18.0.0",
- "react-router-dom": "^6.3.0",
- "sass": "^1.53.0",
- "uuid": "^8.3.2"
- },
- "devDependencies": {
- "@types/react": "^18.0.0",
- "@types/react-dom": "^18.0.0",
- "@vitejs/plugin-react": "^1.3.0",
- "vite": "^2.9.9"
- }
-}
diff --git a/previous/src/App.jsx b/previous/src/App.jsx
deleted file mode 100644
index 4ca9c12..0000000
--- a/previous/src/App.jsx
+++ /dev/null
@@ -1,33 +0,0 @@
-import { BrowserRouter, Routes, Route } from 'react-router-dom';
-
-import Welcome from './pages/Welcome';
-import AboutMe from './pages/AboutMe';
-import Projects from './pages/Projects';
-import Technologies from './pages/Technologies';
-import Links from './pages/Links';
-import CreativeWorks from './pages/CreativeWorks';
-import Navbar from './components/Navbar';
-
-import './sass/App.scss';
-
-function App() {
- return (
-
- { visible && data.jsx }
-
- )
-}
\ No newline at end of file
diff --git a/previous/src/components/AboutMe/SectionData.jsx b/previous/src/components/AboutMe/SectionData.jsx
deleted file mode 100644
index 83942d5..0000000
--- a/previous/src/components/AboutMe/SectionData.jsx
+++ /dev/null
@@ -1,126 +0,0 @@
-import { Card, Chip } from "@mui/material"
-import { v4 } from 'uuid';
-
-export const WhatIDo = {
- title: "What I Do",
- jsx: (
-
-
-
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.
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.
-
- { DizationConcepts.map(each => )}
-
-
-
-
Web Design Consultant
-
Metazu Studio | Nashville, TN Mar 2022 - present
-
Relevant Duties: collaboration on the design and production of responsive web apps, using skills including:
-
- { MetazuConcepts.map(each => ) }
-
-
-
-
-
Singer-Songwriter, Composer
-
- Contract, Independent
-
- 2010 - present
-
-
- Multi-instrumentalist, singer-songwriter, and producer, well-versed in a number of musical idioms
- and music technologies.
-
-
- { MusicExperiences.map(each => ) }
-
-
-
-
-
Barista, Barista Trainer
-
Starbucks Coffee Co. 2017 - 2021
-
- Relevant Duties: collaboration, problem-solving, streamlined execution of a process,
- attention to detail, adhering to standardized safety protocols, observing best practices, training new hires.
-
-
-
- )
-}
\ No newline at end of file
diff --git a/previous/src/components/Navbar.jsx b/previous/src/components/Navbar.jsx
deleted file mode 100644
index dda4cbd..0000000
--- a/previous/src/components/Navbar.jsx
+++ /dev/null
@@ -1,95 +0,0 @@
-import { Button, Drawer, List, ListItem } from "@mui/material"
-import { useEffect, useState } from "react"
-import { useNavigate } from "react-router-dom";
-
-import MenuIcon from '@mui/icons-material/Menu';
-import '../sass/Navbar.scss';
-import { v4 } from "uuid";
-
-const navOptions = [
- "Home",
- "About Me",
- "My Projects",
- "My Technologies",
- "Links",
- "Creative Work"
-]
-
-export default function Navbar() {
- const [open, setOpen] = useState(false);
- const [selected, setSelected] = useState(null);
-
- const navigate = useNavigate();
-
- useEffect(() => {
- setOpen(false);
- switch (selected) {
- case 0:
- navigate('/');
- break;
- case 1:
- navigate('/about-me');
- break;
- case 2:
- navigate('/projects');
- break;
- case 3:
- navigate('/technologies');
- break;
- case 4:
- navigate('/links');
- break;
- case 5:
- navigate('/creative-works');
- break;
- default:
- navigate('/');
- break;
- }
- }, [selected, navigate]);
-
- return (
-
-
A small-scale timestamp/productivity management tool for individual use and logging of
- time, including compartmentalization by task and some aggregate functions based on queries.
-
-
Command-line interface built on Python with a SQLite Database.
- )
-}
\ No newline at end of file
diff --git a/previous/src/pages/CreativeWorks.jsx b/previous/src/pages/CreativeWorks.jsx
deleted file mode 100644
index f700708..0000000
--- a/previous/src/pages/CreativeWorks.jsx
+++ /dev/null
@@ -1,49 +0,0 @@
-import "../sass/pages/CreativeWorks.scss";
-import { Card } from "@mui/material";
-
-import modulars from "../media/modulars.jpeg";
-import score from "../media/paper_score.jpeg";
-import bandcamp from "../media/bandcamp-button-circle-line-black-128.png";
-import soundcloud from "../media/soundcloud-icon.png";
-
-export default function CreativeWorks() {
- return (
-
-
Creative works
-
-
-
-
-
-
-
-
I would be remiss not to take the opportunity to speak about how I feel my experience as a musician informs my work as a developer!
-
Working as a musician helped me to develop invaluable skills that provide me with a unique frame of reference in regards to my approach to technical problems.
-
See below some of the relevant applications of my musical experience:
-
-
-
-
Modular synthesis, which heavily involves fundamentals of arithmetic and data flow
-
Orchestration; ensuring all instrumental parts are executable and comfortable to play within a given set of parameters
-
Learning to play new instruments, and adapt my pre-existing knowledge to apply to new frames of reference
-
Audio engineering, and the associated practices of learning/using music technology
-
Proper interaction of components within a complex system
-
Managing proportional integrity in musical forms
-
-
-
-
If you're interested, you can find some samples of my music at the links below:
- )
-}
\ No newline at end of file
diff --git a/previous/src/pages/Welcome.jsx b/previous/src/pages/Welcome.jsx
deleted file mode 100644
index 8087810..0000000
--- a/previous/src/pages/Welcome.jsx
+++ /dev/null
@@ -1,35 +0,0 @@
-import { Avatar, Card, Divider } from '@mui/material';
-import profile from '../media/profile.jpeg';
-import '../sass/pages/Welcome.scss';
-
-export default function Welcome() {
- return (
-
-
-
-
Hi, my name is Mikayla Dobson!
-
Thanks for taking the time to learn more about me!
-
-
-
-
-
-
- I am a software engineer based in Nashville, Tennessee. I build performant
- web applications, seek out simple solutions to complex problems, and emphasize
- elegance of design.
-
-
- Some of my most frequently used technologies include React, Redux, Node.js,
- Express, TypeScript, Vite, PostgreSQL, MongoDB, and Sass, among others.
-