438 lines
20 KiB
YAML
438 lines
20 KiB
YAML
projects:
|
|
- id: tracklift
|
|
type: professional
|
|
priority: 2
|
|
detailled: true
|
|
date: '2022-01'
|
|
from: '2021-12'
|
|
to: '2022-04'
|
|
link: https://tracklift.fr
|
|
deliverableType: app
|
|
name: Tracklift
|
|
as: freelance
|
|
organization:
|
|
name: Socobat Environnement
|
|
url: https://www.socobat-environnement.fr
|
|
description:
|
|
fr: "Application web pour entreprise, gestion de la récupération, le traitement et la revalorisation des déchets issues des chantiers d'ascenseurs."
|
|
# De façon plus général, logiciel de gestion de l'activité d'une entreprise.
|
|
en: "Business management application: management of the recovering, the processing and the revaluation of wastes from elevator's worksite."
|
|
background:
|
|
fr: |
|
|
En 2021 [Socobat Environnement](https://www.socobat-environnement.fr/) avait besoin d'une application web afin de modéliser la gestion des déchets sur des chantiers d'ascenseurs (collecte, retraitement, revalorisation), l'application devait intégrer un système de gestion de compte, de génération de document PDF à partir de formulaire et doit gérer les relations complexes entre les entitées (entreprises, chantiers, ascenseurs, bennes, audits...) pour correspondre exactement aux besoins métiers spécifiques de Socobat. La partie intéréssante et la plus complexe de ce projet est le besoin de connaitre à tout moment la quantité de matériaux de chaque benne à partir des "déchargements" effectués par les utilisateurs dans telle ou telle benne (la fonctionnalité "suivie de la masse")
|
|
en: |
|
|
In 2021 [Socobat Environnement](https://www.socobat-environnement.fr/) had the need of a web app to model their waste management on worksite with elevators (to manage the collection, the recycling and the refurbishement), more over the app would need to integrate a user account manager, a document PDF generator from user-form and must manage the complex relationship between entities of the databases (compagnies, worksites, elevator, containers, audits...) to suit the specifics business needs of the customer. A quite challenging feature of the app was the need to known the state of each container at any time from the "unloading" records of the users.
|
|
solution:
|
|
fr: |
|
|
La majorité des fonctionnalités demandés pour Tracklift sont de la gestion d'entité classique, j'ai donc utilisé [Api Platform](https://api-platform.com/) afin de facilement créer une API REST qui peut être consommé ensuite par l'application web. J'ai structuré le code du frontend pour qui soit le plus évolutif possible et permette la réutilisation facile de composants. La fonction du suivie de la masse de chaque benne demande une implémentation précise de la propagation des mise à jour dans la base de données relationelle. Pour générer les documents PDF ou les archives ZIP, j'ai mit en place un système de tâches asyncrone. Également, pour plus de réactivité dans l'application et une meilleure expérience utilisateur, j'ai ajouté un système de mise à jour en temps réel : [Mercure](https://mercure.rocks/).
|
|
en: |
|
|
Because the main features of the app was to do CRUD (Create, Read, Update, Delete) I used [Api Platform](https://api-platform.com/) to easily create a REST API that can be consumed by the Vue Web App The challenging feature described is an example of a tight dependency model between entities in the DB that needed propagation.
|
|
thumbnail:
|
|
src: $project/logo_square.svg
|
|
alt:
|
|
fr: Une lettre 'T' encapsulé dans des crochets
|
|
en: A 'T' letter encapsulated into brackets
|
|
technologies:
|
|
- vue
|
|
- vuetify
|
|
- symfony
|
|
- apiplatform
|
|
- php
|
|
- mariadb
|
|
highlights:
|
|
fr:
|
|
- Mise en place d'un portail interne avec gestion d'utilisateurs, de rôles.
|
|
- Modélisation du métier et besoins de l'entreprise dans une base de données.
|
|
- Développement d'interfaces utilisateur riche et dynamique pour l'édition des données.
|
|
- Intégration d'opérations asynchrones de création d'archives ZIP et de génération de PDF.
|
|
- Application temps réel pour une meilleure expérience utilisateur (pour notifier l'utilisateur sur les opérations asynchrone).
|
|
- Déploiment du service sur un VPS et conteneurisation via docker.
|
|
en:
|
|
- Setup of a internal application with users and roles management.
|
|
- Modelisation of the precise business needs of the company in a database.
|
|
- Development of rich and dynamic user interfaces to navigate in the model
|
|
- Integration of asynchronous operations to create ZIP archives and generate PDF.
|
|
- Realtime application for a better user experience (notify the user about asynchronous operations).
|
|
- Deployment of the service on a VPS and containerization with docker.
|
|
images:
|
|
- id: admin_dashboard_home
|
|
name:
|
|
fr: Page d'accueil pour l'administrateur
|
|
en: Home page for the administrator
|
|
- id: admin_edit_site
|
|
name:
|
|
fr: Menu d'édition des chantiers
|
|
en: Worksite edition menu
|
|
description:
|
|
fr: Le menu d'édition des chantiers dispose d'un moyen de rechercher rapidement des entreprises ou des utilisateurs dans la base de donnée afin de les associers au chantier.
|
|
en: The worksite edition menu have a quick way to search and grab compagnies or users in the data base to associate them to the worksite.
|
|
- id: admin_containers
|
|
name:
|
|
fr: Gestion des bennes
|
|
en: Container management
|
|
- id: admin_view_container
|
|
name:
|
|
fr: Visualiser le status d'un benne
|
|
en: Vizualize the state of a container
|
|
- id: admin_audit_form
|
|
name:
|
|
fr: Formulaire d'audit
|
|
en: Audit form
|
|
description:
|
|
fr: Formulaire permettant de savoir quel pièces et matériaux vont être traités par Socobat
|
|
en: Form to get the knownledge of what hardware will be treated by Socobat
|
|
- id: admin_users
|
|
name:
|
|
fr: Gestion des utilisateurs
|
|
en: User management
|
|
- id: user_details
|
|
name:
|
|
fr: Détails utilisateurs
|
|
en: User details
|
|
# - id: login_screen
|
|
# name:
|
|
# fr: e
|
|
# en: e
|
|
# description:
|
|
# fr: e
|
|
# en: e
|
|
- id: cheutet
|
|
type: professional
|
|
priority: 2
|
|
detailled: true
|
|
date: 2021-04
|
|
from: 2021-04
|
|
to: 2021-06
|
|
deliverableType: app
|
|
as: employee
|
|
organization: # customer
|
|
name: Edouard Cheutet
|
|
location: Rouen, France
|
|
link: https://cheutet.fr
|
|
name:
|
|
fr: Assistant métier de vente céréalière
|
|
en: Cereal sales assistant
|
|
description:
|
|
fr: "Site web très configurable comme une feuille de calcul pour afficher des prix de ventes d'un grossiste de céréales à des clients"
|
|
en: "Highly configurable website like a spreadsheet to show sales prices of a cereal wholesaler to customers"
|
|
action:
|
|
fr: Site web externe
|
|
en: External website
|
|
thumbnail:
|
|
src: commons/thingmill-150.png
|
|
alt:
|
|
fr: Le logo de l'agence web thingmill
|
|
en: The logo of the thingmill agency
|
|
technologies:
|
|
- php
|
|
- symfony
|
|
- jquery
|
|
- bootstrap
|
|
keywords:
|
|
- cotation
|
|
- euronext
|
|
highlights:
|
|
fr:
|
|
- Gestion utilisateurs classique.
|
|
- Système flexible pour construire des tableaux de prix qui dépendent de l'utilisateur, des période ou d'autres facteurs arbitraires.
|
|
- Panel administratif léger répondant aux besoins métiers.
|
|
- Connexion avec l'API d'EuroNext pour obtenir les cotes des produits céréaliers.
|
|
- Système de formules comme sur un tableur afin d'utiliser des variables globales ou locales.
|
|
- Possibilité de prévisualiser le tableau de prix qu'un utilisateur particulier voit.
|
|
en:
|
|
- User management features.
|
|
- Flexible system to build price tables that depend on either the logged user, the periods or others parameters.
|
|
- Lightweight admin interface that meets the business needs.
|
|
- Retrival of products financial quotes (eg. Wheat) via the EuroNext API.
|
|
- Support of spreadsheet-like formulas using globals or locals variables.
|
|
- User "impersonation" feature to preview prices tables.
|
|
images:
|
|
- id: dashboard
|
|
name:
|
|
fr: L'interface de consultation des prix par les clients
|
|
en: The web page for customer to view products prices
|
|
- id: admin_products
|
|
name:
|
|
fr: Administration des produits
|
|
en: Products administration interface
|
|
- id: admin_overview
|
|
name:
|
|
fr: Vue d'ensemble des données structurées de tout le site
|
|
en: Overview of important data
|
|
- id: admin_users
|
|
name:
|
|
fr: Gestion classique du système utilisateurs
|
|
en: User management interface
|
|
# possibilité de prévisualiser ce qu'un utilisateur va voir (impersonate user)
|
|
- id: admin_periods
|
|
name:
|
|
fr: Gestion des périodes
|
|
en: Management of periods
|
|
- id: admin_period_variables
|
|
name:
|
|
fr: Gestion des variables d'une période particulière
|
|
en: Management of specific period variables
|
|
- id: admin_global_variables
|
|
name:
|
|
fr: Gestion des variables globales
|
|
en: Management of global variables
|
|
|
|
- id: forum_asso
|
|
type: professional
|
|
priority: 2
|
|
detailled: true
|
|
date: 2020-07
|
|
from: 2020-07
|
|
to: 2020-09
|
|
deliverableType: website
|
|
as: employee
|
|
organization:
|
|
name: Espace Condorcet
|
|
location: Gaillon, France
|
|
url: https://www.espacecondorcet.org/
|
|
link: https://associations.espacecondorcet.org
|
|
images:
|
|
- id: public_list
|
|
name:
|
|
fr: Liste des associations
|
|
en: List of associations
|
|
description:
|
|
fr: Page regroupant toute les associations de la localité triées par catégories.
|
|
en: Public list of all the associations with a categorie menu.
|
|
- id: public_page
|
|
name:
|
|
fr: Page publique d'une association
|
|
en: Public detailled association page
|
|
description:
|
|
fr: Page publique d'une association contenenant toute les informations de sa fiche.
|
|
en: Public page of an association with all the detailed from the sheet.
|
|
- id: manage_organizations
|
|
name:
|
|
fr: Gestion des associations
|
|
en: Association
|
|
description:
|
|
fr: L'administrateur peut ajouter, modifier, valider toute les associations depuis une unique interface.
|
|
en: The administrator can add, update and validate every associations from this unique interface.
|
|
- id: changes_approval
|
|
name:
|
|
fr: Vérification par l'administrateur
|
|
en: Administator approval interface
|
|
description:
|
|
fr: L'administrateur peut valider ou refuser les changements apportés par l'association.
|
|
en: The administrator can accept or reject changes made by the association.
|
|
- id: edit_main
|
|
name:
|
|
fr: Panel associatif
|
|
en: Association user interface
|
|
description:
|
|
fr: Les associations disposent d'un espace réservé pour remplir leur fiche.
|
|
en: The users that want to manage their association have a dedicated space.
|
|
- id: edit_images
|
|
name:
|
|
fr: Images et vidéos
|
|
en: Images and videos
|
|
description:
|
|
fr: Les associations peuvent téléverser facilement des images ou des vidéos.
|
|
en: The associations can easily upload pictures or videos.
|
|
technologies:
|
|
- node
|
|
- typescript
|
|
- express
|
|
- vue
|
|
- vuetify
|
|
- mongodb
|
|
name:
|
|
fr: Annuaire associatif administré
|
|
en: Administered association directory
|
|
description:
|
|
fr: "Application web de gestion de fiche associative collaborative avec interface administrative pour l'Espace Condorcet."
|
|
en: "Web application of collaborative association management with administration interface for the Espace Condorcet"
|
|
background:
|
|
fr: |
|
|
En Juin 2020, [l'Espace Condorcet](https://www.espacecondorcet.org/) (association qui promeut la vie associative locale de Gaillon) cherchait un moyen numérique afin de substituer le forum associatif physique qui était compromis pour cause sanitaire, ils voulait un moyen simple pour que les associations puissent se décrire et en même temps que l'administrateur du site puissent valider le contenu facilement sans d'étapes manuelle pour la publication.
|
|
en: |
|
|
In June of 2020, [the Espace Condorcet](https://www.espacecondorcet.org/) (association to promote local associative life around Gaillon) wanted a way to substitute the traditional meeting (allowing the public to discover associations around the town) which was compromised because of the COVID crisis. They wanted a simple way for associations to input details about them in a structured manner. And then a way for the administrator of the website to approve the changes before publication.
|
|
solution:
|
|
fr: |
|
|
Afin de répondre aux besoins du client, j'ai développé pendant l'été 2020 le logiciel qui se compose en trois parties : une partie accessible par tous qui permet de naviguer dans les associations basé sur un serveur Node.js et une interface d'administration et d'édition par les associations qui communique avec une API web en Node.js qui constitue la troisième partie, c'est cette partie qui va mettre à jour la base de données MongoDB.
|
|
en: |
|
|
In order to answer the customer needs, I've developped during the summer of 2020 the software that is composed of many parts : a public page where everyone can browse the directory based on a Node.js server, a web interface for the administration of the site and on which the associations can input their details which communicate with the third part: the web API that update the database accordingly.
|
|
highlights:
|
|
fr:
|
|
- Mise à disposition à un public de ~60 associations d'une interface d'édition de fiches d'informations riches.
|
|
- Création d'une interface dynamique pour les besoin d'administration de l'Espace Condorcet, pour notamment la validation du contenu des associations avant publication.
|
|
- Création d'un portail grand public pour naviguer dans les fiches d'informations publiés.
|
|
- Gestion du contenu multimédia téléversé par l'utilisateur.
|
|
- Mise en place du service en production sur un VPS.
|
|
en:
|
|
- Provision to a public of ~60 non-profit organizations of an interface to edit rich information sheets.
|
|
- Creation of a dynamic interface for administration needs of the Espace Condorcet to validate content from the associations before publishing.
|
|
- Creation of a web portal targeting general public to navigate in the information sheets published.
|
|
- Management of the multimedia content uploaded by the users.
|
|
- Deployment of the service on a VPS.
|
|
action:
|
|
fr: Site web externe
|
|
en: External website
|
|
thumbnail:
|
|
src: $project/condorcet.jpg
|
|
alt:
|
|
fr: Un dessin enfantin représentant le soleil éclairant un chemin
|
|
en: A childish drawing representing the sun lighting up a footway.
|
|
- id: werobot_website
|
|
type: associative
|
|
priority: 2
|
|
detailled: false
|
|
date: 2018-11
|
|
link: https://werobot.fr
|
|
deliverableType: website
|
|
technologies:
|
|
- nuxt
|
|
- vue
|
|
- php
|
|
- slim
|
|
- mariadb
|
|
thumbnail:
|
|
src: commons/werobot.png
|
|
alt:
|
|
fr: Une flèche rouge poussant vers le haut la lettre W bleu surmonté par la lettre R en blanc
|
|
en: A red arrow pushing up a blue W letter which is supporting a white R letter
|
|
name: WeRobot.fr
|
|
description:
|
|
en: A presentation website along with a blog for the robotic club We Robot.
|
|
fr: Un site vitrine accompagné d'un blog pour l'association de robotique locale We Robot.
|
|
- id: retrobox
|
|
type: entrepreneurship
|
|
priority: 2
|
|
detailled: false
|
|
deliverableType: website
|
|
name: RetroBox
|
|
description:
|
|
en: E-commerce website from scratch to sell the retrobox console and allow the customer to manage it remotely.
|
|
fr: E-commerce de A à Z pour vendre des consoles RetroBox et permettre la gestion à distance de celle ci par le client.
|
|
date: 2018-08
|
|
from: 2017-09
|
|
to: 2020-07
|
|
link: https://retrobox.tech
|
|
thumbnail:
|
|
src: $project/logo_alone_square.png
|
|
alt:
|
|
fr: Une console démontrant qu'il peut afficher plusieurs couleurs de façon verticale
|
|
en: A console demonstrating that it can show many coulor in an vertical mannel
|
|
technologies:
|
|
- nuxt
|
|
- vue
|
|
- php
|
|
- slim
|
|
- mariadb
|
|
- socket-io
|
|
- stripe
|
|
- paypal
|
|
- electron
|
|
- id: jobatator
|
|
type: opensource
|
|
priority: 2
|
|
detailled: false
|
|
deliverableType: server
|
|
name: Jobatator
|
|
date: 2020-06
|
|
link: https://github.com/jobatator
|
|
thumbnail:
|
|
src: $project/logo.png
|
|
alt:
|
|
fr: Le logo de jobatator montrant une pile aligné.
|
|
en: Jobatator logo showing an aligned stack.
|
|
description:
|
|
fr: Un serveur TCP développé comme alternative simplifié à RabbitMQ afin de dispatcher des tâches à des processus.
|
|
en: A simplified alternative to RabbitMQ to dispatch jobs to workers (in order to for example send an email).
|
|
technologies:
|
|
- go
|
|
action:
|
|
fr: GitHub du projet
|
|
en: GitHub page
|
|
- id: keyvaluer
|
|
type: opensource
|
|
priority: 1
|
|
detailled: false
|
|
deliverableType: server
|
|
name: KeyValuer
|
|
date: 2020-04
|
|
link: https://github.com/lefuturiste/keyvaluer
|
|
description:
|
|
fr: Une implementation d'un serveur supportant les commandes basiques de Redis formant une base clé-valeur.
|
|
en: An implementation of a redis compatible serveur to have a key-value database.
|
|
technologies:
|
|
- go
|
|
action:
|
|
fr: GitHub du projet
|
|
en: GitHub page
|
|
- id: discord-monolog-handler
|
|
type: opensource
|
|
priority: 1
|
|
detailled: false
|
|
deliverableType: library
|
|
name: Discord Monolog handler
|
|
date: 2017-08
|
|
link: https://github.com/lefuturiste/monolog-discord-handler
|
|
technologies:
|
|
- php
|
|
description:
|
|
fr: |
|
|
Un projet open-source pour permettre à la librairie monolog d'envoyer des logs via un webhook discord.
|
|
en: |
|
|
An open-source project to extend the monolog library in order to send logs via discord webhooks.
|
|
action:
|
|
fr: GitHub du projet
|
|
en: GitHub page
|
|
- id: langatator
|
|
type: learning
|
|
priority: 2
|
|
main: true
|
|
detailled: false
|
|
deliverableType: interpretor
|
|
name: Langatator
|
|
date: 2022-05
|
|
link: https://gitlab.com/lefuturiste/langatator
|
|
description:
|
|
fr: Développement d'un langage de programmation impératif interprété en C afin de découvrir le fonctionnement d'un lexeur, parseur et interpréteur.
|
|
en: Programming of an imperative interpreted langage in C, trying to enforce a grammar with a lexer, a parser and an evaluator.
|
|
technologies:
|
|
- c
|
|
action:
|
|
fr: GitLab du projet
|
|
en: GitLab page
|
|
# - id: quasator
|
|
# name: Quasator
|
|
# date: 2022-03
|
|
# link: https://gitlab.com/lefuturiste/quasator
|
|
# technologies:
|
|
# - python
|
|
# - latex
|
|
- id: eurobot2020
|
|
priority: 2
|
|
type: associative
|
|
main: yes
|
|
detailled: false
|
|
deliverableType: embedded
|
|
date: 2020-10
|
|
link: https://github.com/werobot-france/eurobot2020-main
|
|
thumbnail:
|
|
src: commons/sailtheworld-150.png
|
|
alt:
|
|
fr: "Logo de la saison 2020 : Naviguer le monde"
|
|
en: "2020 season logo: Sail The World"
|
|
# alt:
|
|
# fr: Logo de la coupe de france de robotique représentant un droid antropomorphe voulant jouer
|
|
# en: French cup logo representing a human-like droid wanting to play
|
|
name:
|
|
fr: Coupe de France de robotique
|
|
en: French robotics cup
|
|
description:
|
|
fr: Conception d'un robot holonome autonome pour participer à l'édition 2020 de la coupe. J'ai travaillé sur l'électronique et le logiciel embarqué.
|
|
en: Design of an holonomic autonomus robot to participate in the 2020 edition of the cup, I worked on the electronic and on-board software.
|
|
technologies:
|
|
- python
|
|
- c
|
|
- arduino
|
|
action:
|
|
fr: GitHub du projet
|
|
en: GitHub page
|