Skip to content
Open
Show file tree
Hide file tree
Changes from 19 commits
Commits
Show all changes
89 commits
Select commit Hold shift + click to select a range
2484e06
modified report
yanis-bellot Feb 20, 2026
71c9cd6
fix: rapport - description du projet
Danura30082 Feb 20, 2026
db518c5
fix - errent =latex in repport (for pity check vide coded results)
Danura30082 Feb 20, 2026
659d416
modified report and exported pdf
yanis-bellot Feb 20, 2026
fd37694
modified report and exported pdf
yanis-bellot Feb 20, 2026
23473ca
exported pdf
yanis-bellot Feb 20, 2026
a63d8c5
modified models and diagrams
yanis-bellot Feb 20, 2026
0c9f034
exported pdf
yanis-bellot Feb 20, 2026
8709a82
Feat Features list
Danura30082 Feb 20, 2026
e64834c
Merge branch 'feature/report' of github.com:Association-INTech/prINTe…
Danura30082 Feb 20, 2026
b83891c
fix: Le premier qui me refait un force push je le baise
Danura30082 Feb 20, 2026
a60235b
feat: moved files
Danura30082 Feb 20, 2026
62e74f0
Added plan de charge
Danura30082 Feb 20, 2026
22ffd74
planning previtionel
Danura30082 Feb 20, 2026
58b1b4d
feat - rapport: justificatif des technologie
Danura30082 Feb 20, 2026
22b8bc3
update du planning previsionel de @Lazex (fix to git svp) (et dessins…
Danura30082 Feb 20, 2026
bbfe747
aaaaaaaaaaaaaaaaaah
yanis-bellot Feb 21, 2026
1095012
modified pre-report.md and re exported to pdf
yanis-bellot Feb 21, 2026
9d361bc
modified pre-report.md and re exported to pdf
yanis-bellot Feb 21, 2026
502f14f
added operation
i4nc3l Mar 27, 2026
4f3e0e9
frontend
lazex-mix Mar 27, 2026
5a73c5b
frontend
lazex-mix Mar 27, 2026
f24418f
Merge remote-tracking branch 'origin/feature-Operation' into develop
i4nc3l Mar 30, 2026
5932524
Updated Readme
i4nc3l Apr 1, 2026
3b13fe6
edit readMe
i4nc3l Apr 1, 2026
b914e8a
fixed error that prevented launch
i4nc3l Apr 1, 2026
1f6927c
fixed operation
i4nc3l Apr 2, 2026
405db41
Created Reqests endpoint for users and
i4nc3l Apr 5, 2026
8256380
added request cancel and pay action
i4nc3l Apr 5, 2026
28cdd66
added Filament and printer endpoints
i4nc3l Apr 5, 2026
e8deafc
developed history
lazex-mix Apr 5, 2026
ef57973
developed history
lazex-mix Apr 5, 2026
c6637cd
Updated README
i4nc3l Apr 5, 2026
2bad73e
added description of API endpoints to README
i4nc3l Apr 6, 2026
0c643b0
connected credits and active printers to backend
lazex-mix Apr 6, 2026
a9471cb
added a guard
lazex-mix Apr 6, 2026
12ed28e
removed greeting and counter(used them to learn)
lazex-mix Apr 6, 2026
9c94123
combined api calls into one and added spec testing
lazex-mix Apr 6, 2026
12d2e13
added a metrics card component to avoid overcrowd-
lazex-mix Apr 6, 2026
ddfd088
change password works
lazex-mix Apr 6, 2026
d0efb24
added profile pictures, still needs to connect to
lazex-mix Apr 7, 2026
ef6f676
added refresh functionality
lazex-mix Apr 7, 2026
90f7b67
Merge pull request #4 from Association-INTech/feature-requests
i4nc3l Apr 7, 2026
bae9885
Merge pull request #5 from Association-INTech/front
lazex-mix Apr 7, 2026
f64dae7
changed for auth to use email instead of username
i4nc3l Apr 7, 2026
0997190
developed history
lazex-mix Apr 5, 2026
0e264b0
connected credits and active printers to backend
lazex-mix Apr 6, 2026
d7d8d4d
added a guard
lazex-mix Apr 6, 2026
125f55f
removed greeting and counter(used them to learn)
lazex-mix Apr 6, 2026
5807d7c
combined api calls into one and added spec testing
lazex-mix Apr 6, 2026
5da86d5
added a metrics card component to avoid overcrowd-
lazex-mix Apr 6, 2026
c18cd7f
change password works
lazex-mix Apr 6, 2026
266bb1c
added profile pictures, still needs to connect to
lazex-mix Apr 7, 2026
3ff16fa
added refresh functionality
lazex-mix Apr 7, 2026
7576a78
added static print page
lazex-mix Apr 7, 2026
cad8dc0
Merge remote-tracking branch 'origin/feature-requests' into front
lazex-mix Apr 7, 2026
01f724b
minor bugs in auth so it now takes in an email not
lazex-mix Apr 7, 2026
102299b
added queue size
lazex-mix Apr 8, 2026
fbd6ce9
Merge branch 'feature/report' into Célian
i4nc3l Jun 4, 2026
0057ee1
Debugged file upload and connected history to back
lazex-mix Jun 5, 2026
c209592
deleted tests
lazex-mix Jun 5, 2026
6f087f7
Adde priorit to users/requests
i4nc3l Jun 5, 2026
5c725cc
Merge branch 'front' into Célian
i4nc3l Jun 5, 2026
b5df9bc
added admin page
lazex-mix Jun 5, 2026
aa587c8
Merge branch 'front' into Célian
i4nc3l Jun 5, 2026
3441e1f
Revamped admin dashboard
i4nc3l Jun 5, 2026
4f85f0e
Added pay button
i4nc3l Jun 5, 2026
bc38c78
added bpmns
yanis-bellot Jun 6, 2026
f8537f3
added rapport-final
yanis-bellot Jun 6, 2026
c18fc4f
modified bpmn after diagram
yanis-bellot Jun 6, 2026
1420a68
Added part 5 tests to report
i4nc3l Jun 6, 2026
5efdff8
added tests section
yanis-bellot Jun 6, 2026
2c24ba7
Plan des charges
i4nc3l Jun 6, 2026
4b0f0ed
plan des charges
i4nc3l Jun 6, 2026
24d5fce
plan chargees jgp
i4nc3l Jun 6, 2026
1c81cdf
added plan de charge final
yanis-bellot Jun 6, 2026
7224ec7
Corrections rapport final
i4nc3l Jun 8, 2026
de1dfff
Updated diagrams
i4nc3l Jun 8, 2026
9ef51f0
Backend: Added profile pictures and tests
i4nc3l Jun 6, 2026
20cb205
Updated frontend to use backend for profile picture +fixed bug admin …
i4nc3l Jun 6, 2026
e630872
Fixed bug roles in backend and frontend
i4nc3l Jun 6, 2026
06581de
Polishing
i4nc3l Jun 6, 2026
f29e8fa
added bpmns
yanis-bellot Jun 6, 2026
fa07d0e
e2e test
i4nc3l Jun 6, 2026
96b417e
updated bpmn svg
i4nc3l Jun 8, 2026
b55e4d3
rapport V2
i4nc3l Jun 8, 2026
1e7176e
exporte rapport final
i4nc3l Jun 8, 2026
d8730a9
modified rapport.pdf
yanis-bellot Jun 9, 2026
c30b010
Update report
i4nc3l Jun 11, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@ __pycache__

*:Zone.Identifier


# C extensions
*.so

Expand Down
Binary file added Livrable/PLAN DE CHARGES - Plan de Charge.pdf
Binary file not shown.
Original file line number Diff line number Diff line change
@@ -1,6 +1,10 @@
@startuml
title "Sequencial Diagram \n Authentification"

title Sequencial Diagram\nAuthentification
scale 0.5
skinparam monochrome true
skinparam shadowing false
skinparam defaultFontName Arial
skinparam linetype ortho
skinparam style strictuml
skinparam sequenceMessageAlign center

Expand Down
70 changes: 70 additions & 0 deletions Livrable/diagrams/auth-diagram.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
19 changes: 8 additions & 11 deletions diagrams/db-diagram.puml → Livrable/diagrams/db-diagram.puml
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
@startuml
title " UML Diagram \n Database"

title UML Diagram\nDatabase
scale 1.4
hide circle
skinparam linetype ortho
skinparam shadowing false
Expand Down Expand Up @@ -75,7 +75,7 @@ package "Material Assets" #DDDDDD{
entity "Printer" as printer {
*id : Bigint <<PK>>
--
*type : PrinterType
*model : PrinterModel
*status : PrinterStatus = DOWN
}

Expand All @@ -84,6 +84,7 @@ package "Material Assets" #DDDDDD{
--
*colour : varchar(25)
*type : FilamentType
*price : integer = 0 {>= 0}
quantity : integer = 0 {>= 0}
}

