[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"$fkADYrISk36ruwd4wBzu1EHHZjgeIWHSkYPMvR3PJ96U":3},{"_id":4,"slug":5,"__v":7,"content":8,"cover":12,"createdAt":13,"date":14,"excerpt":15,"featured":19,"order":20,"tag":21,"title":25,"updatedAt":27,"skills":28,"technologies":106},"6abbbacf10e450ed5689c5aa",{"fr":6,"nl":6,"en":6},"cineplan",0,{"fr":9,"nl":10,"en":11},"\u003Ch2>Le projet\u003C\u002Fh2>\u003Cp>Une application que j'utilise au quotidien : CinePlan remplace les notes et les listes éparpillées par une vraie bibliothèque de films personnelle, avec ce que je veux voir, ce que j'ai vu, ce que j'en ai pensé et quand je compte y aller.\u003C\u002Fp>\u003Ch2>Ce que fait l'application\u003C\u002Fh2>\u003Cul>\u003Cli>la découverte et la recherche de films, avec filtres par genre et langue originale, et tris multiples ;\u003C\u002Fli>\u003Cli>une fiche film complète : affiches et images, synopsis, distribution, équipe technique, bande-annonce, films de la même saga ;\u003C\u002Fli>\u003Cli>une watchlist, un historique des films vus et un système de notes par paliers, de S à E ;\u003C\u002Fli>\u003Cli>un agenda pour planifier ses séances, et un tirage au sort dans la watchlist quand on n'arrive pas à choisir ;\u003C\u002Fli>\u003Cli>des statistiques personnelles : temps passé devant l'écran, films par semaine, acteurs, réalisateurs et genres les plus vus ;\u003C\u002Fli>\u003Cli>l'export et l'import de toute la bibliothèque pour ne jamais perdre ses données.\u003C\u002Fli>\u003C\u002Ful>\u003Ch2>Sous le capot\u003C\u002Fh2>\u003Cp>Construite avec Expo et React Native en TypeScript, l'application fonctionne en local d'abord : la bibliothèque est stockée dans une base SQLite sur le téléphone, avec des migrations versionnées, et reste consultable hors ligne. TMDB fournit le catalogue : les fiches sont enregistrées localement puis rafraîchies automatiquement, en français avec repli sur l'anglais, et la bande-annonce en version originale est privilégiée.\u003C\u002Fp>\u003Cp>Une attention particulière a été portée aux finitions : navigation par onglets sur mesure avec barre flottante floutée, animations Reanimated, retours haptiques, chargements en squelette. Les mises à jour sont déployées à distance via EAS Update, sans repasser par une installation.\u003C\u002Fp>","\u003Ch2>Het project\u003C\u002Fh2>\u003Cp>Een app die ik dagelijks gebruik: CinePlan vervangt verspreide notities en lijstjes door een echte persoonlijke filmbibliotheek, met wat ik wil zien, wat ik gezien heb, wat ik ervan vond en wanneer ik wil gaan.\u003C\u002Fp>\u003Ch2>Wat de app doet\u003C\u002Fh2>\u003Cul>\u003Cli>films ontdekken en zoeken, met filters op genre en originele taal, en verschillende sorteringen;\u003C\u002Fli>\u003Cli>een volledige filmfiche: posters en beelden, synopsis, cast, crew, trailer, films uit dezelfde reeks;\u003C\u002Fli>\u003Cli>een watchlist, een overzicht van geziene films en een beoordelingssysteem in niveaus, van S tot E;\u003C\u002Fli>\u003Cli>een agenda om filmavonden te plannen, en een willekeurige keuze uit de watchlist als je niet kunt kiezen;\u003C\u002Fli>\u003Cli>persoonlijke statistieken: kijktijd, films per week, meest geziene acteurs, regisseurs en genres;\u003C\u002Fli>\u003Cli>export en import van de hele bibliotheek, zodat je nooit gegevens verliest.\u003C\u002Fli>\u003C\u002Ful>\u003Ch2>Onder de motorkap\u003C\u002Fh2>\u003Cp>De app is gebouwd met Expo en React Native in TypeScript en werkt local-first: de bibliotheek staat in een SQLite-database op de telefoon, met geversioneerde migraties, en blijft offline raadpleegbaar. TMDB levert de catalogus: fiches worden lokaal opgeslagen en automatisch ververst, in het Frans met terugval op het Engels, en de trailer in originele versie krijgt voorrang.\u003C\u002Fp>\u003Cp>Er ging veel aandacht naar de afwerking: tabnavigatie op maat met een zwevende, vervaagde balk, Reanimated-animaties, haptische feedback en skeleton loaders. Updates worden op afstand uitgerold via EAS Update, zonder nieuwe installatie.\u003C\u002Fp>","\u003Ch2>The project\u003C\u002Fh2>\u003Cp>An app I use every day: CinePlan replaces scattered notes and lists with a proper personal film library, covering what I want to see, what I've seen, what I thought of it and when I plan to go.\u003C\u002Fp>\u003Ch2>What the app does\u003C\u002Fh2>\u003Cul>\u003Cli>film discovery and search, with genre and original-language filters and several sort orders;\u003C\u002Fli>\u003Cli>a complete film page: posters and stills, synopsis, cast, crew, trailer, other films in the same collection;\u003C\u002Fli>\u003Cli>a watchlist, a history of films seen and a tier rating system from S to E;\u003C\u002Fli>\u003Cli>a calendar to plan screenings, and a random pick from the watchlist when you can't decide;\u003C\u002Fli>\u003Cli>personal statistics: time spent watching, films per week, most-watched actors, directors and genres;\u003C\u002Fli>\u003Cli>export and import of the whole library, so no data is ever lost.\u003C\u002Fli>\u003C\u002Ful>\u003Ch2>Under the hood\u003C\u002Fh2>\u003Cp>Built with Expo and React Native in TypeScript, the app is local-first: the library lives in an on-device SQLite database with versioned migrations, and stays available offline. TMDB provides the catalogue: film pages are saved locally and refreshed automatically, in French with an English fallback, and original-language trailers are preferred.\u003C\u002Fp>\u003Cp>Particular care went into the finish: a custom tab navigation with a floating blurred bar, Reanimated animations, haptic feedback and skeleton loaders. Updates ship over the air with EAS Update, with no reinstall needed.\u003C\u002Fp>","\u002Fimages\u002Fprojects\u002Fcineplan.jpg","2026-09-29T13:19:11.048Z","2026-09-01T00:00:00.000Z",{"fr":16,"nl":17,"en":18},"Une application mobile de cinéphile pour découvrir des films, tenir sa watchlist, noter ce qu'on a vu et planifier ses prochaines séances, alimentée par l'API TMDB.","Een mobiele app voor filmliefhebbers om films te ontdekken, een watchlist bij te houden, geziene films te beoordelen en de volgende filmavonden te plannen, aangedreven door de TMDB-API.","A mobile app for film lovers to discover movies, keep a watchlist, rate what they've seen and plan their next screenings, powered by the TMDB API.",true,-3,{"fr":22,"nl":23,"en":24},"App mobile · projet perso","Mobiele app · eigen project","Mobile app · personal project",{"fr":26,"nl":26,"en":26},"CinePlan","2026-09-30T10:04:54.021Z",[29,46,62,78,93],{"_id":30,"name":31,"value":35,"icon":36,"order":7,"__v":7,"createdAt":37,"updatedAt":37,"iconDef":38},"6abcd9c36ddb26fc8d5fb73d",{"fr":32,"nl":33,"en":34},"Développement front-end","Front-endontwikkeling","Front-end development",90,"code","2026-09-30T09:43:31.140Z",{"prefix":39,"iconName":36,"icon":40},"fasl",[41,42,43,44,45],576,512,[],"f121","M383.3 21.1l5.1-15.2-30.4-10.1-5.1 15.2-160 480-5.1 15.2 30.4 10.1 5.1-15.2 160-480zM150.8 144l-22.6-22.6-11.3 11.3-112 112-11.3 11.3 11.3 11.3 112 112 11.3 11.3 22.6-22.6-11.3-11.3-100.7-100.7 100.7-100.7 11.3-11.3zm274.7 0l11.3 11.3 100.7 100.7-100.7 100.7-11.3 11.3 22.6 22.6 11.3-11.3 112-112 11.3-11.3-11.3-11.3-112-112-11.3-11.3-22.6 22.6z",{"_id":47,"name":48,"value":52,"icon":53,"order":54,"__v":7,"createdAt":55,"updatedAt":55,"iconDef":56},"6abcd9c36ddb26fc8d5fb73f",{"fr":49,"nl":50,"en":51},"Bases de données & modélisation","Databases & datamodellering","Databases & data modelling",80,"database",2,"2026-09-30T09:43:31.141Z",{"prefix":39,"iconName":53,"icon":57},[58,42,59,60,61],448,[],"f1c0","M32 203.6l88.1 50.3 3.7 2.1 200.5 0 3.7-2.1 88.1-50.3 0 91.1-100.2 57.3-183.5 0-100.2-57.3 0-91.1zm0-36.9l0-69 105.2-65.7 173.6 0 105.2 65.7 0 69-100.2 57.3-183.5 0-100.2-57.3zm0 247.6l0-82.7 88.1 50.3 3.7 2.1 200.5 0 3.7-2.1 88.1-50.3 0 82.7-105.2 65.7-173.6 0-105.2-65.7zM128 0l-128 80 0 352 128 80 192 0 128-80 0-352-128-80-192 0z",{"_id":63,"name":64,"value":68,"icon":69,"order":70,"__v":7,"createdAt":55,"updatedAt":55,"iconDef":71},"6abcd9c36ddb26fc8d5fb742",{"fr":65,"nl":66,"en":67},"Applications mobiles","Mobiele apps","Mobile apps",75,"mobile-screen",5,{"prefix":39,"iconName":69,"icon":72},[73,42,74,76,77],384,[75],"mobile-android-alt","f3cf","M48 480l288 0 0-128-288 0 0 128zm0-160l288 0 0-288-288 0 0 288zM16 0l352 0 0 512-352 0 0-512zM160 400l80 0 0 32-96 0 0-32 16 0z",{"_id":79,"name":80,"value":84,"icon":85,"order":86,"__v":7,"createdAt":55,"updatedAt":55,"iconDef":87},"6abcd9c36ddb26fc8d5fb744",{"fr":81,"nl":82,"en":83},"Intégrations d'API & automatisation","API-integraties & automatisering","API integrations & automation",85,"plug",7,{"prefix":39,"iconName":85,"icon":88},[58,42,89,91,92],[90],128268,"f1e6","M128-32l0 128 192 0 0-128 32 0 0 128 96 0 0 32-32 0 0 96c0 100.6-77.4 183.2-176 191.3l0 96.7-32 0 0-96.7C109.4 407.2 32 324.6 32 224l0-96-32 0 0-32 96 0 0-128 32 0zM64 128l0 96c0 88.4 71.6 160 160 160s160-71.6 160-160l0-96-320 0z",{"_id":94,"name":95,"value":68,"icon":99,"order":100,"__v":7,"createdAt":55,"updatedAt":55,"iconDef":101},"6abcd9c36ddb26fc8d5fb747",{"fr":96,"nl":97,"en":98},"Mise en production, CI\u002FCD & monitoring","Livegang, CI\u002FCD & monitoring","Deployment, CI\u002FCD & monitoring","rocket",10,{"prefix":39,"iconName":99,"icon":102},[41,42,103,104,105],[],"f135","M501.6 42.4l2.1 10.5c8.9 44.3 14.2 111.2-19 175.5-19.3 37.4-51.1 72.8-100.7 102.1L384 448c-101.3 60.8-154.7 92.8-160 96L224 374.6 169.4 320 0 320c3.2-5.3 35.2-58.7 96-160l117.5 0c29.3-49.6 64.7-81.4 102.1-100.7 64.3-33.2 131.2-27.8 175.5-19l10.5 2.1zM352 347.3c-27.4 12.9-59.2 24.1-96 33.3l0 106.9 96-57.6 0-82.6zM163.4 288c9.2-36.8 20.5-68.6 33.3-96l-82.6 0-57.6 96 106.9 0zm30.2 11L245 350.4c124.4-30.5 183.9-83.7 211.3-136.7 26-50.4 24.7-103.6 18-143.9-40.3-6.8-93.5-8-143.9 18-53.1 27.4-106.3 86.8-136.7 211.3zM344 176a24 24 0 1 0 48 0 24 24 0 1 0 -48 0zm24 56a56 56 0 1 1 0-112 56 56 0 1 1 0 112z",[107,121,134,141],{"_id":108,"name":109,"__v":7,"createdAt":110,"icon":111,"order":112,"updatedAt":113,"iconDef":114},"6abbd10010e450ed5689c5ae","TypeScript","2026-09-29T14:53:52.743Z","fab:typescript",1,"2026-09-30T10:04:53.996Z",{"prefix":115,"iconName":116,"icon":117},"fab","typescript",[58,42,118,119,120],[],"e840","M16.8 32l414.4 0c9.3 0 16.8 7.5 16.8 16.8l0 414.4c0 9.3-7.5 16.8-16.8 16.8L16.8 480C7.5 480 0 472.5 0 463.2L0 48.8C0 39.5 7.5 32 16.8 32zM249 270.3l0-36.7-159.4 0 0 36.7 56.9 0 0 163.6 45.3 0 0-163.6 57.2 0zm18.1 159.3c7.3 3.7 15.9 6.5 25.9 8.4s20.5 2.8 31.5 2.8c10.8 0 21-1 30.7-3.1s18.2-5.4 25.5-10.1 13.1-10.9 17.4-18.4 6.4-17 6.4-28.2c0-8.1-1.2-15.2-3.7-21.3s-5.9-11.5-10.5-16.3-10.1-9-16.5-12.8-13.7-7.3-21.7-10.7c-5.9-2.4-11.2-4.8-15.9-7.1s-8.7-4.6-11.9-7-5.8-4.9-7.6-7.5-2.7-5.7-2.7-9c0-3.1 .8-5.8 2.4-8.3s3.8-4.6 6.7-6.4 6.5-3.1 10.7-4.1 8.9-1.5 14.1-1.5c3.7 0 7.7 .3 11.9 .8s8.4 1.4 12.6 2.6 8.3 2.6 12.3 4.4 7.7 3.8 11 6.1l0-41.8c-6.8-2.6-14.3-4.5-22.4-5.8s-17.4-1.9-27.9-1.9c-10.7 0-20.8 1.1-30.4 3.4s-18 5.8-25.2 10.7-13 11-17.2 18.5-6.3 16.5-6.3 26.9c0 13.3 3.9 24.7 11.6 34.1s19.5 17.4 35.2 23.9c6.2 2.5 11.9 5 17.3 7.4s10 4.9 13.8 7.5 7 5.4 9.2 8.5 3.4 6.6 3.4 10.5c0 2.9-.7 5.6-2.1 8s-3.5 4.6-6.4 6.4-6.4 3.2-10.7 4.3-9.3 1.5-15 1.5c-9.7 0-19.4-1.7-28.9-5.1s-18.4-8.5-26.6-15.3l0 44.7z",{"_id":122,"name":123,"__v":7,"createdAt":124,"icon":125,"order":126,"updatedAt":127,"iconDef":128},"6abbd10010e450ed5689c5b6","React Native","2026-09-29T14:53:52.752Z","fab:react",8,"2026-09-30T10:04:54.005Z",{"prefix":115,"iconName":129,"icon":130},"react",[42,42,131,132,133],[],"f41b","M418.2 177.2c-5.4-1.8-10.8-3.5-16.2-5.1 .9-3.7 1.7-7.4 2.5-11.1 12.3-59.6 4.2-107.5-23.1-123.3-26.3-15.1-69.2 .6-112.6 38.4-4.3 3.7-8.5 7.6-12.5 11.5-2.7-2.6-5.5-5.2-8.3-7.7-45.5-40.4-91.1-57.4-118.4-41.5-26.2 15.2-34 60.3-23 116.7 1.1 5.6 2.3 11.1 3.7 16.7-6.4 1.8-12.7 3.8-18.6 5.9-53.4 18.5-91.7 47.7-91.7 77.9 0 31.2 40.8 62.5 96.3 81.5 4.5 1.5 9 3 13.6 4.3-1.5 6-2.8 11.9-4 18-10.5 55.5-2.3 99.5 23.9 114.6 27 15.6 72.4-.4 116.6-39.1 3.5-3.1 7-6.3 10.5-9.7 4.4 4.3 9 8.4 13.6 12.4 42.8 36.8 85.1 51.7 111.2 36.6 27-15.6 35.8-62.9 24.4-120.5-.9-4.4-1.9-8.9-3-13.5 3.2-.9 6.3-1.9 9.4-2.9 57.7-19.1 99.5-50 99.5-81.7 0-30.3-39.4-59.7-93.8-78.4zM282.9 92.3c37.2-32.4 71.9-45.1 87.7-36 16.9 9.7 23.4 48.9 12.8 100.4-.7 3.4-1.4 6.7-2.3 10-22.2-5-44.7-8.6-67.3-10.6-13-18.6-27.2-36.4-42.6-53.1 3.9-3.7 7.7-7.2 11.7-10.7zM167.2 307.5c5.1 8.7 10.3 17.4 15.8 25.9-15.6-1.7-31.1-4.2-46.4-7.5 4.4-14.4 9.9-29.3 16.3-44.5 4.6 8.8 9.3 17.5 14.3 26.1zM136.9 187.2c14.4-3.2 29.7-5.8 45.6-7.8-5.3 8.3-10.5 16.8-15.4 25.4-4.9 8.5-9.7 17.2-14.2 26-6.3-14.9-11.6-29.5-16-43.6zm27.4 68.9c6.6-13.8 13.8-27.3 21.4-40.6s15.8-26.2 24.4-38.9c15-1.1 30.3-1.7 45.9-1.7s31 .6 45.9 1.7c8.5 12.6 16.6 25.5 24.3 38.7s14.9 26.7 21.7 40.4c-6.7 13.8-13.9 27.4-21.6 40.8-7.6 13.3-15.7 26.2-24.2 39-14.9 1.1-30.4 1.6-46.1 1.6s-30.9-.5-45.6-1.4c-8.7-12.7-16.9-25.7-24.6-39s-14.8-26.8-21.5-40.6zm180.6 51.2c5.1-8.8 9.9-17.7 14.6-26.7 6.4 14.5 12 29.2 16.9 44.3-15.5 3.5-31.2 6.2-47 8 5.4-8.4 10.5-17 15.5-25.6zm14.4-76.5c-4.7-8.8-9.5-17.6-14.5-26.2-4.9-8.5-10-16.9-15.3-25.2 16.1 2 31.5 4.7 45.9 8-4.6 14.8-10 29.2-16.1 43.4zM256.2 118.3c10.5 11.4 20.4 23.4 29.6 35.8-19.8-.9-39.7-.9-59.5 0 9.8-12.9 19.9-24.9 29.9-35.8zM140.2 57c16.8-9.8 54.1 4.2 93.4 39 2.5 2.2 5 4.6 7.6 7-15.5 16.7-29.8 34.5-42.9 53.1-22.6 2-45 5.5-67.2 10.4-1.3-5.1-2.4-10.3-3.5-15.5-9.4-48.4-3.2-84.9 12.6-94zM115.7 320.6c-4.2-1.2-8.3-2.5-12.4-3.9-21.3-6.7-45.5-17.3-63-31.2-10.1-7-16.9-17.8-18.8-29.9 0-18.3 31.6-41.7 77.2-57.6 5.7-2 11.5-3.8 17.3-5.5 6.8 21.7 15 43 24.5 63.6-9.6 20.9-17.9 42.5-24.8 64.5zm116.6 98c-16.5 15.1-35.6 27.1-56.4 35.3-11.1 5.3-23.9 5.8-35.3 1.3-15.9-9.2-22.5-44.5-13.5-92 1.1-5.6 2.3-11.2 3.7-16.7 22.4 4.8 45 8.1 67.9 9.8 13.2 18.7 27.7 36.6 43.2 53.4-3.2 3.1-6.4 6.1-9.6 8.9zm24.5-24.3c-10.2-11-20.4-23.2-30.3-36.3 9.6 .4 19.5 .6 29.5 .6 10.3 0 20.4-.2 30.4-.7-9.2 12.7-19.1 24.8-29.6 36.4zm130.7 30c-.9 12.2-6.9 23.6-16.5 31.3-15.9 9.2-49.8-2.8-86.4-34.2-4.2-3.6-8.4-7.5-12.7-11.5 15.3-16.9 29.4-34.8 42.2-53.6 22.9-1.9 45.7-5.4 68.2-10.5 1 4.1 1.9 8.2 2.7 12.2 4.9 21.6 5.7 44.1 2.5 66.3zm18.2-107.5c-2.8 .9-5.6 1.8-8.5 2.6-7-21.8-15.6-43.1-25.5-63.8 9.6-20.4 17.7-41.4 24.5-62.9 5.2 1.5 10.2 3.1 15 4.7 46.6 16 79.3 39.8 79.3 58 0 19.6-34.9 44.9-84.8 61.4zM256 301.8a45.8 45.8 0 1 0 0-91.6 45.8 45.8 0 1 0 0 91.6z",{"_id":135,"name":136,"__v":7,"createdAt":124,"icon":69,"order":137,"updatedAt":127,"iconDef":138},"6abbd10010e450ed5689c5b7","Expo",9,{"prefix":39,"iconName":69,"icon":139},[73,42,140,76,77],[75],{"_id":142,"name":143,"__v":7,"createdAt":144,"icon":145,"order":146,"updatedAt":147,"iconDef":148},"6abbd10010e450ed5689c5b5","SQLite","2026-09-29T14:53:52.751Z","hard-drive",24,"2026-09-30T10:04:54.011Z",{"prefix":39,"iconName":145,"icon":149},[58,42,150,153,154],[151,152],128436,"hdd","f0a0","M32 64l0 192 384 0 0-192-384 0zm0 224l0 160 384 0 0-160-384 0zM0 256l0-224 448 0 0 448-448 0 0-224zm256 88a24 24 0 1 1 0 48 24 24 0 1 1 0-48zm72 24a24 24 0 1 1 48 0 24 24 0 1 1 -48 0z"]