this repo has no description
0
fork

Configure Feed

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

Merge branch 'main' of github.com:jcalixte/blog into main

+71 -68
+1
.npmrc
··· 1 1 shamefully-hoist=true 2 + strict-peer-dependencies=false
+12
__unconfig_iles.config.ts
··· 1 + 2 + let __unconfig_data; 3 + let __unconfig_stub = function (data = {}) { __unconfig_data = data }; 4 + __unconfig_stub.default = (data = {}) => { __unconfig_data = data }; 5 + import { defineConfig } from "iles"; 6 + 7 + const __unconfig_default = defineConfig({ 8 + siteUrl: "https://juliencalixte.eu", 9 + modules: ["@islands/headings"], 10 + }); 11 + 12 + if (typeof __unconfig_default === "function") __unconfig_default(...[{"command":"serve","mode":"development"}]);export default __unconfig_data;
+1 -1
components.d.ts
··· 7 7 AboutMe: typeof import('./src/components/presentation/AboutMe.vue')['default'] 8 8 AppHeader: typeof import('./src/components/AppHeader.vue')['default'] 9 9 BlogPosts: typeof import('./src/components/posts/BlogPosts.vue')['default'] 10 - Island: typeof import('./node_modules/.pnpm/iles@0.7.38_sass@1.51.0/node_modules/iles/dist/client/app/components/Island.vue')['default'] 10 + Island: typeof import('./node_modules/.pnpm/iles@0.7.40_sass@1.53.0/node_modules/iles/dist/client/app/components/Island.vue')['default'] 11 11 JulienCalixte: typeof import('./src/components/core/JulienCalixte.vue')['default'] 12 12 ProductionFlow: typeof import('./src/components/flow/ProductionFlow.vue')['default'] 13 13 Welcome: typeof import('./src/components/Welcome.vue')['default']
+3 -4
package.json
··· 1 1 { 2 - "name": "iles-app", 3 - "version": "0.0.0", 2 + "name": "jcalixte-blog", 3 + "version": "1.0.0", 4 4 "scripts": { 5 5 "dev": "iles dev", 6 6 "build": "iles build", 7 7 "preview": "iles preview --port 5050", 8 - "test": "iles test", 9 8 "typecheck": "vue-tsc --noEmit" 10 9 }, 11 10 "engines": { 12 - "node": "^14.18 || >= 16.0.0" 11 + "node": ">= 16.0.0" 13 12 }, 14 13 "devDependencies": { 15 14 "@islands/headings": "^0.8.0",
-25
pnpm-lock.yaml
··· 40 40 /@babel/helper-validator-identifier/7.16.7: 41 41 resolution: {integrity: sha512-hsEnFemeiW4D08A5gUAZxLBTXpZ39P+a+DGDsHw1yxqyQ/jzFEnxf5uTEGp+3bzAbNOxU1paTgYS4ECU/IgfDw==} 42 42 engines: {node: '>=6.9.0'} 43 - dev: true 44 43 45 44 /@babel/parser/7.17.3: 46 45 resolution: {integrity: sha512-7yJPvPV+ESz2IUTPbOL+YkIGyCqOyNIzdguKQuJGnH7bg1WTIifuM21YqokFt/THWh1AkCRn9IgoykTRCBVpzA==} ··· 48 47 hasBin: true 49 48 dependencies: 50 49 '@babel/types': 7.17.0 51 - dev: true 52 50 53 51 /@babel/types/7.17.0: 54 52 resolution: {integrity: sha512-TmKSNO4D5rzhL5bjWFcVHHLETzfQ/AmbKpKPOSjlP0WoHZ6L911fgoOKY4Alp/emzG4cHJdyN49zpgkbXFEHHw==} ··· 56 54 dependencies: 57 55 '@babel/helper-validator-identifier': 7.16.7 58 56 to-fast-properties: 2.0.0 59 - dev: true 60 57 61 58 /@esbuild/linux-loong64/0.15.7: 62 59 resolution: {integrity: sha512-IKznSJOsVUuyt7cDzzSZyqBEcZe+7WlBqTVXiF1OXP/4Nm387ToaXZ0fyLwI1iBlI/bzpxVq411QE2/Bt2XWWw==} ··· 311 308 '@vue/shared': 3.2.39 312 309 estree-walker: 2.0.2 313 310 source-map: 0.6.1 314 - dev: true 315 311 316 312 /@vue/compiler-dom/3.2.39: 317 313 resolution: {integrity: sha512-HMFI25Be1C8vLEEv1hgEO1dWwG9QQ8LTTPmCkblVJY/O3OvWx6r1+zsox5mKPMGvqYEZa6l8j+xgOfUspgo7hw==} 318 314 dependencies: 319 315 '@vue/compiler-core': 3.2.39 320 316 '@vue/shared': 3.2.39 321 - dev: true 322 317 323 318 /@vue/compiler-sfc/3.2.39: 324 319 resolution: {integrity: sha512-fqAQgFs1/BxTUZkd0Vakn3teKUt//J3c420BgnYgEOoVdTwYpBTSXCMJ88GOBCylmUBbtquGPli9tVs7LzsWIA==} ··· 333 328 magic-string: 0.25.7 334 329 postcss: 8.4.13 335 330 source-map: 0.6.1 336 - dev: true 337 331 338 332 /@vue/compiler-ssr/3.2.39: 339 333 resolution: {integrity: sha512-EoGCJ6lincKOZGW+0Ky4WOKsSmqL7hp1ZYgen8M7u/mlvvEQUaO9tKKOy7K43M9U2aA3tPv0TuYYQFrEbK2eFQ==} 340 334 dependencies: 341 335 '@vue/compiler-dom': 3.2.39 342 336 '@vue/shared': 3.2.39 343 - dev: true 344 337 345 338 /@vue/devtools-api/6.2.1: 346 339 resolution: {integrity: sha512-OEgAMeQXvCoJ+1x8WyQuVZzFo0wcyCmUR3baRVLmKBo1LmYZWMlRiXlux5jd0fqVJu6PfDbOrZItVqUEzLobeQ==} ··· 353 346 '@vue/shared': 3.2.39 354 347 estree-walker: 2.0.2 355 348 magic-string: 0.25.7 356 - dev: true 357 349 358 350 /@vue/reactivity/3.2.38: 359 351 resolution: {integrity: sha512-6L4myYcH9HG2M25co7/BSo0skKFHpAN8PhkNPM4xRVkyGl1K5M3Jx4rp5bsYhvYze2K4+l+pioN4e6ZwFLUVtw==} ··· 365 357 resolution: {integrity: sha512-vlaYX2a3qMhIZfrw3Mtfd+BuU+TZmvDrPMa+6lpfzS9k/LnGxkSuf0fhkP0rMGfiOHPtyKoU9OJJJFGm92beVQ==} 366 358 dependencies: 367 359 '@vue/shared': 3.2.39 368 - dev: true 369 360 370 361 /@vue/runtime-core/3.2.39: 371 362 resolution: {integrity: sha512-xKH5XP57JW5JW+8ZG1khBbuLakINTgPuINKL01hStWLTTGFOrM49UfCFXBcFvWmSbci3gmJyLl2EAzCaZWsx8g==} 372 363 dependencies: 373 364 '@vue/reactivity': 3.2.39 374 365 '@vue/shared': 3.2.39 375 - dev: true 376 366 377 367 /@vue/runtime-dom/3.2.39: 378 368 resolution: {integrity: sha512-4G9AEJP+sLhsqf5wXcyKVWQKUhI+iWfy0hWQgea+CpaTD7BR0KdQzvoQdZhwCY6B3oleSyNLkLAQwm0ya/wNoA==} ··· 380 370 '@vue/runtime-core': 3.2.39 381 371 '@vue/shared': 3.2.39 382 372 csstype: 2.6.19 383 - dev: true 384 373 385 374 /@vue/server-renderer/3.2.39_vue@3.2.39: 386 375 resolution: {integrity: sha512-1yn9u2YBQWIgytFMjz4f/t0j43awKytTGVptfd3FtBk76t1pd8mxbek0G/DrnjJhd2V7mSTb5qgnxMYt8Z5iSQ==} ··· 390 379 '@vue/compiler-ssr': 3.2.39 391 380 '@vue/shared': 3.2.39 392 381 vue: 3.2.39 393 - dev: true 394 382 395 383 /@vue/shared/3.2.38: 396 384 resolution: {integrity: sha512-dTyhTIRmGXBjxJE+skC8tTWCGLCVc4wQgRRLt8+O9p5ewBAjoBwtCAkLPrtToSr1xltoe3st21Pv953aOZ7alg==} ··· 398 386 399 387 /@vue/shared/3.2.39: 400 388 resolution: {integrity: sha512-D3dl2ZB9qE6mTuWPk9RlhDeP1dgNRUKC3NJxji74A4yL8M2MwlhLKUC/49WHjrNzSPug58fWx/yFbaTzGAQSBw==} 401 - dev: true 402 389 403 390 /@vueuse/head/0.7.5_vue@3.2.39: 404 391 resolution: {integrity: sha512-L+XQ5Act0nT/ZyO8Qo10J4FyM1qPOyQb6MT4MMn6+AITzrStpmKs/nUDDLJKD/rCcNWl/65XbdQm4T2vKp3VOQ==} ··· 550 537 551 538 /csstype/2.6.19: 552 539 resolution: {integrity: sha512-ZVxXaNy28/k3kJg0Fou5MiYpp88j7H9hLZp8PDC3jV0WFjfH5E9xHb56L0W59cPbKbcHXeP4qyT8PrHp8t6LcQ==} 553 - dev: true 554 540 555 541 /debug/4.3.3: 556 542 resolution: {integrity: sha512-/zxw5+vh1Tfv+4Qn7a5nsbcJKPaSvCDhojn6FEl9vupwK2VCSDtEiEtqr8DFtzYFOdz63LBkxec7DYuc2jon6Q==} ··· 920 906 921 907 /estree-walker/2.0.2: 922 908 resolution: {integrity: sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==} 923 - dev: true 924 909 925 910 /estree-walker/3.0.1: 926 911 resolution: {integrity: sha512-woY0RUD87WzMBUiZLx8NsYr23N5BKsOMZHhu2hoNRVh6NXGfoiT1KOL8G3UHlJAnEDGmfa5ubNA/AacfG+Kb0g==} ··· 1454 1439 resolution: {integrity: sha512-4CrMT5DOHTDk4HYDlzmwu4FVCcIYI8gauveasrdCu2IKIFOJ3f0v/8MDGJCDL9oD2ppz/Av1b0Nj345H9M+XIA==} 1455 1440 dependencies: 1456 1441 sourcemap-codec: 1.4.8 1457 - dev: true 1458 1442 1459 1443 /magic-string/0.26.2: 1460 1444 resolution: {integrity: sha512-NzzlXpclt5zAbmo6h6jNc8zl2gNRGHvmsZW4IvZhTC4W7k4OlLP+S5YLussa/r3ixNT66KOQfNORlXHSOy/X4A==} ··· 1903 1887 resolution: {integrity: sha512-MqBkQh/OHTS2egovRtLk45wEyNXwF+cokD+1YPf9u5VfJiRdAiRwB2froX5Co9Rh20xs4siNPm8naNotSD6RBw==} 1904 1888 engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} 1905 1889 hasBin: true 1906 - dev: true 1907 1890 1908 1891 /normalize-path/3.0.0: 1909 1892 resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==} ··· 2013 1996 2014 1997 /picocolors/1.0.0: 2015 1998 resolution: {integrity: sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==} 2016 - dev: true 2017 1999 2018 2000 /picomatch/2.3.1: 2019 2001 resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} ··· 2045 2027 nanoid: 3.3.4 2046 2028 picocolors: 1.0.0 2047 2029 source-map-js: 1.0.2 2048 - dev: true 2049 2030 2050 2031 /postcss/8.4.16: 2051 2032 resolution: {integrity: sha512-ipHE1XBvKzm5xI7hiHCZJCSugxvsdq2mPnsq5+UF+VHCjiBvtDrlxJfMBToWaP9D5XlgNmcFGqoHmUn0EYEaRQ==} ··· 2209 2190 /source-map-js/1.0.2: 2210 2191 resolution: {integrity: sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==} 2211 2192 engines: {node: '>=0.10.0'} 2212 - dev: true 2213 2193 2214 2194 /source-map/0.6.1: 2215 2195 resolution: {integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==} 2216 2196 engines: {node: '>=0.10.0'} 2217 - dev: true 2218 2197 2219 2198 /source-map/0.7.3: 2220 2199 resolution: {integrity: sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ==} ··· 2223 2202 2224 2203 /sourcemap-codec/1.4.8: 2225 2204 resolution: {integrity: sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==} 2226 - dev: true 2227 2205 2228 2206 /space-separated-tokens/2.0.1: 2229 2207 resolution: {integrity: sha512-ekwEbFp5aqSPKaqeY1PGrlGQxPNaq+Cnx4+bE2D8sciBQrHpbwoBbawqTN2+6jPs9IdWxxiUcN0K2pkczD3zmw==} ··· 2298 2276 /to-fast-properties/2.0.0: 2299 2277 resolution: {integrity: sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==} 2300 2278 engines: {node: '>=4'} 2301 - dev: true 2302 2279 2303 2280 /to-regex-range/5.0.1: 2304 2281 resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} ··· 2320 2297 resolution: {integrity: sha512-goMHfm00nWPa8UvR/CPSvykqf6dVV8x/dp0c5mFTMTIu0u0FlGWRioyy7Nn0PGAdHxpJZnuO/ut+PpQ8UiHAig==} 2321 2298 engines: {node: '>=4.2.0'} 2322 2299 hasBin: true 2323 - dev: true 2324 2300 2325 2301 /unbox-primitive/1.0.1: 2326 2302 resolution: {integrity: sha512-tZU/3NqK3dA5gpE1KtyiJUrEB0lxnGkMFHptJ7q6ewdZ8s12QrODwNbhIJStmJkd1QDXa1NRA8aF2A1zk/Ypyw==} ··· 2602 2578 '@vue/runtime-dom': 3.2.39 2603 2579 '@vue/server-renderer': 3.2.39_vue@3.2.39 2604 2580 '@vue/shared': 3.2.39 2605 - dev: true 2606 2581 2607 2582 /webpack-sources/3.2.3: 2608 2583 resolution: {integrity: sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w==}
+1 -1
src/app.ts
··· 11 11 link: [ 12 12 { 13 13 rel: "stylesheet", 14 - href: "https://fonts.googleapis.com/css2?family=Fenix&family=Meow+Script&display=swap", 14 + href: "https://fonts.googleapis.com/css2?family=Gulzar&family=Meow+Script&display=swap", 15 15 }, 16 16 ], 17 17 };
+14 -3
src/assets/base.scss
··· 66 66 background: var(--color-background); 67 67 transition: color 0.5s, background-color 0.5s; 68 68 line-height: 1.6; 69 - font-family: "Fenix", BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen, Ubuntu, 69 + font-family: "Gulzar", BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen, Ubuntu, 70 70 serif; 71 71 font-size: 22px; 72 72 text-rendering: optimizeLegibility; ··· 88 88 color: var(--primary); 89 89 } 90 90 91 + h1 { 92 + font-size: 1.8em; 93 + } 94 + 95 + h2 { 96 + font-size: 1.2em; 97 + } 98 + 91 99 .julien-calixte { 92 - font-family: "Meow Script", "Lucida Sans", "Lucida Sans Regular", 93 - "Lucida Grande", "Lucida Sans Unicode", Geneva, Verdana, sans-serif; 100 + font-family: "Meow Script", "Lucida Sans", "Lucida Sans Regular", Geneva, Verdana, sans-serif; 94 101 } 102 + 103 + strong { 104 + font-weight: bold; 105 + }
+39
src/pages/posts/feature-factory.mdx
··· 1 + --- 2 + title: An introduction to feature factory 3 + layout: post 4 + --- 5 + 6 + # {title} 7 + 8 + From my experience, project failures mainly come by having mistrust between teams. Lead time due to team availability to solve dependencies increases. 9 + 10 + In this post, I would like to tell you what helped me, how we succeed to engage all the skills needed to develop a product. We will talk about agility, lean. 11 + 12 + ## It always comes to **showing** 13 + 14 + ## Showing where we are 15 + 16 + ## Showing where are the problems 17 + 18 + ## Showing what next the team has to do 19 + 20 + Talking is hard, comprehension between two people is hard. How many times a developper came back to the product owner to ask a few questions left in his ticket? How many times a designer was asked to update a design to see how the app will react in case of an edge case? 21 + 22 + Dear developers, how clear is it for you the way you build an app? 23 + 24 + You may answer "Easy! There are few steps:" 25 + 26 + 1. Talking to the client 27 + 2. Getting the design 28 + 3. Coding 29 + 4. deploying to users 30 + 31 + But how exactly? What does "talking to the client" really mean? And "coding" ? 32 + 33 + In lean, one particular important concept is **Visual Management**: *doing by seeing*. For that, we want to be clear on how we work. 34 + 35 + May I ask you some questions? 36 + 37 + First, can you name your different step before having your app in production? 38 + 39 + <ProductionFlow client:visible />
-25
src/pages/posts/production-flow.mdx
··· 1 - --- 2 - title: An introduction to production flow 3 - layout: post 4 - --- 5 - 6 - # {title} 7 - 8 - Dear developers, how clear is it for you the way you build an app? 9 - 10 - You may answer "Easy! There are few steps:" 11 - 12 - 1. Talking to the client 13 - 2. Getting the design 14 - 3. Coding 15 - 4. deploying to users 16 - 17 - But how exactly? What does "talking to the client" really mean? And "coding" ? 18 - 19 - In lean, one particular important concept is **Visual Management**: *doing by seeing*. For that, we want to be clear on how we work. 20 - 21 - May I ask you some questions? 22 - 23 - First, can you name your different step before having your app in production? 24 - 25 - <ProductionFlow client:visible />
-9
tests/example.spec.ts
··· 1 - import { test, describe, expect } from 'vitest' 2 - 3 - import Index from '../src/pages/index.mdx' 4 - 5 - describe('example test', () => { 6 - test('stub default layout', () => { 7 - expect(Index.title).toEqual('You did it!') 8 - }) 9 - })