portfolio_leptos/src/app/components/mon_parcours.rs

388 lines
No EOL
26 KiB
Rust
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

use leptos::*;
use super::{
Link,
Tag,
Timeline,
TimelineElement,
TimelineLabel,
TimelineCard,
TimelineCardSummary,
TimelineCardTag,
TimelineCardContent,
ProjectList,
ProjectElement
};
#[derive(Copy, Clone)]
struct Lang<'a> {
pub lang : &'a str,
pub url : &'a str,
}
impl<'a> IntoView for Lang<'a> {
fn into_view(self) -> View {
let url = self.url.to_string();
let lang = self.lang.to_string();
view! {
<Tag url=url>
{ lang }
</Tag>
}
}
}
// Lang
const RUST_TAG : Lang<'static> = Lang { lang: "Rust", url: "https://www.rust-lang.org/" };
const JAVA_TAG : Lang<'static> = Lang { lang: "Java", url: "https://www.java.com/fr/" };
const CPP_TAG : Lang<'static> = Lang { lang: "C++", url: "https://isocpp.org/" };
// Other
const REACT_TAG : Lang<'static> = Lang { lang: "React", url: "https://fr.legacy.reactjs.org/" };
const SYMFONY_4_TAG : Lang<'static> = Lang { lang: "Symfony", url: "https://symfony.com/" };
const FLUTTER_TAG : Lang<'static> = Lang { lang: "Flutter", url: "https://flutter.dev/" };
const RUBY_ON_RAILS_TAG : Lang<'static> = Lang { lang: "Ruby on rails", url: "https://rubyonrails.org/" };
const HOTWIRED_TAG : Lang<'static> = Lang { lang: "Hotwired", url: "https://hotwired.dev/" };
const DOCKER_TAG : Lang<'static> = Lang { lang: "Docker", url: "https://www.docker.com/" };
const STEAM_TAG : Lang<'static> = Lang { lang: "Steam API", url: "https://partner.steamgames.com/doc/sdk/api/example" };
const GITLAB_CI_TAG : Lang<'static> = Lang { lang: "Gitlab CI", url: "https://docs.gitlab.com/ee/ci/" };
const UNITY_TAG : Lang<'static> = Lang { lang: "Unity 3D", url: "https://unity.com/fr" };
const WORDPRESS_TAG : Lang<'static> = Lang { lang: "Wordpress", url: "https://wordpress.com/fr/" };
const CORDOVA_TAG : Lang<'static> = Lang { lang: "Cordova", url: "https://cordova.apache.org/" };
const ELECTRON_TAG : Lang<'static> = Lang { lang: "Electron", url: "https://www.electronjs.org/" };
const LWJGL_TAG : Lang<'static> = Lang { lang: "LWJGL", url: "https://www.lwjgl.org/" };
const OPENGL_TAG : Lang<'static> = Lang { lang: "OpenGL", url: "https://www.opengl.org/" };
const VULKAN_TAG : Lang<'static> = Lang { lang: "Vulkan", url: "https://www.vulkan.org/" };
const MIDI_TAG : Lang<'static> = Lang { lang: "MIDI", url: "https://fr.wikipedia.org/wiki/Musical_Instrument_Digital_Interface" };
const REQUIREJS_TAG : Lang<'static> = Lang { lang: "RequireJS", url: "https://requirejs.org/" };
const WEBPACK_TAG : Lang<'static> = Lang { lang: "Webpack", url: "https://webpack.js.org/" };
const VITE_TAG : Lang<'static> = Lang { lang: "Vite", url: "https://vitejs.dev/" };
const MAVEN_TAG : Lang<'static> = Lang { lang: "Maven", url: "https://maven.apache.org/" };
const GRADLE_TAG : Lang<'static> = Lang { lang: "Gradle", url: "https://gradle.org/" };
const BABYLONJS_TAG : Lang<'static> = Lang { lang: "BabylonJS", url: "https://www.babylonjs.com/" };
const ROCKET_RS_TAG : Lang<'static> = Lang { lang: "Rocket", url: "https://rocket.rs/" };
const ACTIX_WEB_TAG : Lang<'static> = Lang { lang: "Actix Web", url: "https://actix.rs/" };
const _LEPTOS_TAG : Lang<'static> = Lang { lang: "Leptos", url: "https://leptos.dev/" };
#[component]
pub fn MonParcours() -> impl IntoView {
view! {
<div>
<Timeline>
<TimelineElement slot:elements>
<TimelineLabel slot:labels>r"2019 - Aujourdhui"</TimelineLabel>
<TimelineCard slot:cards>
<TimelineCardSummary slot:titles>
<TimelineCardTag slot:tags>{ REACT_TAG }</TimelineCardTag>
<TimelineCardTag slot:tags>{ SYMFONY_4_TAG }</TimelineCardTag>
<TimelineCardTag slot:tags>{ FLUTTER_TAG }</TimelineCardTag>
<TimelineCardTag slot:tags>{ RUBY_ON_RAILS_TAG }</TimelineCardTag>
<TimelineCardTag slot:tags>{ HOTWIRED_TAG }</TimelineCardTag>
<TimelineCardTag slot:tags>{ RUST_TAG }</TimelineCardTag>
<TimelineCardTag slot:tags>{ WEBPACK_TAG }</TimelineCardTag>
<TimelineCardTag slot:tags>{ VITE_TAG }</TimelineCardTag>
<TimelineCardTag slot:tags>{ GRADLE_TAG }</TimelineCardTag>
r"Développeur dapplication Web, Mobile et Système (CDI)"
</TimelineCardSummary>
<TimelineCardContent slot:cards>
<p>r"Développement dapplication Symfony, React, Flutter, Rust et Ruby on rails (6 et 7) pour des clients."</p><br />
<p>r"Je développe surtout des applications Flutter et Ruby on rails avec laide de Hotwired."</p><br />
<i>Unova France</i><br />
<i>11 Septembre 2019 - Toujours en CDI</i>
</TimelineCardContent>
</TimelineCard>
<TimelineCard slot:cards>
<TimelineCardSummary slot:titles>
<TimelineCardTag slot:tags>{ RUST_TAG }</TimelineCardTag>
<TimelineCardTag slot:tags>{ VULKAN_TAG }</TimelineCardTag>
r"Développement 3D (Perso)"
</TimelineCardSummary>
<TimelineCardContent slot:cards>
<p>Je développe un petit moteur 3D pour apprendre à utiliser Vulkan, mais aussi pour prendre en expérience en Rust</p><br/>
<ProjectList>
<ProjectElement url="https://github.com/mrdev023/RustGameMicroEngine".to_string()>Projet pour apprendre</ProjectElement>
<ProjectElement url="https://github.com/mrdev023/voxel_rust_test".to_string()>Le but, refaire mon vieux projet de voxel pour progresser en Rust et Vulkan</ProjectElement>
</ProjectList>
</TimelineCardContent>
</TimelineCard>
<TimelineCard slot:cards>
<TimelineCardSummary slot:titles>
<TimelineCardTag slot:tags>{ RUST_TAG }</TimelineCardTag>
<TimelineCardTag slot:tags>{ ROCKET_RS_TAG }</TimelineCardTag>
<TimelineCardTag slot:tags>{ ACTIX_WEB_TAG }</TimelineCardTag>
r"Développement Web en Rust (Perso)"
</TimelineCardSummary>
<TimelineCardContent slot:cards>
<p>Je teste quelques technologies Web en Rust</p><br/>
<ProjectList>
<ProjectElement url="https://github.com/mrdev023/Rust-Rocket-Project".to_string()>Projet de test Rocket</ProjectElement>
<ProjectElement url="https://github.com/mrdev023/rust-actix".to_string()>Projet de test actix</ProjectElement>
</ProjectList>
</TimelineCardContent>
</TimelineCard>
<TimelineCard slot:cards>
<TimelineCardSummary slot:titles>
<TimelineCardTag slot:tags>{ RUST_TAG }</TimelineCardTag>
r"Développement dun outil daccès serveur sécurisé en Rust (Perso)"
</TimelineCardSummary>
<TimelineCardContent slot:cards>
<p>Le but du projet était de proposer un programme en tant que shell et de vérifier la connexion entrante avec un Service dédié.</p><br/>
<p>r"Lensemble des sessions étaient enregistrées pour permettre à n'importe qui de savoir ce qui s'est passé."</p><br/>
<p>Les administrateurs pouvaient également gérer les connexions avec une ligne de commande.</p><br/>
<i>Le projet a é abandonné au profit de <Link url="https://github.com/ovh/the-bastion".to_string()>The Bastion</Link></i>
<ProjectList>
<ProjectElement url="https://github.com/mrdev023/command_gateway".to_string()>Github du projet</ProjectElement>
</ProjectList>
</TimelineCardContent>
</TimelineCard>
</TimelineElement>
<TimelineElement slot:elements>
<TimelineLabel slot:labels>2018 - 2019</TimelineLabel>
<TimelineCard slot:cards>
<TimelineCardSummary slot:titles>
<TimelineCardTag slot:tags>{ UNITY_TAG }</TimelineCardTag>
<TimelineCardTag slot:tags>{ SYMFONY_4_TAG }</TimelineCardTag>
<TimelineCardTag slot:tags>{ GITLAB_CI_TAG }</TimelineCardTag>
<TimelineCardTag slot:tags>{ STEAM_TAG }</TimelineCardTag>
<TimelineCardTag slot:tags>{ DOCKER_TAG }</TimelineCardTag>
<TimelineCardTag slot:tags>{ MIDI_TAG }</TimelineCardTag>
r"Développeur Web et dapplication 2D (CDI)"
</TimelineCardSummary>
<TimelineCardContent slot:cards>
<p>Développement du Site en Symfony 4 (Changement graphique, ajout de fonctionnalité)</p><br />
<p>Intégration du déploiement continue de la nouvelle application Limouzik refaite sous Unity 3D sur Steam</p><br />
<i>Limouzik SAS</i><br />
<i>03 Septembre 2018 - 31 Juillet 2019 (Rupture pour raison économique)</i>
</TimelineCardContent>
</TimelineCard>
<TimelineCard slot:cards>
<TimelineCardSummary slot:titles>
<TimelineCardTag slot:tags>{ UNITY_TAG }</TimelineCardTag>
r"Global Game Jam édition 2019 (Concours)"
</TimelineCardSummary>
<TimelineCardContent slot:cards>
<p>Participation au Global Gam Jam édition 2019.</p><br />
<p>r"Le but du concours est de developper un Jeu en 48h à partir dun thème donné au départ du concours."</p><br />
<i>3iL - Limoges</i><br />
<i>25 janvier - 27 janvier</i><br />
<i>Thème : What home means to you</i><br />
<i>Participants : Ezyrath, Fabien87, Flavien, MrDev023 (Moi), php4ever, spoutnik87</i><br />
<ProjectList>
<ProjectElement image_src="https://github.com/mrdev023/Global-Game-Jam-2019/blob/master/ggj_2019_maison.png?raw=true".to_string() url="https://github.com/mrdev023/Global-Game-Jam-2019".to_string()>r"Cauchemar en forêt"</ProjectElement>
</ProjectList>
</TimelineCardContent>
</TimelineCard>
</TimelineElement>
<TimelineElement slot:elements>
<TimelineLabel slot:labels>2017 - 2018</TimelineLabel>
<TimelineCard slot:cards>
<TimelineCardSummary slot:titles>
r"License Dev. Web et du Big Data"
</TimelineCardSummary>
<TimelineCardContent slot:cards>
<p>r"Licence professionnelle en alternance de développeur dapplication web et du Big Data (LP DWBD)."</p><br />
<p>r"Utilisation de docker, Mysql, PHP avancé, Symfony 3 et 4, AngularJS, NodeJS, Cassandra, MongoDB, …"</p><br />
<i>IUT du Limousin à Limoges</i>
</TimelineCardContent>
</TimelineCard>
<TimelineCard slot:cards>
<TimelineCardSummary slot:titles>
<TimelineCardTag slot:tags>{ SYMFONY_4_TAG }</TimelineCardTag>
r"Développeur Web (Projet Tuteuré)"
</TimelineCardSummary>
<TimelineCardContent slot:cards>
<p>Développement du site sliz.me avec Symfony 4.</p><br />
<p>r"Ajout de QRCode sur l'ensemble des pages d'un fichier PDF pour que d'autres personnes puissent télécharger le PDF ou une page en question durant une conférence."</p><br />
<p>r"Il fallait également pouvoir générer des QrCode simple à scanner pour quun étudiant puisse le scanner à lautre bout de lamphi."</p><br />
<i>Onegate</i><br />
<i>Octobre 2017 - Février 2017</i>
</TimelineCardContent>
</TimelineCard>
<TimelineCard slot:cards>
<TimelineCardSummary slot:titles>
<TimelineCardTag slot:tags>{ UNITY_TAG }</TimelineCardTag>
<TimelineCardTag slot:tags>{ SYMFONY_4_TAG }</TimelineCardTag>
<TimelineCardTag slot:tags>{ STEAM_TAG }</TimelineCardTag>
<TimelineCardTag slot:tags>{ REACT_TAG }</TimelineCardTag>
<TimelineCardTag slot:tags>{ WORDPRESS_TAG }</TimelineCardTag>
<TimelineCardTag slot:tags>{ CORDOVA_TAG }</TimelineCardTag>
<TimelineCardTag slot:tags>{ ELECTRON_TAG }</TimelineCardTag>
<TimelineCardTag slot:tags>{ MIDI_TAG }</TimelineCardTag>
<TimelineCardTag slot:tags>{ WEBPACK_TAG }</TimelineCardTag>
r"Développeur Web et dapplication 2D (Alternance)"
</TimelineCardSummary>
<TimelineCardContent slot:cards>
<p>Maintenance de la version du site en Wordpress + Refonte complète du site (Graphique et technique) avec Symfony 4.</p><br />
<p>r"Maintenance de la première version de lapplication React ainsi que la migration des modules RequireJS vers Webpack pour fortement améliorer le temps de chargement"</p><br />
<p>r"Pour permettre lévolution future de lapplication (Intégration avec dautre boite de jeu VR + Gamification), lapplication a dû être refaite de A à Z en C# avec le moteur 3D Unity."</p><br />
<p>r"Ajout de lapplication Limouzik sur le Play Store (Android), AppStore (iOS) et sur Steam (PC) avec lintégration de SteamAPI"</p><br />
<i>r"Lensemble du travail a été effectué par mes soins"</i><br /><br />
<i>Limouzik SAS</i><br />
<i>04 Septembre 2017 - 24 Aout 2018</i>
</TimelineCardContent>
</TimelineCard>
<TimelineCard slot:cards>
<TimelineCardSummary slot:titles>
<TimelineCardTag slot:tags>{ OPENGL_TAG }</TimelineCardTag>
<TimelineCardTag slot:tags>{ JAVA_TAG }</TimelineCardTag>
r"Global Game Jam édition 2017 (Concours)"
</TimelineCardSummary>
<TimelineCardContent slot:cards>
<p>Participation au Global Gam Jam édition 2017.</p><br />
<p>r"Le but du concours est de developper un Jeu en 48h à partir dun thème donné au départ du concours."</p><br />
<i>3iL - Limoges</i><br />
<i>20 janvier - 22 janvier</i><br />
<i>Thème : Waves</i><br />
<i>Participants : emiko, Fiesta87, MrDev023 (Moi), TheKitolex</i><br />
<ProjectList>
<ProjectElement url="https://github.com/mrdev023/Global-Gam-Jam-2017/".to_string()>r"Beach Fighter"</ProjectElement>
</ProjectList>
</TimelineCardContent>
</TimelineCard>
</TimelineElement>
<TimelineElement slot:elements>
<TimelineLabel slot:labels>2015 - 2017</TimelineLabel>
<TimelineCard slot:cards>
<TimelineCardSummary slot:titles>DUT Informatique</TimelineCardSummary>
<TimelineCardContent slot:cards>
<p>r"Conception de programme en Java, C++, C, Android, PHP, NodeJS et lutilisation de Mysql. Apprentissage des bases scientifiques dans linformatique."</p><br />
<i>IUT du Limousin à Limoges</i>
</TimelineCardContent>
</TimelineCard>
<TimelineCard slot:cards>
<TimelineCardSummary slot:titles>
<TimelineCardTag slot:tags>{ REACT_TAG }</TimelineCardTag>
<TimelineCardTag slot:tags>{ WORDPRESS_TAG }</TimelineCardTag>
<TimelineCardTag slot:tags>{ MIDI_TAG }</TimelineCardTag>
<TimelineCardTag slot:tags>{ REQUIREJS_TAG }</TimelineCardTag>
r"Développement dapplication Web + Site (Stage + CDD)"
</TimelineCardSummary>
<TimelineCardContent slot:cards>
<p>r"Développement dune application musicale en utilisant le protocole MIDI (+ Synthèse sonore)."</p><br />
<p>La partie affichage a é développé avec React et RequireJS (Gestion de module).</p><br />
<p>r"Administration du Site en Wordpress avec les Plugins (Woocommerce et PaidMembership Pro) ainsi que le développement dun plugin propriétaire pour lintégration de lapplication dans Wordpress"</p><br />
<i>Limouzik SAS</i><br />
<i>03 Avril 2017 - 30 Juin 2017 (Stage)</i><br />
<i>01 Juillet 2017 - 31 Juillet 2017 (CDD)</i>
</TimelineCardContent>
</TimelineCard>
<TimelineCard slot:cards>
<TimelineCardSummary slot:titles>
<TimelineCardTag slot:tags>{ OPENGL_TAG }</TimelineCardTag>
<TimelineCardTag slot:tags>{ JAVA_TAG }</TimelineCardTag>
r"Global Game Jam édition 2016 (Concours)"
</TimelineCardSummary>
<TimelineCardContent slot:cards>
<p>Participation au Global Gam Jam édition 2016.</p><br />
<p>r"Le but du concours est de developper un Jeu en 48h à partir dun thème donné au départ du concours."</p><br />
<i>3iL - Limoges</i><br />
<i>29 janvier - 31 janvier</i><br />
<i>Thème : Ritual</i><br />
<i>Participants : Aliths, dikaios, Fiesta87, MrDev023 (Moi), TheKitolex</i><br />
<ProjectList>
<ProjectElement image_src="https://github.com/mrdev023/Global-Game-Jam-2016/blob/master/ggj_into.png?raw=true".to_string() url="https://github.com/mrdev023/Global-Game-Jam-2016".to_string()>r"Bifrost Saver's"</ProjectElement>
</ProjectList>
</TimelineCardContent>
</TimelineCard>
<TimelineCard slot:cards>
<TimelineCardSummary slot:titles>
<TimelineCardTag slot:tags>{ BABYLONJS_TAG }</TimelineCardTag>
r"Nuit de linfo édition 2016 (Concours)"
</TimelineCardSummary>
<TimelineCardContent slot:cards>
<p>r"Participation à la Nuit de linfo édition 2016."</p><br />
<p>Le but de ce concours était de développer un projet WebGL en 8h.</p><br />
<i>Bordeaux</i><br />
<i>1 Décembre 2016 - 2 Décembre 2016</i><br />
<i>Sujet : Venir en aide aux réfugiés</i><br />
<i>"Nom de léquipe : echo \"Avis de template\""</i><br />
<i>Slogan : Qui sème le vent récolte le Template</i><br />
<Link url="https://www.nuitdelinfo.com/nuitinfo/defis2016:archives#defi12".to_string()>r"WebGL : 1er"</Link>
<Link url="https://www.nuitdelinfo.com/nuitinfo/defis2016:archives#defi38".to_string()>r"Méthode agile : 1er"</Link>
<ProjectList>
<ProjectElement url="https://github.com/mrdev023/NUIT_INFO_2_DECEMBRE_2016".to_string()>r"Github du projet"</ProjectElement>
</ProjectList>
</TimelineCardContent>
</TimelineCard>
<TimelineCard slot:cards>
<TimelineCardSummary slot:titles>
<TimelineCardTag slot:tags>{ OPENGL_TAG }</TimelineCardTag>
<TimelineCardTag slot:tags>{ CPP_TAG }</TimelineCardTag>
r"Utilisation de lAPI graphique OpenGL (Perso)"
</TimelineCardSummary>
<TimelineCardContent slot:cards>
<p>r"Après avoir appris à faire de lOpenGL en Java , jai voulu tester en C++"</p><br />
<ProjectList>
<ProjectElement url="https://github.com/mrdev023/MrDev023-Cpp-Engine".to_string()>r"Petit projet OpenGL en C++"</ProjectElement>
</ProjectList>
</TimelineCardContent>
</TimelineCard>
</TimelineElement>
<TimelineElement slot:elements>
<TimelineLabel slot:labels>2012 - 2015</TimelineLabel>
<TimelineCard slot:cards>
<TimelineCardSummary slot:titles>Bac STI2D spécialité SIN</TimelineCardSummary>
<TimelineCardContent slot:cards>
<p>r"Passage du Bac sciences et technologies de lindustrie et du développement durable (STI2D)."</p>
<p>r"Spécialité systèmes dinformation et numérique (SIN)."</p><br />
<i>Lycée Jean Favard à Guéret</i>
</TimelineCardContent>
</TimelineCard>
<TimelineCard slot:cards>
<TimelineCardSummary slot:titles>
<TimelineCardTag slot:tags>{ JAVA_TAG }</TimelineCardTag>
<TimelineCardTag slot:tags>{ MAVEN_TAG }</TimelineCardTag>
Développement en Java (Perso)
</TimelineCardSummary>
<TimelineCardContent slot:cards>
<p>Apprentissage dans un premier temps du langage avec le site du zéro et les quelques vidéos sur Youtube.</p><br />
<p>r"Ensuite, j'ai commencé à développer des projets Perso (Plugin Minecraft, Mod Minecraft) dans un premier temps."</p><br />
<p>r"Puis, j'ai commencé à développer des petits jeux de A à Z (Petit moteur de physique + graphique + audio) et à m'entrainer avec des amis pour participer à des concours comme le Ludum dare et la Global Game Jam."</p>
</TimelineCardContent>
</TimelineCard>
<TimelineCard slot:cards>
<TimelineCardSummary slot:titles>
<TimelineCardTag slot:tags>{ LWJGL_TAG }</TimelineCardTag>
<TimelineCardTag slot:tags>{ OPENGL_TAG }</TimelineCardTag>
<TimelineCardTag slot:tags>{ JAVA_TAG }</TimelineCardTag>
r"Utilisation de lAPI graphique OpenGL (Perso)"
</TimelineCardSummary>
<TimelineCardContent slot:cards>
<p>r"Après avoir développé quelques trucs sur Minecraft. Je me suis interessé à son fonctionnement et j'ai découvert la librairie LWJGL utilisé dans Minecraft."</p><br />
<p>r"J'ai très vite voulu développer mes propres Mini-Jeux en OpenGL avec cette librairie."</p>
<ProjectList>
<ProjectElement image_src="https://camo.githubusercontent.com/5895992a1089b81b0730608a47ebe08d55f1e6c9bada7752f89f7304a743652d/68747470733a2f2f7062732e7477696d672e636f6d2f6d656469612f4363334475776e5749414949355a772e6a70673a6c61726765".to_string() url="https://github.com/mrdev023/Java-Game-Engine-Light-Test".to_string()>r"Test gestion de la lumière"</ProjectElement>
<ProjectElement image_src="https://camo.githubusercontent.com/f2dbe8898987b638eaa4d5dbc72797a4ff9c4bcb0275591f7fb24e7f32da5dd3/68747470733a2f2f7062732e7477696d672e636f6d2f6d656469612f4373567138634657384141374279722e6a7067".to_string() url="https://github.com/mrdev023/Modern-Game-Engine".to_string()>r"Test OpenGL 3.3+ et LWJGL 3"</ProjectElement>
<ProjectElement image_src="https://camo.githubusercontent.com/414745fd4066b03c789b3a54d798c6f76df05039d464e29c822653e4e1515c73/68747470733a2f2f7062732e7477696d672e636f6d2f6d656469612f4350576147763457734141585068552e706e673a6c61726765".to_string() url="https://github.com/mrdev023/Voxel-Test".to_string()>r"Petit jeu en Voxel (Minecraft like)"</ProjectElement>
</ProjectList>
</TimelineCardContent>
</TimelineCard>
</TimelineElement>
</Timeline>
</div>
}
}