├── .vscode ├── settings.json ├── extensions.json ├── launch.json └── tailwind.json ├── README.md ├── public └── DingTalkJBT.ttf ├── tsconfig.json ├── src ├── content │ ├── config.ts │ └── cv │ │ ├── general.yml │ │ └── english.yml ├── styles │ └── global.scss ├── components │ ├── Header.astro │ ├── Items.astro │ ├── Techs.astro │ ├── Metas.astro │ ├── Icon.astro │ ├── Section.astro │ ├── Table.astro │ └── Project.astro ├── layouts │ └── Layout.astro ├── env.d.ts └── pages │ ├── [slug].astro │ └── index.astro ├── .prettierrc.mjs ├── .gitignore ├── astro.config.mjs ├── tailwind.config.js └── package.json /.vscode/settings.json: -------------------------------------------------------------------------------- 1 | { 2 | "css.customData": [".vscode/tailwind.json"] 3 | } 4 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # WebCV 2 | 3 | 基于 Astro.js 的 Web 简历。 4 | 5 | [cv.skywt.cn](https://cv.skywt.cn/) 6 | -------------------------------------------------------------------------------- /public/DingTalkJBT.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Skywt2003/WebCV/HEAD/public/DingTalkJBT.ttf -------------------------------------------------------------------------------- /.vscode/extensions.json: -------------------------------------------------------------------------------- 1 | { 2 | "recommendations": ["astro-build.astro-vscode"], 3 | "unwantedRecommendations": [] 4 | } 5 | -------------------------------------------------------------------------------- /tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "astro/tsconfigs/strict", 3 | "compilerOptions": { 4 | "jsx": "react-jsx", 5 | "jsxImportSource": "react" 6 | } 7 | } -------------------------------------------------------------------------------- /src/content/config.ts: -------------------------------------------------------------------------------- 1 | import { z, defineCollection } from "astro:content"; 2 | const cvCollection = defineCollection({ 3 | type: "data", 4 | schema: z.any(), 5 | }); 6 | export const collections = { 7 | cv: cvCollection, 8 | }; 9 | -------------------------------------------------------------------------------- /.prettierrc.mjs: -------------------------------------------------------------------------------- 1 | /** @type {import("prettier").Config} */ 2 | export default { 3 | plugins: ["prettier-plugin-astro"], 4 | overrides: [ 5 | { 6 | files: "*.astro", 7 | options: { 8 | parser: "astro", 9 | }, 10 | }, 11 | ], 12 | }; 13 | -------------------------------------------------------------------------------- /.vscode/launch.json: -------------------------------------------------------------------------------- 1 | { 2 | "version": "0.2.0", 3 | "configurations": [ 4 | { 5 | "command": "./node_modules/.bin/astro dev", 6 | "name": "Development server", 7 | "request": "launch", 8 | "type": "node-terminal" 9 | } 10 | ] 11 | } 12 | -------------------------------------------------------------------------------- /src/styles/global.scss: -------------------------------------------------------------------------------- 1 | :root { 2 | font-size: 18px; 3 | @apply bg-gray-100; 4 | @apply dark:bg-neutral-900 dark:text-gray-200; 5 | } 6 | 7 | @font-face { 8 | font-family: "DingTalkJBT"; 9 | src: url("/DingTalkJBT.ttf") format("truetype"); 10 | } 11 | 12 | .link { 13 | @apply underline; 14 | } 15 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # build output 2 | dist/ 3 | 4 | # generated types 5 | .astro/ 6 | 7 | # dependencies 8 | node_modules/ 9 | 10 | # logs 11 | npm-debug.log* 12 | yarn-debug.log* 13 | yarn-error.log* 14 | pnpm-debug.log* 15 | 16 | # environment variables 17 | .env 18 | .env.production 19 | 20 | # macOS-specific files 21 | .DS_Store 22 | -------------------------------------------------------------------------------- /astro.config.mjs: -------------------------------------------------------------------------------- 1 | import { defineConfig } from "astro/config"; 2 | import tailwind from "@astrojs/tailwind"; 3 | import yaml from "@rollup/plugin-yaml"; 4 | import react from "@astrojs/react"; 5 | 6 | // https://astro.build/config 7 | export default defineConfig({ 8 | integrations: [tailwind(), react()], 9 | vite: { 10 | plugins: [yaml()] 11 | } 12 | }); -------------------------------------------------------------------------------- /src/components/Header.astro: -------------------------------------------------------------------------------- 1 | --- 2 | import Metas from "./Metas.astro"; 3 | 4 | interface Props { 5 | header: Header; 6 | } 7 | 8 | const { header } = Astro.props; 9 | --- 10 | 11 |
| 15 | {table.cols.map((col) => | {col} | )} 16 |
|---|---|
| {row} | 21 | {table.cols.map((col, colIndex) => ( 22 |
23 | {table.cells[rowIndex][colIndex].lines.map((line) => (
24 | |
27 | ))}
28 |