added projects, professional experiences
BIN
public/icons/acklio.png
Normal file
|
After Width: | Height: | Size: 11 KiB |
BIN
public/icons/canvas.png
Normal file
|
After Width: | Height: | Size: 109 KiB |
BIN
public/icons/epitech.png
Normal file
|
After Width: | Height: | Size: 7.3 KiB |
BIN
public/icons/ezidam.png
Normal file
|
After Width: | Height: | Size: 63 KiB |
BIN
public/icons/naviarent.png
Normal file
|
After Width: | Height: | Size: 11 KiB |
BIN
public/icons/ubiscale.png
Normal file
|
After Width: | Height: | Size: 55 KiB |
BIN
public/icons/velorail.png
Normal file
|
After Width: | Height: | Size: 477 KiB |
BIN
public/icons/yaakadev.png
Executable file
|
After Width: | Height: | Size: 49 KiB |
BIN
public/images/canvas.png
Normal file
|
After Width: | Height: | Size: 2.5 MiB |
BIN
public/images/naviarent.jpg
Normal file
|
After Width: | Height: | Size: 617 KiB |
153
src/components/professional-experience.astro
Normal file
|
|
@ -0,0 +1,153 @@
|
|||
---
|
||||
import ExperienceCard from "./experience-card.astro";
|
||||
---
|
||||
|
||||
<div>
|
||||
<h1 class="text-4xl font-bold mb-4">Professional Experiences</h1>
|
||||
|
||||
<div class="mt-4 grid grid-cols-1 sm:grid-cols-2 gap-4">
|
||||
<ExperienceCard
|
||||
backgroundColor="bg-sky-950"
|
||||
logo="/icons/acklio.png"
|
||||
logoTransparentBackground={true}
|
||||
name="Acklio"
|
||||
dates="March 2023 - May 2023"
|
||||
title="Rust developer"
|
||||
tech={["Rust", "SCHC", "STM32 controllers", "LoRa", "LoRaWAN"]}
|
||||
>
|
||||
<p>
|
||||
The first usage of the SCHC framework (<a
|
||||
href="https://www.rfc-editor.org/rfc/rfc8724"
|
||||
target="_blank"
|
||||
class="underline">RFC 8724</a
|
||||
>) on Rust!
|
||||
</p>
|
||||
<div>
|
||||
<ul class="list-disc mt-6">
|
||||
<li class="ml-5">
|
||||
Creation of Rust bindings of a C library implementing
|
||||
the SCHC framework
|
||||
</li>
|
||||
<li class="ml-5">
|
||||
Demonstration of SCHC with applications in Rust on x86
|
||||
platform
|
||||
</li>
|
||||
<li class="ml-5">
|
||||
Proof of concept usage of embedded STM32 controllers
|
||||
exclusively in Rust
|
||||
</li>
|
||||
<li class="ml-5">
|
||||
Transmission of knowledge to the technical team
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
</ExperienceCard>
|
||||
|
||||
<ExperienceCard
|
||||
backgroundColor="bg-sky-950"
|
||||
logo="/icons/velorail.png"
|
||||
logoTransparentBackground={true}
|
||||
name="Vélorail du Kreiz Breizh"
|
||||
dates="August 2021 - April 2022"
|
||||
title="Freelance developer"
|
||||
link={{ uri: "https://resa.velorail.bzh", label: "Online booking" }}
|
||||
tech={["Angular", "NestJS", "GraphQL", "Rust", "Stripe"]}
|
||||
>
|
||||
<p>
|
||||
Creation of an online booking platform focused on the tourist
|
||||
activity of rail biking (vélorail).
|
||||
</p>
|
||||
<p>
|
||||
During the first 5 months with the platform, 43% of the bookings
|
||||
were made online.
|
||||
</p>
|
||||
<div>
|
||||
<ul class="list-disc mt-6">
|
||||
<li class="ml-5">
|
||||
Design, UX, booking and payment flow for customers
|
||||
</li>
|
||||
<li class="ml-5">
|
||||
Dashboard for managers with calendar view, manual
|
||||
bookings, slots management
|
||||
</li>
|
||||
<li class="ml-5">
|
||||
Ability to generate invoices, booking recaps for
|
||||
managers
|
||||
</li>
|
||||
<li class="ml-5">
|
||||
Sending emails to customers and managers about bookings
|
||||
</li>
|
||||
<li class="ml-5">
|
||||
Online deployment, maintenance of the service
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
</ExperienceCard>
|
||||
|
||||
<ExperienceCard
|
||||
backgroundColor="bg-sky-950"
|
||||
logo="/icons/yaakadev.png"
|
||||
name="Yaakadev"
|
||||
dates="April 2021 - July 2021"
|
||||
title="Full-Stack developer"
|
||||
tech={["NodeJS", "ExpressJS", "Angular", "MongoDB", "CI/CD"]}
|
||||
>
|
||||
<p>Maintenance of existing projects for clients</p>
|
||||
<p>
|
||||
Design, development and deployment of multiple projects from
|
||||
scratch:
|
||||
</p>
|
||||
<div>
|
||||
<ul class="list-disc mt-6">
|
||||
<li class="ml-5">
|
||||
Admin dashboard of a local merchants solution
|
||||
</li>
|
||||
<li class="ml-5">
|
||||
Calendar planning application with filtering and custom
|
||||
views
|
||||
</li>
|
||||
<li class="ml-5">
|
||||
Intranet to upload and download documents
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
</ExperienceCard>
|
||||
|
||||
<ExperienceCard
|
||||
backgroundColor="bg-sky-950"
|
||||
logo="/icons/epitech.png"
|
||||
logoTransparentBackground={true}
|
||||
name="Epitech"
|
||||
dates="February 2020 - April 2021, September 2022 - February 2023"
|
||||
title="Teaching assistant (AER)"
|
||||
tech={["C", "C++", "Haskell", "Rust", "Web and mobile development"]}
|
||||
>
|
||||
<p>Pedagogical supervision of three classes of students</p>
|
||||
<p>Conducting educational activities throughout the school year</p>
|
||||
<div>
|
||||
<ul class="list-disc mt-6">
|
||||
<li class="ml-5">Start of projects</li>
|
||||
<li class="ml-5">Technical help and guidance</li>
|
||||
<li class="ml-5">Proctoring exams</li>
|
||||
<li class="ml-5">Grading students on their work</li>
|
||||
</ul>
|
||||
</div>
|
||||
</ExperienceCard>
|
||||
|
||||
<ExperienceCard
|
||||
backgroundColor="bg-sky-950"
|
||||
logo="/icons/ubiscale.png"
|
||||
logoTransparentBackground={true}
|
||||
name="Ubiscale"
|
||||
dates="August 2019 - December 2019"
|
||||
title="Embedded developer"
|
||||
tech={["C on a ESP8266 controller", "Wi-Fi", "Bluetooth"]}
|
||||
>
|
||||
<p>Creation of a home Wifi gateway for an IoT object</p>
|
||||
<p>
|
||||
Research, reverse engineering of existing products, design and
|
||||
implementation
|
||||
</p>
|
||||
</ExperienceCard>
|
||||
</div>
|
||||
</div>
|
||||
195
src/components/projects.astro
Normal file
|
|
@ -0,0 +1,195 @@
|
|||
---
|
||||
import ExperienceCard from "./experience-card.astro";
|
||||
---
|
||||
|
||||
<div>
|
||||
<h1 class="text-4xl font-bold mb-4">Projects</h1>
|
||||
|
||||
<div class="mt-4 space-y-4">
|
||||
<div
|
||||
class="flex flex-col space-y-4 md:flex-row md:space-x-4 md:space-y-0"
|
||||
>
|
||||
<ExperienceCard
|
||||
backgroundColor="bg-pink-950"
|
||||
logo="/icons/ezidam.png"
|
||||
logoTransparentBackground={true}
|
||||
name="ezidam"
|
||||
dates="January 2023 - May 2023"
|
||||
title="Identity and Access Management system"
|
||||
tech={[
|
||||
"Rust",
|
||||
"SQLite",
|
||||
"OAuth2 / OIDC",
|
||||
"TOTP",
|
||||
"SMTP",
|
||||
"Docker",
|
||||
]}
|
||||
>
|
||||
<p>
|
||||
A simple identity and access management system for SMEs or
|
||||
personal use.
|
||||
</p>
|
||||
<p>Low maintenance required, easy to deploy and to backup.</p>
|
||||
|
||||
<div>
|
||||
<ul class="list-disc mt-6">
|
||||
<li class="ml-5">Users management</li>
|
||||
<li class="ml-5">Roles management</li>
|
||||
<li class="ml-5">
|
||||
Assign users to roles and the other way around
|
||||
</li>
|
||||
<li class="ml-5">
|
||||
OAuth2 / OIDC applications (code flow)
|
||||
</li>
|
||||
<li class="ml-5">Multi-Factor Authentication (TOTP)</li>
|
||||
<li class="ml-5">
|
||||
Password reset (via email or backup token)
|
||||
</li>
|
||||
<li class="ml-5">Simple administration panel</li>
|
||||
<li class="ml-5">
|
||||
Good security measures for users and administrators
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
</ExperienceCard>
|
||||
|
||||
<ExperienceCard
|
||||
backgroundColor="bg-pink-950"
|
||||
name="pass4thewin"
|
||||
dates="November 2020 - January 2021"
|
||||
title="Password manager"
|
||||
link={{
|
||||
uri: "https://github.com/x4m3/pass4thewin",
|
||||
label: "Source code",
|
||||
}}
|
||||
tech={["Windows", "Rust", "OpenPGP", "libgit2"]}
|
||||
>
|
||||
<p>
|
||||
Port of <a
|
||||
href="https://passwordstore.org"
|
||||
class="underline"
|
||||
target="_blank">pass</a
|
||||
>, the standard unix password manager on the Windows
|
||||
platform.
|
||||
</p>
|
||||
<p>
|
||||
Command line application, compatible with existing secrets
|
||||
</p>
|
||||
<div>
|
||||
<ul class="list-disc mt-6">
|
||||
<li class="ml-5">Creation of a store</li>
|
||||
<li class="ml-5">List secrets</li>
|
||||
<li class="ml-5">Decrypt secret</li>
|
||||
<li class="ml-5">
|
||||
<s>Insert or generate secrets</s> Causes data corruption
|
||||
</li>
|
||||
<li class="ml-5">
|
||||
<s>Edit existing secrets</s> Causes data corruption
|
||||
</li>
|
||||
<li class="ml-5">Synchronisation with git</li>
|
||||
<li class="ml-5">TOTP support</li>
|
||||
</ul>
|
||||
</div>
|
||||
</ExperienceCard>
|
||||
</div>
|
||||
|
||||
<ExperienceCard
|
||||
backgroundColor="bg-pink-950"
|
||||
logo="/icons/naviarent.png"
|
||||
name="NaviaRent"
|
||||
dates="September 2020 - January 2023"
|
||||
title="Epitech Innovative Project"
|
||||
notAvailable={true}
|
||||
image={{ uri: "/images/naviarent.jpg", breakpoint: "2xl" }}
|
||||
tech={[
|
||||
"NodeJS",
|
||||
"Angular",
|
||||
"Kotlin",
|
||||
"SwiftUI",
|
||||
"Docker",
|
||||
"GitLab CI/CD",
|
||||
"Raspberry Pi",
|
||||
"ESP32",
|
||||
]}
|
||||
>
|
||||
<p>A B2B platform helping rentals of standup paddle boards.</p>
|
||||
|
||||
<div>
|
||||
<ul class="list-disc mt-6">
|
||||
<li class="ml-5">
|
||||
DevOps of all software in the NaviaRent stack
|
||||
</li>
|
||||
<li class="ml-5">Creation of the iOS application</li>
|
||||
<li class="ml-5">
|
||||
Contributions to the Android application
|
||||
</li>
|
||||
<li class="ml-5">Contributions to the backend server</li>
|
||||
<li class="ml-5">
|
||||
Creation and contributions to the web client
|
||||
</li>
|
||||
<li class="ml-5">Server administration, backups</li>
|
||||
</ul>
|
||||
</div>
|
||||
</ExperienceCard>
|
||||
|
||||
<div
|
||||
class="flex flex-col space-y-4 md:flex-row md:space-x-4 md:space-y-0"
|
||||
>
|
||||
<ExperienceCard
|
||||
backgroundColor="bg-pink-950"
|
||||
name="epitok"
|
||||
dates="June 2020 - September 2020"
|
||||
title="Presence system at Epitech"
|
||||
notAvailable={true}
|
||||
tech={["Rust", "HTML", "Bootstrap", "jQuery", "Docker"]}
|
||||
>
|
||||
<p>
|
||||
A library and web client to simplify students presence at
|
||||
Epitech.
|
||||
</p>
|
||||
<p>
|
||||
Students are handed a piece of paper with a 6 digits number
|
||||
(called a "token") to verify their presence at school
|
||||
events.
|
||||
</p>
|
||||
<p>
|
||||
Teachers use epitok to scan student cards with QR codes on
|
||||
them instead of printing and handing tokens to students.
|
||||
</p>
|
||||
</ExperienceCard>
|
||||
|
||||
<ExperienceCard
|
||||
backgroundColor="bg-pink-950"
|
||||
name="epi.today"
|
||||
dates="December 2019 - February 2020"
|
||||
title="Calendar for Epitech"
|
||||
notAvailable={true}
|
||||
tech={["TypeScript", "HTML", "Bootstrap", "Docker"]}
|
||||
>
|
||||
<p>A viewer of the Epitech intranet calendar.</p>
|
||||
<p>
|
||||
Students and teachers glance at their planning without the
|
||||
need to go on the school's intranet.
|
||||
</p>
|
||||
</ExperienceCard>
|
||||
</div>
|
||||
|
||||
<ExperienceCard
|
||||
backgroundColor="bg-pink-950"
|
||||
logo="/icons/canvas.png"
|
||||
name="canvas.place"
|
||||
dates="April 2017 - January 2020"
|
||||
title="Timelapse"
|
||||
link={{ uri: "https://timelapse.canvas.place", label: "Website" }}
|
||||
image={{ uri: "/images/canvas.png", breakpoint: "md" }}
|
||||
tech={["FFmpeg", "Shell scripting", "nginx"]}
|
||||
>
|
||||
<p>canvas.place is a shared place to express creativity.</p>
|
||||
<p>
|
||||
People from all over the world share one single canvas to paint
|
||||
on.
|
||||
</p>
|
||||
<p>I created and maintained a timelapse of the virtual canvas.</p>
|
||||
</ExperienceCard>
|
||||
</div>
|
||||
</div>
|
||||