this repo has no description
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

🎨 Format code

+176 -179
+30 -30
.github/workflows/build.yml
··· 1 - name: Verify that it builds 2 - 3 - on: 4 - push: 5 - branches: 6 - - main 7 - pull_request: 8 - branches: 9 - - main 10 - 11 - jobs: 12 - build: 13 - runs-on: ubuntu-latest 14 - strategy: 15 - fail-fast: false 16 - matrix: 17 - lang: [en, fr] 18 - steps: 19 - - uses: actions/checkout@v5 20 - - uses: oven-sh/setup-bun@v2 21 - with: 22 - bun-version-file: ".bun-version" 23 - 24 - - name: Install dependencies 25 - run: bun install 26 - 27 - - name: Build the project 28 - run: bun run build 29 - env: 30 - LANG: ${{ matrix.lang }} 1 + name: Verify that it builds 2 + 3 + on: 4 + push: 5 + branches: 6 + - main 7 + pull_request: 8 + branches: 9 + - main 10 + 11 + jobs: 12 + build: 13 + runs-on: ubuntu-latest 14 + strategy: 15 + fail-fast: false 16 + matrix: 17 + lang: [en, fr] 18 + steps: 19 + - uses: actions/checkout@v5 20 + - uses: oven-sh/setup-bun@v2 21 + with: 22 + bun-version-file: ".bun-version" 23 + 24 + - name: Install dependencies 25 + run: bun install 26 + 27 + - name: Build the project 28 + run: bun run build 29 + env: 30 + LANG: ${{ matrix.lang }}
+2 -2
.vscode/launch.json
··· 1 1 { 2 - "version": "0.2.0", 3 2 "configurations": [ 4 3 { 5 4 "command": "./node_modules/.bin/astro dev", ··· 7 6 "request": "launch", 8 7 "type": "node-terminal" 9 8 } 10 - ] 9 + ], 10 + "version": "0.2.0" 11 11 }
-2
README.md
··· 2 2 3 3 my portfolio :) 4 4 5 - 6 5 like any other web dev freak, my portfolio is a playground for web dev tech exploration, and has thus been rewritten an unreasonable amount of times: 7 6 8 7 - 2025 with [Astro](https://astro.build) and [ortfo/db](https://github.com/ortfo/db) ··· 13 12 - 2020 with [Vue.js](https://vuejs.org) and [django](https://djangoproject.com) 14 13 - 2019 with [Django](https://djangoproject.com) 15 14 - 2018 with [PHP](https://php.net) (first webdev project ^^) 16 -
+1 -1
collections.yaml
··· 27 27 description: 28 28 en: | 29 29 I've been experimenting with sounds, their textures and their musicality since I was 7 years old. 30 - 30 + 31 31 I'm on streaming platforms! 32 32 33 33 - [Spotify](https://gwen.works/to/spotify)
+1 -1
experiences.yaml
··· 49 49 skills: [kubernetes, svelte, graphql, go] 50 50 links: 51 51 - https://github.com/inp-net 52 - - https://git.inpt.fr/net7 52 + - https://git.inpt.fr/net7 53 53 company: 54 54 name: net7 55 55 description: student association
-1
ortfodb.yaml
··· 35 35 repository: ~/projects/portfolio/technologies.yaml 36 36 37 37 projects at: ~/projects 38 - 39 38 # exporters: 40 39 # ssh: 41 40 # database: ewen@ewen.works:~/www/media.ewen.works/works.json
+62 -62
src/layouts/Bare.astro
··· 1 - --- 2 - interface Props { 3 - /** 4 - * Attributes to add to the `<html>` tag. 5 - */ 6 - htmlAttributes?: Record<string, any>; 7 - /** 8 - * Styles on the `<body>` tag. 9 - */ 10 - bodyStyles?: Record<string, any>; 11 - } 12 - --- 13 - 14 - <!doctype html> 15 - <html {...Astro.props.htmlAttributes}> 16 - <head> 17 - <meta charset="UTF-8" /> 18 - <meta name="viewport" content="width=device-width" /> 19 - <link rel="icon" type="image/svg+xml" href="/favicon.svg" /> 20 - <meta name="generator" content={Astro.generator} /> 21 - <link rel="preconnect" href="https://fonts.googleapis.com" /> 22 - <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin /> 23 - <link 24 - href="https://fonts.googleapis.com/css2?family=Manrope:wght@200..800&family=Victor+Mono:ital,wght@0,100..700;1,100..700&display=swap" 25 - rel="stylesheet" 26 - /> 27 - <script 28 - defer 29 - data-domain="gwen.works" 30 - src="https://stats.gwen.works/js/script.js"></script> 31 - <slot name="head" /> 32 - </head> 33 - <body 34 - style={Object.entries(Astro.props.bodyStyles || {}) 35 - .map(([k, v]) => `${k}: ${v}`) 36 - .join("; ")} 37 - > 38 - <slot /> 39 - </body> 40 - </html> 41 - 42 - <style> 43 - html, 44 - body { 45 - padding: 0; 46 - margin: 0; 47 - width: 100%; 48 - min-height: 100%; 49 - font-family: "Manrope", sans-serif; 50 - color: var(--primary, black); 51 - background: var(--secondary, white); 52 - line-height: 1; 53 - } 54 - body { 55 - display: flex; 56 - flex-direction: column; 57 - padding: var(--pad); 58 - width: calc(100% - 2 * var(--pad)); 59 - height: calc(100% - 2 * var(--pad)); 60 - gap: 2rem; 61 - } 62 - </style> 1 + --- 2 + interface Props { 3 + /** 4 + * Attributes to add to the `<html>` tag. 5 + */ 6 + htmlAttributes?: Record<string, any>; 7 + /** 8 + * Styles on the `<body>` tag. 9 + */ 10 + bodyStyles?: Record<string, any>; 11 + } 12 + --- 13 + 14 + <!doctype html> 15 + <html {...Astro.props.htmlAttributes}> 16 + <head> 17 + <meta charset="UTF-8" /> 18 + <meta name="viewport" content="width=device-width" /> 19 + <link rel="icon" type="image/svg+xml" href="/favicon.svg" /> 20 + <meta name="generator" content={Astro.generator} /> 21 + <link rel="preconnect" href="https://fonts.googleapis.com" /> 22 + <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin /> 23 + <link 24 + href="https://fonts.googleapis.com/css2?family=Manrope:wght@200..800&family=Victor+Mono:ital,wght@0,100..700;1,100..700&display=swap" 25 + rel="stylesheet" 26 + /> 27 + <script 28 + defer 29 + data-domain="gwen.works" 30 + src="https://stats.gwen.works/js/script.js"></script> 31 + <slot name="head" /> 32 + </head> 33 + <body 34 + style={Object.entries(Astro.props.bodyStyles || {}) 35 + .map(([k, v]) => `${k}: ${v}`) 36 + .join("; ")} 37 + > 38 + <slot /> 39 + </body> 40 + </html> 41 + 42 + <style> 43 + html, 44 + body { 45 + padding: 0; 46 + margin: 0; 47 + width: 100%; 48 + min-height: 100%; 49 + font-family: "Manrope", sans-serif; 50 + color: var(--primary, black); 51 + background: var(--secondary, white); 52 + line-height: 1; 53 + } 54 + body { 55 + display: flex; 56 + flex-direction: column; 57 + padding: var(--pad); 58 + width: calc(100% - 2 * var(--pad)); 59 + height: calc(100% - 2 * var(--pad)); 60 + gap: 2rem; 61 + } 62 + </style>
+12 -12
src/pages/blog/index.astro
··· 31 31 </ul> 32 32 33 33 <section class="drafts"> 34 - <h2 i18n>(drafts)</h2> 35 - <ul> 36 - { 37 - posts 38 - .filter(({ data: { draft } }) => draft) 39 - .map(({ id, data: { title } }) => ( 40 - <li> 41 - <a href={`/blog/${id}`}>{title}</a> 42 - </li> 43 - )) 44 - } 45 - </ul> 34 + <h2 i18n>(drafts)</h2> 35 + <ul> 36 + { 37 + posts 38 + .filter(({ data: { draft } }) => draft) 39 + .map(({ id, data: { title } }) => ( 40 + <li> 41 + <a href={`/blog/${id}`}>{title}</a> 42 + </li> 43 + )) 44 + } 45 + </ul> 46 46 </section> 47 47 </main> 48 48 </Layout>
+13 -13
src/pages/resume/Reference.astro
··· 1 - --- 2 - interface Props { 3 - url: string; 4 - parens?: boolean; 5 - } 6 - 7 - const { parens = false } = Astro.props; 8 - const url = new URL("https://" + Astro.props.url); 9 - --- 10 - 11 - {parens && "("}<a href={url} target="_blank">{url.hostname + url.pathname}</a>{ 12 - parens && ")" 13 - } 1 + --- 2 + interface Props { 3 + url: string; 4 + parens?: boolean; 5 + } 6 + 7 + const { parens = false } = Astro.props; 8 + const url = new URL("https://" + Astro.props.url); 9 + --- 10 + 11 + {parens && "("}<a href={url} target="_blank">{url.hostname + url.pathname}</a>{ 12 + parens && ")" 13 + }
+26 -24
src/pages/resume/Tech.astro
··· 1 - --- 2 - import { getEntry } from "astro:content"; 3 - 4 - interface Props { 5 - name: string; 6 - } 7 - 8 - const { 9 - data: { name, slug }, 10 - } = (await getEntry("technologies", Astro.props.name?.toLowerCase() ?? "fu")) ?? { 11 - data: { name: "", slug: "" }, 12 - }; 13 - --- 14 - 15 - { 16 - name && slug ? ( 17 - <strong> 18 - <a href={`/using/${slug}`}>{name}</a> 19 - </strong> 20 - ) : ( 21 - <strong>{Astro.props.name}</strong> 22 - ) 23 - } 24 - 1 + --- 2 + import { getEntry } from "astro:content"; 3 + 4 + interface Props { 5 + name: string; 6 + } 7 + 8 + const { 9 + data: { name, slug }, 10 + } = (await getEntry( 11 + "technologies", 12 + Astro.props.name?.toLowerCase() ?? "fu", 13 + )) ?? { 14 + data: { name: "", slug: "" }, 15 + }; 16 + --- 17 + 18 + { 19 + name && slug ? ( 20 + <strong> 21 + <a href={`/using/${slug}`}>{name}</a> 22 + </strong> 23 + ) : ( 24 + <strong>{Astro.props.name}</strong> 25 + ) 26 + }
-1
src/pages/resume/index.astro
··· 406 406 z-index: 1; 407 407 } 408 408 409 - 410 409 dl.times > dt { 411 410 text-align: center; 412 411 }
+1 -1
src/pages/works/[work].astro
··· 154 154 class="swatch" 155 155 style={`background-color: ${color}; color: var(--${name === "primary" ? "secondary" : "primary"}, black)`} 156 156 > 157 - C{i+1} 157 + C{i + 1} 158 158 </code> 159 159 )) 160 160 }
+24 -24
src/pages/works/[work].json.ts
··· 1 - import { getCollection, getEntry } from "astro:content"; 2 - 3 - export async function getStaticPaths() { 4 - return getCollection( 5 - "works", 6 - ({ data: { metadata } }) => !metadata.private, 7 - ).then((entries) => 8 - entries.map((entry) => ({ 9 - params: { work: entry.data.id }, 10 - })), 11 - ); 12 - } 13 - 14 - export async function GET({ params: { work } }) { 15 - const entry = await getEntry("works", work); 16 - 17 - if (!entry) { 18 - return new Response("Not Found", { 19 - status: 404, 20 - }); 21 - } 22 - 23 - return new Response(JSON.stringify(entry.data, null, 2)); 24 - } 1 + import { getCollection, getEntry } from "astro:content"; 2 + 3 + export async function getStaticPaths() { 4 + return getCollection( 5 + "works", 6 + ({ data: { metadata } }) => !metadata.private, 7 + ).then((entries) => 8 + entries.map((entry) => ({ 9 + params: { work: entry.data.id }, 10 + })), 11 + ); 12 + } 13 + 14 + export async function GET({ params: { work } }) { 15 + const entry = await getEntry("works", work); 16 + 17 + if (!entry) { 18 + return new Response("Not Found", { 19 + status: 404, 20 + }); 21 + } 22 + 23 + return new Response(JSON.stringify(entry.data, null, 2)); 24 + }
-1
tags.yaml
··· 1 - 2 1 # todo: deprecate 3 2 - singular: school 4 3 plural: school
+4 -4
tsconfig.json
··· 1 1 { 2 - "extends": "astro/tsconfigs/strict", 3 - "include": [".astro/types.d.ts", "**/*"], 4 - "exclude": ["dist"], 5 2 "compilerOptions": { 6 3 "allowJs": true 7 - } 4 + }, 5 + "exclude": ["dist"], 6 + "extends": "astro/tsconfigs/strict", 7 + "include": [".astro/types.d.ts", "**/*"] 8 8 }