+ Bonjour et bienvenue sur mon portfolio ! Je m'appelle Rémi Arnal et je suis actuellement en troisième année de BUT
+ informatique. Passionné par le développement web, j'ai choisi cette spécialisation pour exploiter la puissance du web
+ dans la création de solutions interactives et dynamiques. Actuellement, je réalise un stage à la DSI du département de
+ l'Aveyron, où je travaille sur l'évolution de leur intranet. Cette expérience m'a permis de découvrir de nombreuses
+ technologies et d'en apprendre plus sur les missions d'un département.
+
+
+ L'année prochaine, je poursuivrai mes études avec un master ILSEN (Ingénierie du Logiciel de la Société Numérique) à
+ Avignon pour approfondir mes connaissances en ingénierie logicielle et contribuer à la transformation numérique des
+ entreprises.
+
+
+ Je suis également très intéressé par les technologies de partage décentralisé telles que torrent, DHT, et
+ IPFS, ainsi que par l'archivage de médias. N'hésitez pas à explorer mes projets et à me contacter !
+
\ No newline at end of file
diff --git a/src/app/projects/projects.component.spec.ts b/src/app/projects/projects.component.spec.ts
new file mode 100644
index 0000000..3110d5d
--- /dev/null
+++ b/src/app/projects/projects.component.spec.ts
@@ -0,0 +1,23 @@
+import { ComponentFixture, TestBed } from '@angular/core/testing';
+
+import { ProjectsComponent } from './projects.component';
+
+describe('ProjectsComponent', () => {
+ let component: ProjectsComponent;
+ let fixture: ComponentFixture;
+
+ beforeEach(async () => {
+ await TestBed.configureTestingModule({
+ imports: [ProjectsComponent]
+ })
+ .compileComponents();
+
+ fixture = TestBed.createComponent(ProjectsComponent);
+ component = fixture.componentInstance;
+ fixture.detectChanges();
+ });
+
+ it('should create', () => {
+ expect(component).toBeTruthy();
+ });
+});
diff --git a/src/app/projects/projects.component.ts b/src/app/projects/projects.component.ts
new file mode 100644
index 0000000..ab58e66
--- /dev/null
+++ b/src/app/projects/projects.component.ts
@@ -0,0 +1,24 @@
+import { Component } from '@angular/core';
+import { ProjectCardComponent } from '../project-card/project-card.component';
+import { ItemsService } from '../items.service';
+import { Item } from '../../../models/item.model';
+import { NgFor } from '@angular/common';
+
+@Component({
+ selector: 'app-projects',
+ standalone: true,
+ imports: [ProjectCardComponent, NgFor],
+ templateUrl: './projects.component.html',
+ styleUrl: './projects.component.css'
+})
+export class ProjectsComponent {
+ items: Item[] = [];
+
+ constructor(private itemService: ItemsService) {
+ this.itemService.getItems().subscribe(
+ (items) => {
+ this.items = items.filter((item: Item) => item.type === 'project');
+ }
+ )
+ }
+}
diff --git a/src/app/services/markdown.service.ts b/src/app/services/markdown.service.ts
index a8e5287..d09b5ff 100644
--- a/src/app/services/markdown.service.ts
+++ b/src/app/services/markdown.service.ts
@@ -1,5 +1,4 @@
import { Injectable } from '@angular/core';
-import { marked } from 'marked';
import { HttpClient } from '@angular/common/http';
import { Observable } from 'rxjs';
diff --git a/src/assets/aveyron.jpeg b/src/assets/aveyron.jpeg
new file mode 100644
index 0000000..ee9696c
Binary files /dev/null and b/src/assets/aveyron.jpeg differ
diff --git a/src/assets/aveyron.md b/src/assets/aveyron.md
new file mode 100644
index 0000000..379317b
--- /dev/null
+++ b/src/assets/aveyron.md
@@ -0,0 +1,15 @@
+# DSI - Département de l'Aveyron
+
+J'effectue actuellement mon stage 3ème année d'une durée de 16 semaines à la
+Direction des systèmes d'Information du Département de l'Aveyron. Ma mission
+durant ce stage et de faire évoluer l'intranet du département utilisé quotidiennement
+par plus de 1500 agents.
+
+Cet intranet livré par un prestataire manque de fonctionnalités et contient un grand
+nombre de bugs et d'oublis. Pour rajouter les fonctionnalités il me faut relire le code
+sans documentation et m'adapter à l'architecture de l'application. Cela m'a beaucoup aider
+à comprendre le code d'autres personnes.
+
+Une de mes missions pendant ce stage a été de rajouter un module pour les offres d'emploi,
+ainsi les RH peuvent directement éditer les offres depuis un site web, ces offres sont récupérées
+par une Web API et affichées pour que les agents puissent postuler facilement.
diff --git a/src/assets/bluewhale.jpeg b/src/assets/bluewhale.jpeg
new file mode 100644
index 0000000..36748d2
Binary files /dev/null and b/src/assets/bluewhale.jpeg differ
diff --git a/src/assets/bluewhale.md b/src/assets/bluewhale.md
new file mode 100644
index 0000000..a074a29
--- /dev/null
+++ b/src/assets/bluewhale.md
@@ -0,0 +1,11 @@
+# Blue Whale
+
+J'ai effectué mon stage de 2ème année dans l'entreprise [Blue Whale](https://www.blue-whale.com)
+ou j'ai travaillait sur l'ERP qui était en fin de service. Le nouvel ERP n'était pas encore fini,
+j'ai donc dû aider à la transition entre les ERP au niveau de la base donnée mais aussi du code
+de l'ancien ERP (Power Builder).
+
+Ce fut un stage très formateur, j'ai dès le début eu des responsabilités au niveau du recueil de besoin,
+résolution du bug et ajouts de nouvelles fonctionnalités. Ma mission la plus importante a été l'automatisation
+de processus métier lourd et peu productif, les assistantes commerciales remplissaient des fichiers excel manuellement.
+L'automatisation de ces processus est un gain de temps énorme.
diff --git a/src/assets/cv.pdf b/src/assets/cv.pdf
new file mode 100644
index 0000000..ef0d52e
Binary files /dev/null and b/src/assets/cv.pdf differ
diff --git a/src/assets/fukafukashita.jpeg b/src/assets/fukafukashita.jpeg
new file mode 100644
index 0000000..5b81e5d
Binary files /dev/null and b/src/assets/fukafukashita.jpeg differ
diff --git a/src/assets/fukafukashita.md b/src/assets/fukafukashita.md
new file mode 100644
index 0000000..a90d0fc
--- /dev/null
+++ b/src/assets/fukafukashita.md
@@ -0,0 +1,24 @@
+# Fukafukashita
+
+
+Fukafukashita est un projet réalisé en groupe de 4 pour apprendre à utiliser
+Symphony. Il se veut être un forum facile d'utilisation et moderne pour
+partager ses rêves et ses cauchemard et lire ceux des autres.
+
+[*lien vers le code source*](https://codefirst.iut.uca.fr/git/Assassymfony)
+
+## Fonctionalités
+
+- Poster vos rêves et vos cauchemard
+- Consulter les rêves sans connexion
+- Rechercher un post par son contenu
+- Abonnements
+- Design spécial **Cauchemard** !
+
+## Galerie
+
+
+
+
+
+
diff --git a/src/assets/fukafukashita_1.jpg b/src/assets/fukafukashita_1.jpg
new file mode 100644
index 0000000..f6d2961
Binary files /dev/null and b/src/assets/fukafukashita_1.jpg differ
diff --git a/src/assets/fukafukashita_2.png b/src/assets/fukafukashita_2.png
new file mode 100644
index 0000000..80fa085
Binary files /dev/null and b/src/assets/fukafukashita_2.png differ
diff --git a/src/assets/fukafukashita_3.png b/src/assets/fukafukashita_3.png
new file mode 100644
index 0000000..6a6b3ab
Binary files /dev/null and b/src/assets/fukafukashita_3.png differ
diff --git a/src/assets/fukafukashita_4.png b/src/assets/fukafukashita_4.png
new file mode 100644
index 0000000..f3e1cb5
Binary files /dev/null and b/src/assets/fukafukashita_4.png differ
diff --git a/src/assets/items.json b/src/assets/items.json
new file mode 100644
index 0000000..d35ba30
--- /dev/null
+++ b/src/assets/items.json
@@ -0,0 +1,37 @@
+[
+ {
+ "type": "project",
+ "imagePath": "assets/fukafukashita.jpeg",
+ "description": "Un forum simple et moderne pour partager ses rêves et ses cauchemard !",
+ "markdownPath": "fukafukashita",
+ "tags": ["Symphony", "Twig"]
+ },
+ {
+ "type": "project",
+ "imagePath": "assets/passworld.jpeg",
+ "description": "Un manager de mots de passe pour vos appareils mobiles et desktop.",
+ "markdownPath": "passworld",
+ "tags": ["Flutter", "MariaDB"]
+ },
+ {
+ "type": "project",
+ "imagePath": "assets/plotabit.jpeg",
+ "description": "Entrainement d'une IA à la reconnaisance d'objets stellaires.",
+ "markdownPath": "plotabit",
+ "tags": ["Python", "Sklearn"]
+ },
+ {
+ "type": "internship",
+ "imagePath": "assets/bluewhale.jpeg",
+ "description": "Stage de 2ème année d'une durée de 10 semaines, missions sur l'ERP et automatisations.",
+ "markdownPath": "bluewhale",
+ "tags": ["PowerBuilder", "Fop"]
+ },
+ {
+ "type": "internship",
+ "imagePath": "assets/aveyron.jpeg",
+ "description": "Stage de 3ème année d'une durée de 16 semaines, missions sur l'intranet et autres projets.",
+ "markdownPath": "aveyron",
+ "tags": ["Symphony", "Javascript"]
+ }
+]
diff --git a/src/assets/passworld.jpeg b/src/assets/passworld.jpeg
new file mode 100644
index 0000000..ba36841
Binary files /dev/null and b/src/assets/passworld.jpeg differ
diff --git a/src/assets/passworld.md b/src/assets/passworld.md
new file mode 100644
index 0000000..51f65ef
--- /dev/null
+++ b/src/assets/passworld.md
@@ -0,0 +1,35 @@
+# Passworld
+
+Passworld est un gestionnaire de mots de passe cross-plateforme développé
+par un groupe de 5 personnes au cours de notre projet de 2ème année.
+
+Le principe même du gestionnaire de mots de passe et de stocker vos mots de passes
+à l'abri en toute sécurité. C'est ce que nous avons fait en utilisant AES-256 et
+les keystore de chaque plateformes pour être protégé au mieux sur chacune d'elles.
+
+La sauvegarde de vos informations est faite en arrière plan sur nos serveurs grâce
+à une base de donnée et un Web-API à chacune des modifications.
+
+[*lien vers le code source*](https://codefirst.iut.uca.fr/git/PassWorld)
+
+## Fonctionalités
+
+- Sauvegarde de mots de passe avec un mot de passe maître
+- Synchronisation et récupération des données
+- Authentification avec yubikey et empreinte digitale
+- Générateur de mots de passe
+- Analyse de la sécurité de vos mots de passe
+
+
+## Galerie
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/assets/passworld_1.jpg b/src/assets/passworld_1.jpg
new file mode 100644
index 0000000..c29bee6
Binary files /dev/null and b/src/assets/passworld_1.jpg differ
diff --git a/src/assets/passworld_2.jpg b/src/assets/passworld_2.jpg
new file mode 100644
index 0000000..e06da3a
Binary files /dev/null and b/src/assets/passworld_2.jpg differ
diff --git a/src/assets/passworld_3.jpg b/src/assets/passworld_3.jpg
new file mode 100644
index 0000000..ade5f97
Binary files /dev/null and b/src/assets/passworld_3.jpg differ
diff --git a/src/assets/passworld_4.jpg b/src/assets/passworld_4.jpg
new file mode 100644
index 0000000..0b1391a
Binary files /dev/null and b/src/assets/passworld_4.jpg differ
diff --git a/src/assets/passworld_5.jpg b/src/assets/passworld_5.jpg
new file mode 100644
index 0000000..49d63ef
Binary files /dev/null and b/src/assets/passworld_5.jpg differ
diff --git a/src/assets/passworld_6.jpg b/src/assets/passworld_6.jpg
new file mode 100644
index 0000000..d7a6c11
Binary files /dev/null and b/src/assets/passworld_6.jpg differ
diff --git a/src/assets/plotabit.jpeg b/src/assets/plotabit.jpeg
new file mode 100644
index 0000000..da9e66b
Binary files /dev/null and b/src/assets/plotabit.jpeg differ
diff --git a/src/assets/plotabit.md b/src/assets/plotabit.md
new file mode 100644
index 0000000..06e69f2
--- /dev/null
+++ b/src/assets/plotabit.md
@@ -0,0 +1,35 @@
+# Plotabit
+
+Plotabit est un projet d'IA effectué par groupe de 2 durant notre 3ème année.
+Le but était d'apprendre la prédiction par IA en choisissant un jeu de donnée
+puis en utilisant différent modèle pour classifier avec la meilleure précision.
+
+Nous avons choisis un jeux de données contenant des observations de spectres lumineux
+et astres associés: **QUASAR**, **ETOILES** et **GALAXIE**.
+
+Pour analyser les données et optimiser l'entrainement de nos modèles nous avons utilisé
+des histogrammes, boîtes à moustaches, matrice de corrélation et scatter plot. Cela nous
+à permis de limiter le nombre de colonnes utilisées pour l'entrainement, le rendant plus court.
+
+Nous avons aussi lancé un grand nombre d'entrainement avec différent paramètres pour trouver la
+meilleure précision et mieux comprendre l'implication de ceux-ci dans les résulats.
+
+[*lien vers le code source*](https://codefirst.iut.uca.fr/git/PyPloteam/Plotabit)
+
+## Modèles
+
+- K Nearest Neighbors
+- Random Forest Classifier
+- Decision Tree Classifier
+- Linear SVC
+- SGD
+- Nearest Centroid
+- MLP Classifier (neural network)
+
+## Galerie
+
+
+
+
+
+
diff --git a/src/assets/plotabit_1.jpg b/src/assets/plotabit_1.jpg
new file mode 100644
index 0000000..9e9473b
Binary files /dev/null and b/src/assets/plotabit_1.jpg differ
diff --git a/src/assets/plotabit_2.jpg b/src/assets/plotabit_2.jpg
new file mode 100644
index 0000000..4908609
Binary files /dev/null and b/src/assets/plotabit_2.jpg differ
diff --git a/src/assets/plotabit_3.jpg b/src/assets/plotabit_3.jpg
new file mode 100644
index 0000000..ff7474c
Binary files /dev/null and b/src/assets/plotabit_3.jpg differ
diff --git a/src/assets/plotabit_4.jpg b/src/assets/plotabit_4.jpg
new file mode 100644
index 0000000..55635df
Binary files /dev/null and b/src/assets/plotabit_4.jpg differ
diff --git a/src/assets/plotabit_5.jpg b/src/assets/plotabit_5.jpg
new file mode 100644
index 0000000..8a95b08
Binary files /dev/null and b/src/assets/plotabit_5.jpg differ
diff --git a/src/styles.css b/src/styles.css
index 1a5a9c7..b0b58b6 100644
--- a/src/styles.css
+++ b/src/styles.css
@@ -6,4 +6,57 @@
body {
font-family: Helvetica, sans-serif, sans-serif;
+ font-size: 18px;
+ scroll-behavior: smooth;
+}
+
+#markdown {
+ h1 {
+ color: #593bee;
+ font-size: 3rem;
+ }
+
+ h1,
+ h2 {
+ margin-bottom: 10px;
+ }
+
+ h2 {
+ margin-top: 1.5rem;
+ }
+
+ p {
+ margin-bottom: 10px;
+ }
+
+ ul,
+ li {
+ padding: 0;
+ padding-left: 1rem;
+ }
+
+ img {
+ max-width: 70%;
+ margin-bottom: 10px;
+ border-radius: 10px;
+ }
+
+ .gal-3 {
+ max-width: 70%;
+ display: flex;
+ flex-direction: row;
+ gap: 1rem;
+
+ img {
+ border: 2px solid black;
+ max-width: 30%;
+ }
+ }
+
+ a {
+ color: #593bee;
+ text-decoration: none;
+ border-bottom: 3px solid #593bee;
+ line-height: 30px;
+ }
}
\ No newline at end of file