Expand All @@ -95,13 +96,9 @@ package "Material Assets" #DDDDDD{
TPE/TPU
}

enum PrinterType {
SLA
SLS
FDM
MJP
DMLS
BINDER_JETTING
enum PrinterModel {
Creality_K1C
Prusa MK3S
}

enum PrinterStatus {
Expand All @@ -121,7 +118,7 @@ printer ||-- request : processes
operation }o-- user : beneficiary or agent
request .d.> RequestStatus : uses
printer ..> PrinterStatus : uses
printer ..> PrinterType : uses
printer ..> PrinterModel : uses
filament ..> FilamentType : uses
operation .r.> OperationType : uses
@enduml
159 changes: 159 additions & 0 deletions Livrable/diagrams/db-diagram.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
200 changes: 200 additions & 0 deletions Livrable/pre-report.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,200 @@
---
title: "Pré-rapport de Projet : PrINTech"
subtitle: "Encadrant : Mohamed SELLAMI | Version : 1.0"
subject: "Livrable 1"
author: |
`\begin{tabular}{cc}
Adam ALLOU & Arnaud COSTERMANS \\
\footnotesize adam.allou@telecom-sudparis.eu & \footnotesize arnaud.costermans@telecom-sudparis.eu \\
& \\
Célian GIAUME & Yanis BELLOT \\
\footnotesize celian.giaume@telecom-sudparis.eu & \footnotesize yanis.bellot@telecom-sudparis.eu
\end{tabular}`{=latex}
date: "20 Février 2026"
toc: true
toc-title: "Sommaire du Pré-rapport"

---

# 1. Plan du Rapport Final

1. **Introduction :** Contexte, présentation du sujet et objectifs.
2. **Analyse et Spécifications :** Cahier des charges, recueil des besoins fonctionnels et non fonctionnels.
3. **Conception :** Architecture système, conception de la base de données.
4. **Réalisation et Choix Techniques :** Justification des packages, implémentation des fonctionnalités clés.
5. **Validation et Tests :** Stratégie de test, correction des bugs.
6. **Bilan de la Gestion de Projet :** Analyse du planning, plan de charge réel contre prévisionnel, difficultés rencontrées.
7. **Conclusion et Perspectives.**

---

\newpage

# 2. Cahier des charges

## 2.1. Description du sujet

Depuis cette année, l'association INTech du campus rencontrait des difficultés de gestion des impressions 3D faites par les membres. En effet, depuis cette année, INTech offre aux membres du campus la possibilité d'imprimer leur modèle 3D en devenant adhérents.
\newline
Actuellement, le système de gestion possède des problèmes. Les adhérents doivent télécharger et paramétrer un logiciel appelé slicer qui permet de transformer un modèle 3D en série d'instructions pour les imprimantes 3D, appelé G-code. On demande ensuite aux adhérents de charger le G-code sur les imprimantes, de lancer les impressions et ensuite de remplir un Google Form avec le nom de leur fichier, le poids de l'impression et d'autres paramètres.
\newline
Ce système implique beaucoup d'étapes manuelles qui peuvent mener à des erreurs et rendre la fraude facile. Il faut aussi former tout le monde qui devient adhérent à l'utilisation des imprimantes.

Intervient alors le projet PrINTech consistant au développement d'une application web dynamique qui permette une gestion des impressions 3D de manière automatique.

Contrairement à la solution existante, ce projet a une vision plus long terme et facilite l'expansion à plus d'imprimantes ou de personnes et permet de réduire la charge de travail du bureau.

## 2.2. Liste des fonctionnalités de l'application
Afin de répondre au sujet, l'application doit intégrer les fonctionnalités suivantes, classées par priorité de développement :

| ID | Fonctionnalité de l'application | Description technique | Priorité |
| :--- | :--- | :--- | :---: |
| **F01** | **Authentification** | Connexion et déconnexion via Django Auth. | Haute |
| **F02** | **Gestion des profils** | Affichage et modification des informations utilisateurs. | Basse |
| **F03** | **Gestion des impressions** | Flux complet d'impression 3D, du dépôt STL à la mise en file. | Haute |
| **F03-1** | **Déposer un STL** | Upload d'un fichier STL. | Haute |
| **F03-2** | **Slicer automatique** | Convertir le modèle en G-code via un slicer. | Moyenne |
| **F03-3** | **Estimation du coût** | Calculer le prix d'impression à partir des paramètres. | Basse |
| **F03-4** | **Position dans la file** | Afficher la place du travail dans la file. | Basse |
| **F03-5** | **Priorité projets INTech** | Autoriser certains utilisateurs à prioriser leurs travaux. | Basse |
| **F03-6** | **Crédit restant** | Afficher le crédit restant d'un utilisateur. | Basse |
| **F03-7** | **Quantité d'impressions** | Indiquer le nombre d'exemplaires à imprimer. | Basse |
| **F04** | **Espace administrateur** | Interface d'administration pour une gestion complète. | Moyenne |
| **F04-1** | **Gestion des utilisateurs** | Créer, modifier et supprimer les utilisateurs. | Haute |
| **F04-2** | **Gestion des travaux** | Créer, modifier et supprimer la file de travaux. | Moyenne |
| **F04-3** | **Reprise des erreurs** | Déclarer un travail en erreur et le remettre en file. | Moyenne |
| **F05** | **Intégrations** | SSO et notifications externes. | Pour aller plus loin |
| **F05-1** | **Intégration CAS** | Inscription et connexion via le CAS de l'école. | Pour aller plus loin |
| **F05-2** | **Intégration Discord** | Utiliser des webhooks pour les notifications. | Pour aller plus loin |
| **F05-3** | **Intégration HelloAsso** | Créditer les comptes via HelloAsso. | Pour aller plus loin |
| **F06** | **Impression technique** | Options avancées d'impression. | Pour aller plus loin |
| **F06-1** | **Utilisation de supports** | Détecter quand l'utilisation de supports est nécessaire. | Pour aller plus loin |
| **F06-2** | **Paramétrage du slicer** | Permettre l'upload d'un JSON de paramètres. | Pour aller plus loin |
| **F06-3** | **Choix des matériaux** | Choisir un plastique autre que le PLA. | Pour aller plus loin |
| **F07** | **Gestion des filaments** | Administration des filaments et du stock. | Pour aller plus loin |
| **F07-1** | **Activation des filaments** | Activer et désactiver des filaments. | Pour aller plus loin |
| **F07-2** | **Stock de filament** | Gérer la quantité de filament restant. | Pour aller plus loin |
| **F07-3** | **Rapport de consommation** | Rapport sur quantités, crédits et montant imprimé. | Pour aller plus loin |


---

\newpage

# 2.3. Choix des technologies

Les technologies pour développer une webapp sont nombreuses. Pour faire la sélection des technologies, nous avons d'abord examiné lesquelles étaient capables de répondre à notre cahier des charges, puis ensuite sur les technologies auxquelles les membres de notre équipe avaient déjà de l'expérience. Sur la base de ces critères, nous avons sélectionné le stack suivant :
\newline
- AngularJS : pour réaliser le frontend
\newline
- Django : pour réaliser le backend et l'API REST
\newline
- PostgreSQL : pour la base de données de l'application
\newline
- Docker : pour faciliter le déploiement de l'application
\newline
- Klipper : comme firmware des imprimantes. Ce firmware communautaire vient remplacer celui du constructeur
\newline
- Moonraker : expose les API JSON-RPC de Klipper avec une API REST

---

\newpage

# 3. Conception Préliminaire
*Conformément au cycle de développement (Cycle en V), cette section valide l'étape de conception préliminaire en traduisant les besoins en architecture technique.*

## 3.1. Base de données

![Schema de base de données](diagrams/db-diagram.svg)

---

\newpage

## 3.2. Séquence de l'Authentification

![Schema de l'authentification](diagrams/auth-diagram.svg)

---

\newpage


# 4. Planning prévisionnel

---

## 4.1 Phase 0 — Formation Angular *(13 jan -> 8 fev)*
> Angular est appris en parallele du projet. Le dev front ne commence qu'en fevrier.

| Tache | Duree |
|---|---|
| Bases Angular (components, routing, modules) | 1,5 sem. |
| Angular Material & formulaires reactifs | 1,5 sem. |


---

## 4.2 Phase 1 — Cadrage & Architecture *(13 jan -> 27 jan)*

| Tache | Duree |
|---|---|
| Besoins, wireframes | 1,5 sem. |
| Modelisation BDD (User, Printer, Job, Filament) | 1 sem. |
| Setup Docker / Git | 1 sem. |



---

## 4.3 Phase 2 — Backend Django *(27 jan -> 14 mar)*
> Django est maitrise -> execution rapide. La partie Moonraker/Klipper est la plus incertaine.

| Tache | Duree |
|---|---|
| Modeles, migrations PostgreSQL, auth JWT | 2 sem. |
| API CRUD (imprimantes, filaments, jobs) | 2 sem. |
| Integration Moonraker + Klipper (envoi G-code, statuts) | 3 sem. |
| WebSocket temps reel (Django Channels) | 2 sem. |
| Tests backend | 2 sem. |


---

## 4.4 Phase 3 — Frontend Angular *(3 fev -> 11 avr)*
> Phase la plus longue a cause de l'apprentissage en cours. Scope limite au MVP.

| Tache | Duree |
|---|---|
| Routing, guards, intercepteurs JWT | 1,5 sem. |
| Pages catalogue, formulaire soumission job | 2,5 sem. |
| Dashboard suivi impression temps reel | 2,5 sem. |
| Page admin basique | 2 sem. |
| Responsive & UI polish | 2 sem. |


---

## 4.5 Phase 4 — Tests & Recette *(11 avr -> 5 mai)*

| Tache | Duree |
|---|---|
| Tests E2E front <-> back <-> imprimante | 2 sem. |
| Corrections bugs & recette finale | 2 sem. |


---

## 4.6 Phase 5 — Deploiement *(5 mai -> 15 mai)*

| Tache | Duree |
|---|---|
| Config Nginx + Gunicorn + PostgreSQL en prod | 4 j |
| Mise en production + documentation | 1 sem. |



---

## 4.7 Livraison finale — 15 mai 2025
Binary file added Livrable/rapport.pdf
Binary file not shown.
13 changes: 5 additions & 8 deletions PrINTech-Back/back/apps/api/models.py
Original file line number Diff line number Diff line change
Expand Up @@ -35,6 +35,7 @@ class Color(models.TextChoices):
colour = models.CharField(choices=Color.choices, max_length=25, null=False, blank=False)
type = models.CharField(choices=Type.choices, max_length=25, null=False, blank=False)
quantity = models.PositiveIntegerField(default=0)
price = models.PositiveIntegerField(default=0)


class File(models.Model):
Expand All @@ -53,15 +54,11 @@ class Status(models.TextChoices):
DOWN = 'DOWN'
USED = 'USED'

class Type(models.TextChoices):
SLA = 'SLA/DLP/MSLA' #Resin
SLS = 'SLS/MJF' #Powder
FDM = 'FDM/FFF' #Filament
MJP = 'MJP' #MultiJet Printing
Binder_Jetting = 'Binder_Jetting'
DMLS = 'DMLS/SLM' #Metal
class Model(models.TextChoices):
Creality_K1C = 'Creality_K1C'
Prusa_MK3S = 'Prusa_MK3S'

type = models.CharField(choices=Type.choices, max_length=25, null=False, blank=False)
type = models.CharField(choices=Model.choices, max_length=25, null=False, blank=False)
status = models.CharField(choices=Status.choices, max_length=25, null=False, blank=False, default=Status.DOWN)


Expand Down
Binary file modified README.md
Binary file not shown.