{"id":17706121,"url":"https://github.com/wentallout/portfolio","last_synced_at":"2025-10-20T12:32:24.139Z","repository":{"id":58288035,"uuid":"529885257","full_name":"wentallout/portfolio","owner":"wentallout","description":"Personal portfolio/blog built using SvelteKit. Optimized and running in 2024.","archived":false,"fork":false,"pushed_at":"2025-04-12T18:35:50.000Z","size":292381,"stargazers_count":8,"open_issues_count":0,"forks_count":2,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-04-12T19:23:20.339Z","etag":null,"topics":["blog","giscus","mdsvex","netlify","portfolio","svelte","svelte5","sveltekit"],"latest_commit_sha":null,"homepage":"https://wentallout.io.vn","language":"Svelte","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/wentallout.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.md","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2022-08-28T14:25:10.000Z","updated_at":"2025-04-12T18:35:53.000Z","dependencies_parsed_at":"2025-01-09T16:21:08.031Z","dependency_job_id":"38404505-1dae-45f4-be36-7fbd9ce75793","html_url":"https://github.com/wentallout/portfolio","commit_stats":{"total_commits":589,"total_committers":4,"mean_commits":147.25,"dds":0.006791171477079749,"last_synced_commit":"4ab94dcfa6269f28a4780e91f13941b5b38b01b3"},"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/wentallout%2Fportfolio","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/wentallout%2Fportfolio/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/wentallout%2Fportfolio/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/wentallout%2Fportfolio/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/wentallout","download_url":"https://codeload.github.com/wentallout/portfolio/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":253823063,"owners_count":21969838,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["blog","giscus","mdsvex","netlify","portfolio","svelte","svelte5","sveltekit"],"created_at":"2024-10-24T23:06:56.482Z","updated_at":"2025-10-20T12:32:24.134Z","avatar_url":"https://github.com/wentallout.png","language":"Svelte","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003ch1 id=\"portfolio\"\u003ePortfolio\u003c/h1\u003e\n\n[![Netlify Status](https://api.netlify.com/api/v1/badges/7bf37fa7-ec78-4efd-aa9a-1a18a4fc62e4/deploy-status)](https://app.netlify.com/sites/khoa-design/deploys)\n\n![GitHub](https://img.shields.io/github/license/wentallout/portfolio?style=for-the-badge)\n![GitHub top language](https://img.shields.io/github/languages/top/wentallout/portfolio?style=for-the-badge)\n![GitHub pull requests](https://img.shields.io/github/issues-pr/wentallout/portfolio?style=for-the-badge)\n![GitHub last commit](https://img.shields.io/github/last-commit/wentallout/portfolio?style=for-the-badge)\n![GitHub commit activity](https://img.shields.io/github/commit-activity/m/wentallout/portfolio?style=for-the-badge)\n![GitHub repo size](https://img.shields.io/github/repo-size/wentallout/portfolio?style=for-the-badge)\n\n![](https://api.checklyhq.com/v1/badges/checks/a53b93b2-8489-41a8-b1f2-a90ab0cab17a?style=flat\u0026theme=dark\u0026responseTime=true)\n\n![Banner](https://raw.githubusercontent.com/wentallout/wentallout/773d77e9c040bd20e5002d41738139946d9bd85d/images/portfolio-banner.svg)\n\n## 💻 Developing\n\n[![Open in StackBlitz](https://img.shields.io/badge/Open%20in-StackBlitz-blue?style=for-the-badge\u0026logo=stackblitz)](https://stackblitz.com/github/wentallout/portfolio)\n[![Open in VSCode](https://img.shields.io/badge/Open%20in-VSCode-blue?style=for-the-badge\u0026logo=visualstudiocode)](https://open.vscode.dev/wentallout/portfolio)\n\n1. Install dependencies with `npm install` (or `pnpm install` or `yarn`)\n2. Start a development server:\n\n```bash\nnpm run dev\n```\n\n## ❓ What is this?\n\nThis is a portfolio/blog built using SvelteKit. Hosted on Netlify.\n\nVisit: [wentallout.io.vn](https://wentallout.io.vn)\n\n## 🤩 What makes this special?\n\nA website made with SvelteKit is just incredibly fast even compared to other framework-based websites like React/Next/Vue and has great SEO out-of-the-box. You won't need a backend or CMS though, the blog posts are just markdown files you can store on your computer (see `routes/blogs`).\n\nAll imported images are automatically converted to `webp` and lazy loaded to optimize performance.\n\nVisitors can also comment on your blogs using GitHub discussion (you might want to customize `Comments.svelte` component so that it works on your repo)\n\n## ⌨ Coding style\n\n- HTML: Semantic and SEO-focused\n- CSS: Vanilla CSS with BEM naming scheme\n- JS: VanillaJS/Svelte\n- Linting optimized for aesthetics: alphabetical style [perfectionist.dev](https://perfectionist.dev/)\n- [eslint-plugin-svelte](https://sveltejs.github.io/eslint-plugin-svelte/user-guide)\n\n## 💅 Styling\n\n`src/styles`\n\n- `reset.css` custom CSS Reset by [joshwcomeau](https://www.joshwcomeau.com/css/custom-css-reset/)\n- `global.css` global styles and importing all other css files\n- `spacing.css` spacing for `margin`, `padding` and the whole page layout in general. Check out [utopia.fyi](https://utopia.fyi/) for more information about this spacing system.\n- `typography.css` typography-related stuff like `font-size`, `line-height`, `letter-spacing`, `font-weight`\n- `color.css` text colors, border colors, background colors (2 color schemes: `light` and `dark`)\n- `animation.css` for anything animate.\n\n## 🗺 Sitemap\n\n| page     | path      |\n| -------- | --------- |\n| Home     | /         |\n| Projects | /projects |\n| Blogs    | /blogs    |\n| Contact  | /contact  |\n\nSlug\n\n- /projects/`[slug]`\n- /blogs/`[slug]`\n\n## Main Features\n\n⭐ SEO\n\n- [SSR](https://kit.svelte.dev/docs/seo#out-of-the-box-ssr)\n- [sitemap](https://github.com/jasongitmail/super-sitemap)\n\n⭐ Responsive\n\n⭐ PWA: Works OFFLINE\n\n⭐ Dark/Light Mode Toggle Button\n\n⭐ Dynamic Breadcrumb (`Breadcrumb.svelte`)\n\n⭐ Font Optimization\n\n- Self-host: [Google Web Font Helper](https://gwfh.mranftl.com/fonts)\n- font-family: [Inter](https://rsms.me/inter/). [Read more about Inter](https://beautifulwebtype.com/inter)\n- Subset: [Subset Variable Font Guide](https://barrd.dev/article/create-a-variable-font-subset-for-smaller-file-size/)\n- Reduce Font CLS (Cumulative Layout Shift): [Automatic font matching](https://deploy-preview-15--upbeat-shirley-608546.netlify.app/perfect-ish-font-fallback)\n\n⭐ Icons\n\n- `unplugin-icons`\n- Icon family: [phosphoricons](https://phosphoricons.com/)\n- [Browse phosphor icons](https://icon-sets.iconify.design/ph)\n\n⭐ Images\n\n- Compressed and Converted into `webp` using`vite-imagetools`\n- `loading = 'lazy'`\n\n⭐ Routing: built-in [filesystem-based router](https://kit.svelte.dev/docs/routing)\n\n⭐ Page Transition Animation\n\n- `svelte/transiton`\n- [nprogress](https://www.npmjs.com/package/nprogress)\n\n⭐ RSS\n\n⭐ Working Contact Form (need Netlify setup)\n\n---\n\n## Blogging Features\n\n- Use markdown to write blogs [mdsvex](https://github.com/pngwn/MDsveX)\n- use `categories` (#hashtag) to filter blogs\n- multiple markdown-related plugins installed: `rehype` and `remark`\n\n⭐ Blogs: Automatic Table of Contents\n\n⭐ Blogs: Code Highlight [prism-themes](https://github.com/PrismJS/prism-themes)\n\n⭐ Blogs: Search, Pagination\n\n⭐ Blogs: Categories/Tags\n\n⭐ Blogs: Prev/Next Button\n\n⭐ Blogs: Comment using [Giscus](https://giscus.app)\n\n## Background inspired by\n\n[bg.ibelick.com](https://bg.ibelick.com)\n\n## Todo\n\n💡 [Splash screen](https://www.sveltevietnam.dev/en/blog/20231220-behind-the-screen-progressive-splashscreen)\n\n## Stat\n\n![Alt](https://repobeats.axiom.co/api/embed/c17a64a1c0a63ba6cef6618f14b3e39fdf67eb3f.svg 'Repobeats analytics image')\n\nFeatured on: [portfolioshub.com](https://www.portfolioshub.com)\n\n## License\n\n[Published under MIT License](https://github.com/wentallout/portfolio/blob/master/LICENSE.md)\n\n[⬆ Back to Top](#portfolio)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fwentallout%2Fportfolio","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fwentallout%2Fportfolio","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fwentallout%2Fportfolio/lists"}