diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index b5a788d..3dd6aa1 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -12,7 +12,6 @@ - `apps` - `main` - https://developomp.com - `blog` - https://blog.developomp.com - - `portfolio` - https://portfolio.developomp.com - `packages` - shared stuff used across different packages - `content` - Shared content - `eslint-config` - ESLint configuration files @@ -46,7 +45,6 @@ - `pnpm dev` - Run all apps and packages locally - blog - http://localhost:3000 - main - http://localhost:5173 - - portfolio - http://localhost:5174 - `pnpm lint` - Lint all apps and packages - `pnpm clean` - Remove all auto-generated content such as `node_modules` and `dist`. diff --git a/apps/blog/package.json b/apps/blog/package.json index 3638719..58800d4 100644 --- a/apps/blog/package.json +++ b/apps/blog/package.json @@ -46,6 +46,7 @@ "prettier": "^3.2.5", "prettier-plugin-tailwindcss": "^0.5.9", "react": "18.2.0", + "react-collapse": "^5.1.1", "react-dom": "18.2.0", "serve": "^14.2.0", "tailwindcss": "^3.4.0", diff --git a/apps/blog/src/app/[category]/[[...slug]]/helper.ts b/apps/blog/src/app/[category]/[[...slug]]/helper.ts index 52f268c..6d0b897 100644 --- a/apps/blog/src/app/[category]/[[...slug]]/helper.ts +++ b/apps/blog/src/app/[category]/[[...slug]]/helper.ts @@ -75,13 +75,6 @@ export function parsePageData( order: [], length: 0, - - // portfolio (unused) - - image: "", - overview: "", - badges: [], - repo: "", } // load and parse content differently depending on the content type diff --git a/apps/main/src/app.html b/apps/main/src/app.html index 921b273..9bb86dd 100644 --- a/apps/main/src/app.html +++ b/apps/main/src/app.html @@ -1,4 +1,4 @@ - + @@ -8,7 +8,7 @@ developomp @@ -17,7 +17,7 @@ diff --git a/apps/main/src/components/Navbar.svelte b/apps/main/src/components/Navbar.svelte deleted file mode 100644 index 76c9b8c..0000000 --- a/apps/main/src/components/Navbar.svelte +++ /dev/null @@ -1,34 +0,0 @@ - - - - - diff --git a/apps/main/src/routes/(app)/+layout.svelte b/apps/main/src/routes/(app)/+layout.svelte index 608bf4a..68f5fd9 100644 --- a/apps/main/src/routes/(app)/+layout.svelte +++ b/apps/main/src/routes/(app)/+layout.svelte @@ -1,10 +1,7 @@ -
diff --git a/apps/main/static/sitemap.xml b/apps/main/static/sitemap.xml index 79fe493..158e31d 100644 --- a/apps/main/static/sitemap.xml +++ b/apps/main/static/sitemap.xml @@ -1,23 +1,18 @@ - - https://developomp.com - always - 1.0 - - - https://blog.developomp.com - always - 0.8 - - - https://portfolio.developomp.com - always - 0.9 - - - https://developomp.com/resume - always - 0.4 - + + https://developomp.com + always + 1.0 + + + https://blog.developomp.com + always + 0.8 + + + https://developomp.com/resume + always + 0.4 + \ No newline at end of file diff --git a/apps/portfolio/.eslintrc.cjs b/apps/portfolio/.eslintrc.cjs deleted file mode 100644 index de84612..0000000 --- a/apps/portfolio/.eslintrc.cjs +++ /dev/null @@ -1,8 +0,0 @@ -module.exports = { - root: true, - extends: ["next/core-web-vitals", "@developomp-site/eslint-config"], - rules: { - "react-hooks/exhaustive-deps": "off", - "react/no-unescaped-entities": "off", - }, -} diff --git a/apps/portfolio/.gitignore b/apps/portfolio/.gitignore deleted file mode 100644 index 058b9db..0000000 --- a/apps/portfolio/.gitignore +++ /dev/null @@ -1,36 +0,0 @@ -# See https://help.github.com/articles/ignoring-files/ for more about ignoring files. - -# dependencies -/node_modules -/.pnp -.pnp.js - -# testing -/coverage -/test-results - -# next.js -/.next/ -/out/ - -# production -/build - -# misc -.DS_Store -*.pem - -# debug -npm-debug.log* -yarn-debug.log* -yarn-error.log* - -# local env files -.env*.local - -# vercel -.vercel - -# typescript -*.tsbuildinfo -next-env.d.ts diff --git a/apps/portfolio/.prettierrc.cjs b/apps/portfolio/.prettierrc.cjs deleted file mode 100644 index 15b4bc0..0000000 --- a/apps/portfolio/.prettierrc.cjs +++ /dev/null @@ -1,5 +0,0 @@ -/** @type {import("prettier").Options} */ -module.exports = { - ...require("@developomp-site/prettier-config"), - plugins: ["prettier-plugin-tailwindcss"], -} diff --git a/apps/portfolio/e2e/notfound.spec.ts b/apps/portfolio/e2e/notfound.spec.ts deleted file mode 100644 index df2645b..0000000 --- a/apps/portfolio/e2e/notfound.spec.ts +++ /dev/null @@ -1,6 +0,0 @@ -import { expect, test } from "@playwright/test" - -test("Should return 404 for invalid routes", async ({ page }) => { - const response = await page.goto("/path/that/does/not/exist") - expect(response?.status()).toEqual(404) -}) diff --git a/apps/portfolio/e2e/title.spec.ts b/apps/portfolio/e2e/title.spec.ts deleted file mode 100644 index d8c1bef..0000000 --- a/apps/portfolio/e2e/title.spec.ts +++ /dev/null @@ -1,14 +0,0 @@ -import { expect, test } from "@playwright/test" - -const prefix = "pomp's portfolio | " - -test("should have proper title", async ({ page }) => { - await page.goto("/") - await expect(page).toHaveTitle(`${prefix}Home`) - - await page.goto("/project/developomp-site") - await expect(page).toHaveTitle(`${prefix}developomp-site`) - - await page.goto("/404") - await expect(page).toHaveTitle(`${prefix}Page Not Found`) -}) diff --git a/apps/portfolio/next-sitemap.config.js b/apps/portfolio/next-sitemap.config.js deleted file mode 100644 index 3957fce..0000000 --- a/apps/portfolio/next-sitemap.config.js +++ /dev/null @@ -1,8 +0,0 @@ -// https://next-sitemap.iamvishnusankar.com/docs/documentation/configuration -/** @type {import('next-sitemap').IConfig} */ -module.exports = { - siteUrl: "https://portfolio.developomp.com", - generateRobotsTxt: true, - outDir: "dist", - priority: 0.8, -} diff --git a/apps/portfolio/next.config.js b/apps/portfolio/next.config.js deleted file mode 100644 index 28e04b1..0000000 --- a/apps/portfolio/next.config.js +++ /dev/null @@ -1,11 +0,0 @@ -/** @type {import('next').NextConfig} */ -const nextConfig = { - output: "export", - distDir: "dist", - images: { unoptimized: true }, - experimental: { - externalDir: true, - }, -} - -module.exports = nextConfig diff --git a/apps/portfolio/package.json b/apps/portfolio/package.json deleted file mode 100644 index cbbab3e..0000000 --- a/apps/portfolio/package.json +++ /dev/null @@ -1,55 +0,0 @@ -{ - "name": "@developomp-site/portfolio", - "version": "0.0.0", - "private": true, - "scripts": { - "dev": "open-cli http://localhost:5174 && next dev -p 5174", - "build": "next build", - "postbuild": "next-sitemap", - "serve": "serve dist --listen 5174", - "test:e2e": "playwright test", - "lint": "next lint", - "clean": "rm -rf .next .turbo dist node_modules test-results" - }, - "devDependencies": { - "@developomp-site/blog": "workspace:*", - "@developomp-site/content": "workspace:*", - "@developomp-site/eslint-config": "workspace:*", - "@developomp-site/playwright-config": "workspace:*", - "@developomp-site/prettier-config": "workspace:*", - "@developomp-site/tailwind-config": "workspace:*", - "@fontsource/noto-sans-kr": "^5.0.5", - "@fontsource/source-code-pro": "^5.0.5", - "@fortawesome/free-brands-svg-icons": "^6.4.0", - "@fortawesome/free-solid-svg-icons": "^6.4.0", - "@fortawesome/react-fontawesome": "^0.2.0", - "@kunukn/react-collapse": "^2.2.10", - "@playwright/test": "^1.36.2", - "@types/highlight.js": "^10.1.0", - "@types/katex": "^0.16.7", - "@types/node": "^20.10.5", - "@types/react": "18.2.17", - "@types/react-collapse": "^5.0.1", - "@types/react-dom": "18.2.7", - "@typescript-eslint/eslint-plugin": "^6.15.0", - "@typescript-eslint/parser": "^6.15.0", - "autoprefixer": "^10.4.16", - "eslint": "^8.56.0", - "eslint-config-next": "13.4.12", - "highlight.js": "^11.8.0", - "katex": "^0.16.8", - "next": "13.4.12", - "next-sitemap": "^4.1.8", - "open-cli": "^7.2.0", - "postcss": "^8.4.32", - "postcss-load-config": "^4.0.1", - "prettier": "^3.2.5", - "prettier-plugin-tailwindcss": "^0.5.9", - "react": "18.2.0", - "react-collapse": "^5.1.1", - "react-dom": "18.2.0", - "serve": "^14.2.0", - "tailwindcss": "^3.4.0", - "typescript": "^5.3.3" - } -} diff --git a/apps/portfolio/playwright.config.ts b/apps/portfolio/playwright.config.ts deleted file mode 100644 index 0766427..0000000 --- a/apps/portfolio/playwright.config.ts +++ /dev/null @@ -1,5 +0,0 @@ -import { createConfig } from "@developomp-site/playwright-config" - -export default createConfig({ - port: 5174, -}) diff --git a/apps/portfolio/postcss.config.js b/apps/portfolio/postcss.config.js deleted file mode 100644 index 4684711..0000000 --- a/apps/portfolio/postcss.config.js +++ /dev/null @@ -1,7 +0,0 @@ -/** @type {import('postcss-load-config').Config} */ -module.exports = { - plugins: { - tailwindcss: {}, - autoprefixer: {}, - }, -} diff --git a/apps/portfolio/public/favicon.svg b/apps/portfolio/public/favicon.svg deleted file mode 100644 index 6cba67a..0000000 --- a/apps/portfolio/public/favicon.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/apps/portfolio/public/img/portfolio/developomp-site.avif b/apps/portfolio/public/img/portfolio/developomp-site.avif deleted file mode 100644 index 846b69d..0000000 Binary files a/apps/portfolio/public/img/portfolio/developomp-site.avif and /dev/null differ diff --git a/apps/portfolio/public/img/portfolio/wbm-installer.avif b/apps/portfolio/public/img/portfolio/wbm-installer.avif deleted file mode 100644 index 8d3a2fa..0000000 Binary files a/apps/portfolio/public/img/portfolio/wbm-installer.avif and /dev/null differ diff --git a/apps/portfolio/public/img/portfolio/wbm-overlays.avif b/apps/portfolio/public/img/portfolio/wbm-overlays.avif deleted file mode 100644 index 55a3bc2..0000000 Binary files a/apps/portfolio/public/img/portfolio/wbm-overlays.avif and /dev/null differ diff --git a/apps/portfolio/public/img/portfolio/wbm.avif b/apps/portfolio/public/img/portfolio/wbm.avif deleted file mode 100644 index 25c47ee..0000000 Binary files a/apps/portfolio/public/img/portfolio/wbm.avif and /dev/null differ diff --git a/apps/portfolio/public/img/portfolio/wbp.avif b/apps/portfolio/public/img/portfolio/wbp.avif deleted file mode 100644 index d184b7c..0000000 Binary files a/apps/portfolio/public/img/portfolio/wbp.avif and /dev/null differ diff --git a/apps/portfolio/public/nojs.avif b/apps/portfolio/public/nojs.avif deleted file mode 100644 index adfa49a..0000000 Binary files a/apps/portfolio/public/nojs.avif and /dev/null differ diff --git a/apps/portfolio/src/app/global.scss b/apps/portfolio/src/app/global.scss deleted file mode 100644 index 3d5b088..0000000 --- a/apps/portfolio/src/app/global.scss +++ /dev/null @@ -1,22 +0,0 @@ -@tailwind base; -@tailwind components; -@tailwind utilities; - -* { - @apply scroll-m-16 leading-8; -} - -html { - @apply bg-dark-ui-bg font-noto-sans text-dark-text-default; -} - -body { - @apply m-0 flex h-full min-h-screen w-full scroll-m-16 flex-col items-center p-0; -} - -ul, -ol { - list-style: circle; - padding-left: 2.5rem; - list-style-position: inside; -} diff --git a/apps/portfolio/src/app/layout.tsx b/apps/portfolio/src/app/layout.tsx deleted file mode 100644 index 791f345..0000000 --- a/apps/portfolio/src/app/layout.tsx +++ /dev/null @@ -1,86 +0,0 @@ -import "@fortawesome/fontawesome-svg-core/styles.css" -import "@fontsource/noto-sans-kr/400.css" -import "@fontsource/noto-sans-kr/700.css" -import "@fontsource/source-code-pro" -import "@developomp-site/blog/src/styles/anchor.scss" -import "@developomp-site/blog/src/styles/blockQuote.scss" -import "@developomp-site/blog/src/styles/button.scss" -import "@developomp-site/blog/src/styles/callout.scss" -import "@developomp-site/blog/src/styles/checkbox.scss" -import "@developomp-site/blog/src/styles/code.scss" -import "@developomp-site/blog/src/styles/colorChip.scss" -import "@developomp-site/blog/src/styles/heading.scss" -import "@developomp-site/blog/src/styles/hr.scss" -import "@developomp-site/blog/src/styles/img.scss" -import "@developomp-site/blog/src/styles/katex.scss" -import "@developomp-site/blog/src/styles/kbd.scss" -import "@developomp-site/blog/src/styles/list.scss" -import "@developomp-site/blog/src/styles/mark.scss" -import "@developomp-site/blog/src/styles/scrollbar.scss" -import "@developomp-site/blog/src/styles/subSup.scss" -import "@developomp-site/blog/src/styles/table.scss" -import "@developomp-site/blog/src/styles/theme-visibility.scss" -import "./global.scss" - -import { type Metadata } from "next" -import Image from "next/image" - -import Header from "@/components/Header" - -export const metadata: Metadata = { - metadataBase: new URL("https://portfolio.developomp.com"), - title: { - template: "pomp's portfolio | %s", - default: "", - }, - description: "developomp's portfolio", - openGraph: { - title: "pomp's portfolio", - siteName: "developomp's portfolio", - description: "developomp's portfolio", - type: "website", - url: "https://portfolio.developomp.com", - images: "https://portfolio.developomp.com/favicon.svg", - }, -} - -export default function RootLayout({ - children, -}: { - children: React.ReactNode -}) { - return ( - - - - - - - - - -
-
- {children} -
- - - ) -} diff --git a/apps/portfolio/src/app/not-found.tsx b/apps/portfolio/src/app/not-found.tsx deleted file mode 100644 index 2db8189..0000000 --- a/apps/portfolio/src/app/not-found.tsx +++ /dev/null @@ -1,21 +0,0 @@ -import { type Metadata } from "next" - -export const metadata: Metadata = { - metadataBase: new URL("https://portfolio.developomp.com"), - title: "pomp's portfolio | Page Not Found", - openGraph: { - title: "pomp's portfolio | Page Not Found", - }, -} - -export default function NotFound() { - return ( - <> -

- 404 -

- -

Page Not Found

- - ) -} diff --git a/apps/portfolio/src/app/page.tsx b/apps/portfolio/src/app/page.tsx deleted file mode 100644 index 59d4768..0000000 --- a/apps/portfolio/src/app/page.tsx +++ /dev/null @@ -1,40 +0,0 @@ -import type { ProjectKey } from "@developomp-site/content/exports/portfolio" -import portfolio from "@developomp-site/content/exports/portfolio" -import type { Metadata } from "next" - -import Badge from "@/components/Badge" -import ProjectCard from "@/components/ProjectCard" - -function getSkills(): JSX.Element[] { - return portfolio.skills.map((slug) => { - return - }) -} - -function getProjects(): JSX.Element[] { - return (Object.keys(portfolio.projects) as ProjectKey[]).map( - (projectID) => ( - - ), - ) -} - -export const metadata: Metadata = { - metadataBase: new URL("https://blog.developomp.com"), - title: "pomp's portfolio | Home", -} - -export default function Page() { - return ( - <> -

developomp's Portfolio

-
-
{getSkills()}
-
{getProjects()}
- - ) -} diff --git a/apps/portfolio/src/app/project/[id]/page.tsx b/apps/portfolio/src/app/project/[id]/page.tsx deleted file mode 100644 index b781ded..0000000 --- a/apps/portfolio/src/app/project/[id]/page.tsx +++ /dev/null @@ -1,98 +0,0 @@ -import "./style.scss" - -import Toc from "@developomp-site/blog/src/app/[category]/[[...slug]]/Toc" -import type { ProjectKey } from "@developomp-site/content/exports/portfolio" -import portfolio from "@developomp-site/content/exports/portfolio" -import { faGithub } from "@fortawesome/free-brands-svg-icons" -import { FontAwesomeIcon } from "@fortawesome/react-fontawesome" -import { type Metadata } from "next" -import Link from "next/link" - -import Badge from "@/components/Badge" - -interface Data { - title: string - toc?: string - content: string - - image: string // image url - overview: string - badges: string[] - repo: string -} - -interface Params { - id: ProjectKey -} - -interface Props { - params: Params -} - -async function getData(id: ProjectKey): Promise { - const content = await import( - `@developomp-site/content/dist/content/projects/${id}.json` - ) - const data = portfolio.projects[id] - - return { - content: content.content, - toc: content.toc, - title: data.name, - image: data.image, - overview: data.overview, - badges: data.badges, - repo: data.repo, - } -} - -export async function generateStaticParams(): Promise { - return (Object.keys(portfolio.projects) as ProjectKey[]).map((id) => ({ - id, - })) -} - -export async function generateMetadata({ params }: Props): Promise { - const data = await getData(params.id) - return { - metadataBase: new URL("https://portfolio.developomp.com"), - title: data.title, - openGraph: { - title: `pomp's portfolio | ${data.title}`, - }, - } -} - -export default async function Project({ params }: Props) { - const data = await getData(params.id) - - return ( - <> -
-

{data.title}

- - - -
-
- {data.badges.map((slug) => { - return - })} -
-
- - - - {/* page content */} -
- - ) -} diff --git a/apps/portfolio/src/app/project/[id]/style.scss b/apps/portfolio/src/app/project/[id]/style.scss deleted file mode 100644 index 17086a4..0000000 --- a/apps/portfolio/src/app/project/[id]/style.scss +++ /dev/null @@ -1,29 +0,0 @@ -.project-description { - h2, - h3, - h4, - h5, - h6 { - @apply mb-2; - } - - h2 { - @apply mt-10 text-3xl; - } - - h3 { - @apply mt-6 indent-2 text-xl; - } - - h4 { - @apply mt-6 indent-4 text-base; - } - - h5 { - @apply mt-6 indent-6 text-base; - } - - h6 { - @apply mt-6 indent-8 text-base; - } -} diff --git a/apps/portfolio/src/components/Badge/Badge.tsx b/apps/portfolio/src/components/Badge/Badge.tsx deleted file mode 100644 index 84a9e08..0000000 --- a/apps/portfolio/src/components/Badge/Badge.tsx +++ /dev/null @@ -1,35 +0,0 @@ -import "./style.scss" - -import { type Badge as BadgeType } from "@developomp-site/content/src/types/types" - -interface BadgeProps { - slug: string -} - -export default async function Badge({ slug }: BadgeProps) { - const badgeData: BadgeType = await import( - `@developomp-site/content/dist/icons/${slug}.json` - ) - - if (!badgeData) - throw `"@developomp-site/content/dist/icons/${slug}.json" does not exist` - - return ( -
-
- {badgeData.title} -
- ) -} diff --git a/apps/portfolio/src/components/Badge/index.ts b/apps/portfolio/src/components/Badge/index.ts deleted file mode 100644 index e26eecc..0000000 --- a/apps/portfolio/src/components/Badge/index.ts +++ /dev/null @@ -1,3 +0,0 @@ -import Badge from "./Badge" - -export default Badge diff --git a/apps/portfolio/src/components/Badge/style.scss b/apps/portfolio/src/components/Badge/style.scss deleted file mode 100644 index 7649f0d..0000000 --- a/apps/portfolio/src/components/Badge/style.scss +++ /dev/null @@ -1,11 +0,0 @@ -.light-badge { - svg { - @apply dark:fill-light-text-default; - } -} - -.dark-badge { - svg { - @apply dark:fill-dark-text-default; - } -} diff --git a/apps/portfolio/src/components/Header/Header.tsx b/apps/portfolio/src/components/Header/Header.tsx deleted file mode 100644 index 6c7a405..0000000 --- a/apps/portfolio/src/components/Header/Header.tsx +++ /dev/null @@ -1,25 +0,0 @@ -import Link from "next/link" -import { type FC } from "react" - -const Header: FC = () => { - return ( -
-
- - {/* eslint-disable-next-line @next/next/no-img-element */} - logo - -
-
- ) -} - -export default Header diff --git a/apps/portfolio/src/components/Header/index.ts b/apps/portfolio/src/components/Header/index.ts deleted file mode 100644 index 696cfbc..0000000 --- a/apps/portfolio/src/components/Header/index.ts +++ /dev/null @@ -1,3 +0,0 @@ -import Header from "./Header" - -export default Header diff --git a/apps/portfolio/src/components/ProjectCard/ProjectCard.tsx b/apps/portfolio/src/components/ProjectCard/ProjectCard.tsx deleted file mode 100644 index 492a4e0..0000000 --- a/apps/portfolio/src/components/ProjectCard/ProjectCard.tsx +++ /dev/null @@ -1,39 +0,0 @@ -import "./style.scss" - -import type { PortfolioProject } from "@developomp-site/content/src/types/types" -import Link from "next/link" - -import Badge from "@/components/Badge" - -interface ProjectCardProps { - projectID: string - project: PortfolioProject -} - -export default function ProjectCard({ projectID, project }: ProjectCardProps) { - return ( - -
-

{project.name}

- {/* eslint-disable-next-line @next/next/no-img-element */} - project thumbnail - -
- {project.badges.map((badge) => ( - - ))} -
-
-
-
- - ) -} diff --git a/apps/portfolio/src/components/ProjectCard/index.ts b/apps/portfolio/src/components/ProjectCard/index.ts deleted file mode 100644 index 7d7ffc5..0000000 --- a/apps/portfolio/src/components/ProjectCard/index.ts +++ /dev/null @@ -1,3 +0,0 @@ -import ProjectCard from "./ProjectCard" - -export default ProjectCard diff --git a/apps/portfolio/src/components/ProjectCard/style.scss b/apps/portfolio/src/components/ProjectCard/style.scss deleted file mode 100644 index a2d6af3..0000000 --- a/apps/portfolio/src/components/ProjectCard/style.scss +++ /dev/null @@ -1,17 +0,0 @@ -.project { - // general - @apply cursor-pointer rounded-md; - - // spacing - @apply m-auto mb-8 p-8; - - // color - @apply bg-dark-card-bg dark:text-dark-text-default; - - // glow - @apply duration-75 hover:shadow-glow dark:hover:shadow-dark-text-default; - - h2 { - @apply text-3xl; - } -} diff --git a/apps/portfolio/tailwind.config.js b/apps/portfolio/tailwind.config.js deleted file mode 100644 index c888d68..0000000 --- a/apps/portfolio/tailwind.config.js +++ /dev/null @@ -1,9 +0,0 @@ -/** @type {import('tailwindcss').Config} */ -module.exports = { - presets: [require("@developomp-site/tailwind-config/tailwind.config.js")], - content: [ - "./src/pages/**/*.{js,ts,jsx,tsx,mdx}", - "./src/components/**/*.{js,ts,jsx,tsx,mdx}", - "./src/app/**/*.{js,ts,jsx,tsx,mdx}", - ], -} diff --git a/apps/portfolio/tsconfig.json b/apps/portfolio/tsconfig.json deleted file mode 100644 index 862bf6c..0000000 --- a/apps/portfolio/tsconfig.json +++ /dev/null @@ -1,35 +0,0 @@ -{ - "compilerOptions": { - "target": "es5", - "lib": ["dom", "dom.iterable", "esnext"], - "allowJs": true, - "skipLibCheck": true, - "strict": true, - "forceConsistentCasingInFileNames": true, - "noEmit": true, - "esModuleInterop": true, - "module": "esnext", - "moduleResolution": "bundler", - "resolveJsonModule": true, - "isolatedModules": true, - "jsx": "preserve", - "incremental": true, - "plugins": [ - { - "name": "next" - } - ], - "paths": { - "@/*": ["./src/*"] - } - }, - "include": [ - "next-env.d.ts", - "**/*.ts", - "**/*.tsx", - ".next/types/**/*.ts", - "build/types/**/*.ts", - "dist/types/**/*.ts" - ], - "exclude": ["node_modules"] -} diff --git a/commitlint.config.js b/commitlint.config.js index 92c6dd7..b8e7961 100644 --- a/commitlint.config.js +++ b/commitlint.config.js @@ -14,7 +14,6 @@ module.exports = { // apps "blog", "main", - "portfolio", // packages "content", diff --git a/firebase.json b/firebase.json index 435b482..5234426 100644 --- a/firebase.json +++ b/firebase.json @@ -13,13 +13,6 @@ "trailingSlash": false, "public": "apps/blog/build", "ignore": ["**/.*"] - }, - { - "target": "portfolio", - "cleanUrls": true, - "trailingSlash": false, - "public": "apps/portfolio/dist", - "ignore": ["**/.*"] } ] } diff --git a/main.tf b/main.tf index 4283e6d..c193423 100644 --- a/main.tf +++ b/main.tf @@ -57,23 +57,3 @@ resource "aws_route53_record" "blog_acme_challenge" { ttl = 60 records = ["RXaOhzFg2U4ZtEU_Dj_2ylAX3D8xXpdRCq1KjoaB9Sc"] } - -# https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/route53_record -resource "aws_route53_record" "portfolio" { - allow_overwrite = true - zone_id = data.aws_route53_zone.developomp_com.zone_id - name = "portfolio.${data.aws_route53_zone.developomp_com.name}" - type = "A" - ttl = 60 - records = ["199.36.158.100"] -} - -# https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/route53_record -resource "aws_route53_record" "portfolio_acme_challenge" { - allow_overwrite = true - zone_id = data.aws_route53_zone.developomp_com.zone_id - name = "_acme-challenge.portfolio.${data.aws_route53_zone.developomp_com.name}" - type = "TXT" - ttl = 60 - records = ["YxFtDJ-Qf1yE8KX2mzf4cbfkPBR74IbbWX_0l5gGnLg"] -} diff --git a/packages/content/exports/portfolio.ts b/packages/content/exports/portfolio.ts deleted file mode 100644 index 269da66..0000000 --- a/packages/content/exports/portfolio.ts +++ /dev/null @@ -1,14 +0,0 @@ -import portfolio from "../dist/portfolio.json" assert { type: "json" } -import type { PortfolioProject } from "../src/types/types" - -export type ProjectKey = keyof typeof portfolio.projects - -// sort of like src/types/types.ts > PortfolioData but exported -export default portfolio as { - // waiting for https://github.com/microsoft/TypeScript/issues/32063 - skills: string[] - - projects: { - [key in ProjectKey]: PortfolioProject - } -} diff --git a/packages/content/markdown/projects/developomp-site.md b/packages/content/markdown/projects/developomp-site.md deleted file mode 100644 index 49a4200..0000000 --- a/packages/content/markdown/projects/developomp-site.md +++ /dev/null @@ -1,30 +0,0 @@ ---- -name: developomp-site -overview: my websites for blogging, portfolio, resume, etc. -image: /img/portfolio/developomp-site.avif -repo: https://github.com/developomp/developomp-site -badges: - - typescript - - tailwindcss - - react - - svelte - - nextdotjs - - firebase - - terraform ---- - -## Introduction - -developomp-site is a monorepo managed by [turborepo](https://turbo.build/repo) -and pnpm workspace. - -- https://developomp.com - about me, built with **Svelte with SvelteKit** -- https://blog.developomp.com - Blogging site, built with **React with NextJS** -- https://portfolio.developomp.com - Portfolio, built with **React with NextJS** - -## Interesting Stuff - -- [markdown parsing][markdown-parsing] -- [test post](https://blog.developomp.com/posts/test-post) - -[markdown-parsing]: https://github.com/developomp/developomp-site/tree/081855a4ecb6f5bf74b76758c358ea54b465b2b7/packages/blog-content diff --git a/packages/content/markdown/projects/wbm.md b/packages/content/markdown/projects/wbm.md deleted file mode 100644 index e4fd53f..0000000 --- a/packages/content/markdown/projects/wbm.md +++ /dev/null @@ -1,38 +0,0 @@ ---- -name: War Brokers Mods -overview: A game mod for a unity game. Provides in-game UI and OBS overlays. -image: /img/portfolio/wbm.avif -repo: https://github.com/War-Brokers-Mods -badges: - - rust - - csharp - - svelte - - tailwindcss - - unity - - tauri ---- - -## Introduction - -The War Brokers Mods (WBM) is a mod for the game -[War Brokers](https://warbrokers.io) consisting of 3 sub-projects: - -- [mod][mod] - Built with C#, it uses the [BepInEx][bepinex] framework to patch - different aspects of the game -- [OBS overlay][overlays] - Customizable overlays for [OBS studio](https://github.com/obsproject/obs-studio) - -![Overlay image](/img/portfolio/wbm-overlays.avif "Overlay image") - -- [installer][installer] - Utility for installing updating the mod. Built with [tauri][tauri], - [rust][rust], [svelte][svelte], and [tailwind css][tailwindcss]. - -![Installer image](/img/portfolio/wbm-installer.avif "Installer image") - -[mod]: https://github.com/War-Brokers-Mods/WBM -[overlays]: https://github.com/War-Brokers-Mods/WBM-Overlays -[installer]: https://github.com/War-Brokers-Mods/WBM-installer -[bepinex]: https://github.com/BepInEx/BepInEx -[tauri]: https://github.com/tauri-apps/tauri -[rust]: https://github.com/rust-lang/rust -[svelte]: https://github.com/sveltejs/svelte -[tailwindcss]: https://github.com/tailwindlabs/tailwindcss diff --git a/packages/content/markdown/projects/wbp.md b/packages/content/markdown/projects/wbp.md deleted file mode 100644 index 2a2904c..0000000 --- a/packages/content/markdown/projects/wbp.md +++ /dev/null @@ -1,23 +0,0 @@ ---- -name: War Brokers Projects -overview: An attempt to bring together community projects related to War Brokers with the goal of making them more visible and making collaboration easier. -image: /img/portfolio/wbp.avif -repo: https://github.com/War-Brokers -badges: - - csharp - - typescript - - express - - swagger - - firebase ---- - -## Introduction - -WBP (War Brokers Projects) is an attempt to bring together community projects -related to War Brokers with the goal of making them more visible and making -collaboration easier. - -You can find more information in their [homepage][homepage] or in their [GitHub organization][github] - -[Homepage]: https://war-brokers-projects.notion.site/War-Brokers-Projects-0ab13d7077a843e79b99a328e00d2008 -[github]: https://github.com/orgs/War-Brokers/repositories diff --git a/packages/content/src/config.ts b/packages/content/src/config.ts index 8c0e666..d35b8ea 100644 --- a/packages/content/src/config.ts +++ b/packages/content/src/config.ts @@ -4,5 +4,4 @@ export const outPath = "./dist" // path to the json database export const contentDirectoryPath = `${outPath}/content` export const iconsDirectoryPath = `${outPath}/icons` export const mapFilePath = `${outPath}/map.json` -export const portfolioFilePath = `${outPath}/portfolio.json` export const searchIndexFilePath = `${outPath}/search.json` diff --git a/packages/content/src/index.ts b/packages/content/src/index.ts index 06e1a89..94ddb40 100644 --- a/packages/content/src/index.ts +++ b/packages/content/src/index.ts @@ -8,11 +8,11 @@ import fs from "fs" -import { mapFilePath, markdownPath, outPath, portfolioFilePath } from "./config" +import { mapFilePath, markdownPath, outPath } from "./config" import { fillTags, parseSeries, sortDates } from "./postProcess" import { recursiveParse } from "./recursiveParse" import { saveIndex } from "./searchIndex" -import type { ContentMap, PortfolioData, SeriesMap } from "./types/types" +import type { ContentMap, SeriesMap } from "./types/types" import { ParseMode } from "./types/types" export const contentMap: ContentMap = { @@ -25,10 +25,6 @@ export const contentMap: ContentMap = { series: {}, } export const seriesMap: SeriesMap = {} -export const portfolioData: PortfolioData = { - skills: new Set(), - projects: {}, -} async function main() { /** @@ -60,7 +56,6 @@ async function main() { // parse markdown await recursiveParse(ParseMode.POSTS, markdownPath + "/posts") await recursiveParse(ParseMode.SERIES, markdownPath + "/series") - await recursiveParse(ParseMode.PORTFOLIO, markdownPath + "/projects") sortDates() fillTags() @@ -71,14 +66,6 @@ async function main() { */ fs.writeFileSync(mapFilePath, JSON.stringify(contentMap)) - fs.writeFileSync( - portfolioFilePath, - JSON.stringify({ - ...portfolioData, - skills: Array.from(portfolioData.skills), - }), - ) - saveIndex() } diff --git a/packages/content/src/parseMarkdown.ts b/packages/content/src/parseMarkdown.ts index 519bef5..bbbf309 100644 --- a/packages/content/src/parseMarkdown.ts +++ b/packages/content/src/parseMarkdown.ts @@ -23,7 +23,6 @@ import supersub from "remark-supersub" import { unified } from "unified" import type { MarkdownData } from "./types/types" -import { ParseMode } from "./types/types" import { nthIndex } from "./util" const processor = unified() // interface for remark and rehype @@ -50,12 +49,10 @@ const processor = unified() // interface for remark and rehype * * @param {string} markdownRaw - raw unparsed text data of the markdown file * @param {string} path - filename of the markdown file - * @param {ParseMode} mode */ export default async function parseMarkdown( markdownRaw: string, path: string, - mode: ParseMode, ): Promise { const fileHasFrontMatter = markdownRaw.startsWith("---") @@ -64,21 +61,11 @@ export default async function parseMarkdown( : {} if (fileHasFrontMatter) { - if (mode != ParseMode.PORTFOLIO) { - if (!frontMatter.title) - throw Error(`Title is not defined in file: ${path}`) + if (!frontMatter.title) + throw Error(`Title is not defined in file: ${path}`) - if (!frontMatter.date) - throw Error(`Date is not defined in file: ${path}`) - } - - if (mode === ParseMode.PORTFOLIO) { - if (frontMatter.overview) { - frontMatter.overview = String( - processor.processSync(frontMatter.overview), - ) - } - } + if (!frontMatter.date) + throw Error(`Date is not defined in file: ${path}`) } frontMatter.content = touchupHTML( diff --git a/packages/content/src/recursiveParse/index.ts b/packages/content/src/recursiveParse/index.ts index 9257a42..9b5ea6b 100644 --- a/packages/content/src/recursiveParse/index.ts +++ b/packages/content/src/recursiveParse/index.ts @@ -5,7 +5,6 @@ import parseMarkdown from "../parseMarkdown" import { ParseMode } from "../types/types" import { path2FileOrFolderName, path2URL } from "../util" import parsePost from "./parsePost" -import parseProjects from "./parseProjects" import parseSeries from "./parseSeries" /** @@ -98,9 +97,5 @@ async function parseFile(mode: ParseMode, path: string): Promise { case ParseMode.SERIES: await parseSeries(dataToPass) break - - case ParseMode.PORTFOLIO: - await parseProjects(dataToPass) - break } } diff --git a/packages/content/src/recursiveParse/parseProjects.ts b/packages/content/src/recursiveParse/parseProjects.ts deleted file mode 100644 index 3f72641..0000000 --- a/packages/content/src/recursiveParse/parseProjects.ts +++ /dev/null @@ -1,57 +0,0 @@ -import type { SimpleIcon } from "simple-icons" -import * as icons from "simple-icons" -import tinycolor from "tinycolor2" - -import { portfolioData } from ".." -import { contentDirectoryPath, iconsDirectoryPath } from "../config" -import { generateToc } from "../parseMarkdown" -import { writeToFile } from "../util" -import type { DataToPass } from "." - -export default async function parseProjects({ - urlPath, - markdownRaw, - markdownData, -}: DataToPass): Promise { - if (markdownData.badges) { - ;(markdownData.badges as string[]).forEach((slug) => { - // todo: handle cases when icon is not on simple-icons - const icon: SimpleIcon = - // eslint-disable-next-line @typescript-eslint/ban-ts-comment - // @ts-ignore - icons["si" + slug[0].toUpperCase() + slug.slice(1)] - - portfolioData.skills.add(slug) - - const color = tinycolor(icon.hex).lighten(5).desaturate(5) - - // save svg icon - writeToFile( - `${iconsDirectoryPath}/${icon.slug}.json`, - JSON.stringify({ - svg: icon.svg, - hex: color.toHexString(), - isDark: color.isDark(), - title: icon.title, - }), - ) - }) - } - - // remove /projects/ prefix - portfolioData.projects[urlPath.replace("/projects/", "")] = { - name: markdownData.name as string, - image: markdownData.image as string, - overview: markdownData.overview as string, - badges: (markdownData.badges as string[]) || [], - repo: (markdownData.repo as string) || "", - } - - writeToFile( - `${contentDirectoryPath}${urlPath}.json`, - JSON.stringify({ - content: markdownData.content, - toc: await generateToc(markdownRaw), - }), - ) -} diff --git a/packages/content/src/types/types.ts b/packages/content/src/types/types.ts index 36182ff..2f5737b 100644 --- a/packages/content/src/types/types.ts +++ b/packages/content/src/types/types.ts @@ -32,7 +32,6 @@ export interface ContentMap { export enum ParseMode { POSTS, SERIES, - PORTFOLIO, } export interface MarkdownData { @@ -67,13 +66,6 @@ export interface PageData { order: string[] length: number - - // portfolio - - image: string // image url - overview: string - badges: string[] - repo: string } export interface Badge { @@ -106,31 +98,3 @@ export interface SeriesEntry { index: number url: string } - -/** - * Portfolio - */ - -export interface PortfolioData { - // a set of valid simple icons slug - skills: Set - - // key: url - projects: { - [key: string]: PortfolioProject - } -} - -export interface PortfolioOverview { - // link to my github - github: string - description: string -} - -export interface PortfolioProject { - name: string - image: string // url to the image - overview: string - badges: string[] // array of valid simpleIcons slug - repo: string // url of the git repository -} diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 31def3e..1446a07 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -140,6 +140,9 @@ importers: react: specifier: 18.2.0 version: 18.2.0 + react-collapse: + specifier: ^5.1.1 + version: 5.1.1(react@18.2.0) react-dom: specifier: 18.2.0 version: 18.2.0(react@18.2.0) @@ -261,126 +264,6 @@ importers: specifier: ^5.0.10 version: 5.0.10(@types/node@18.19.3)(sass@1.69.5) - apps/portfolio: - devDependencies: - '@developomp-site/blog': - specifier: workspace:* - version: link:../blog - '@developomp-site/content': - specifier: workspace:* - version: link:../../packages/content - '@developomp-site/eslint-config': - specifier: workspace:* - version: link:../../packages/eslint-config - '@developomp-site/playwright-config': - specifier: workspace:* - version: link:../../packages/playwright-config - '@developomp-site/prettier-config': - specifier: workspace:* - version: link:../../packages/prettier-config - '@developomp-site/tailwind-config': - specifier: workspace:* - version: link:../../packages/tailwind-config - '@fontsource/noto-sans-kr': - specifier: ^5.0.5 - version: 5.0.5 - '@fontsource/source-code-pro': - specifier: ^5.0.5 - version: 5.0.5 - '@fortawesome/free-brands-svg-icons': - specifier: ^6.4.0 - version: 6.4.0 - '@fortawesome/free-solid-svg-icons': - specifier: ^6.4.0 - version: 6.4.0 - '@fortawesome/react-fontawesome': - specifier: ^0.2.0 - version: 0.2.0(@fortawesome/fontawesome-svg-core@6.5.1)(react@18.2.0) - '@kunukn/react-collapse': - specifier: ^2.2.10 - version: 2.2.10(react-dom@18.2.0)(react@18.2.0) - '@playwright/test': - specifier: ^1.36.2 - version: 1.36.2 - '@types/highlight.js': - specifier: ^10.1.0 - version: 10.1.0 - '@types/katex': - specifier: ^0.16.7 - version: 0.16.7 - '@types/node': - specifier: ^20.10.5 - version: 20.10.5 - '@types/react': - specifier: 18.2.17 - version: 18.2.17 - '@types/react-collapse': - specifier: ^5.0.1 - version: 5.0.1 - '@types/react-dom': - specifier: 18.2.7 - version: 18.2.7 - '@typescript-eslint/eslint-plugin': - specifier: ^6.15.0 - version: 6.15.0(@typescript-eslint/parser@6.15.0)(eslint@8.56.0)(typescript@5.3.3) - '@typescript-eslint/parser': - specifier: ^6.15.0 - version: 6.15.0(eslint@8.56.0)(typescript@5.3.3) - autoprefixer: - specifier: ^10.4.16 - version: 10.4.16(postcss@8.4.32) - eslint: - specifier: ^8.56.0 - version: 8.56.0 - eslint-config-next: - specifier: 13.4.12 - version: 13.4.12(eslint@8.56.0)(typescript@5.3.3) - highlight.js: - specifier: ^11.8.0 - version: 11.8.0 - katex: - specifier: ^0.16.8 - version: 0.16.8 - next: - specifier: 13.4.12 - version: 13.4.12(react-dom@18.2.0)(react@18.2.0) - next-sitemap: - specifier: ^4.1.8 - version: 4.1.8(next@13.4.12) - open-cli: - specifier: ^7.2.0 - version: 7.2.0 - postcss: - specifier: ^8.4.32 - version: 8.4.32 - postcss-load-config: - specifier: ^4.0.1 - version: 4.0.1(postcss@8.4.32) - prettier: - specifier: ^3.2.5 - version: 3.2.5 - prettier-plugin-tailwindcss: - specifier: ^0.5.9 - version: 0.5.9(prettier-plugin-svelte@3.1.2)(prettier@3.2.5) - react: - specifier: 18.2.0 - version: 18.2.0 - react-collapse: - specifier: ^5.1.1 - version: 5.1.1(react@18.2.0) - react-dom: - specifier: 18.2.0 - version: 18.2.0(react@18.2.0) - serve: - specifier: ^14.2.0 - version: 14.2.0 - tailwindcss: - specifier: ^3.4.0 - version: 3.4.0 - typescript: - specifier: ^5.3.3 - version: 5.3.3 - packages/content: dependencies: '@developomp-site/eslint-config':