diff --git a/client/src/app/app-routing.module.ts b/client/src/app/app-routing.module.ts
index c89d41c170e6a2b31db45a9dac66b74f98f0a1c5..928840b2fc1631acf3e042ea7f9586fb564a1fd5 100644
--- a/client/src/app/app-routing.module.ts
+++ b/client/src/app/app-routing.module.ts
@@ -14,7 +14,7 @@ const routerOptions: ExtraOptions = {
 const routes: Routes = [
   {path: 'program_test', component: ProgramDisplayerComponent},
   {path: 'kata-displayer/:id/:title/:language/:sensei', component: KataDisplayerComponent},
-  {path: 'kata/:id', component: KataComponent},
+  {path: 'kata/:prgtitle/:sensei/:prid/:id', component: KataComponent},
   {path: 'program_create', component: ProgramCreateComponent},
   {path: 'kata_create/:id/:language', component: KataCreateComponent},
 ];
diff --git a/client/src/app/app.module.ts b/client/src/app/app.module.ts
index fa7b47e627dba7685bfcf54734982dfeb9de13ab..b9d1f5d30b8335a52a15e83eeb041efa7d4b9ee0 100644
--- a/client/src/app/app.module.ts
+++ b/client/src/app/app.module.ts
@@ -17,6 +17,7 @@ import {AceEditorModule} from 'ng2-ace-editor';
 import { KataCreateComponent } from './kata-create/kata-create.component';
 import { ProgramCreateComponent } from './program-create/program-create.component';
 import {FormsModule} from '@angular/forms';
+import { HttpClientModule } from '@angular/common/http';
 
 
 @NgModule({
@@ -44,7 +45,8 @@ import {FormsModule} from '@angular/forms';
     AppRoutingModule,
     RouterModule,
     AceEditorModule,
-    FormsModule
+    FormsModule,
+    HttpClientModule
   ],
   providers: [],
   bootstrap: [AppComponent]
diff --git a/client/src/app/compilation.service.ts b/client/src/app/compilation.service.ts
index e9f714ad51ce2c0539590a6f1013a7f477163fa5..35844fd747051ddb9d1a5451515b931a67972404 100644
--- a/client/src/app/compilation.service.ts
+++ b/client/src/app/compilation.service.ts
@@ -1,28 +1,15 @@
 import {Injectable} from '@angular/core';
-import * as $ from 'jquery';
+import {HttpClient} from '@angular/common/http';
 
 @Injectable({
   providedIn: 'root'
 })
 export class CompilationService {
-  compilationServer(obj: string): string {
-    let response = '';
 
-    $.ajax({
-      url: 'http://localhost:7000/run/',
-      type: 'POST',
-      async: false,
-      data: obj,
-      contentType: 'application/json',
-      success(data) {
-        response = data;
-      }
-
-    });
-
-    return response;
+  compilationServer(obj: string) {
+    return this.http.post('http://localhost:7000/run/', obj);
   }
 
-  constructor() {
+  constructor(private http: HttpClient) {
   }
 }
diff --git a/client/src/app/create-kata.service.ts b/client/src/app/create-kata.service.ts
index 87f9bfbb51625d12c0482168a81b9af099511f80..7821435ff3d98cb887bd698e1a3bb1457679c9bf 100644
--- a/client/src/app/create-kata.service.ts
+++ b/client/src/app/create-kata.service.ts
@@ -1,23 +1,15 @@
 import {Injectable} from '@angular/core';
-import * as $ from 'jquery';
+import {HttpClient, HttpHeaders} from '@angular/common/http';
 
 @Injectable({
   providedIn: 'root'
 })
-export class CreateKataService {
-
-  publish(obj: string): void {
-
-    $.ajax({
-      url: 'http://localhost:7000/kata/create',
-      type: 'POST',
-      async: false,
-      data: obj,
-      contentType: 'application/json'
-    });
 
+export class CreateKataService {
+  publish(obj: string) {
+    return this.http.post('http://localhost:7000/kata/create', obj);
   }
 
-  constructor() {
+  constructor(private http: HttpClient) {
   }
 }
diff --git a/client/src/app/create-program.service.ts b/client/src/app/create-program.service.ts
index 7630baf4fc7d1f59c56ab070b48b0af30cfcaf5e..ee2f282de9814d2eb9cf9b8704594afbc25844fd 100644
--- a/client/src/app/create-program.service.ts
+++ b/client/src/app/create-program.service.ts
@@ -1,30 +1,19 @@
 import {Injectable} from '@angular/core';
-import * as $ from 'jquery';
+import {HttpClient} from '@angular/common/http';
 
 @Injectable({
   providedIn: 'root'
 })
-export class CreateProgramService {
 
-  createProgram(obj: string): string {
-    let response = '';
 
-    $.ajax({
-      url: 'http://localhost:7000/program/create',
-      type: 'POST',
-      async: false,
-      data: obj,
-      contentType: 'application/json',
-      success(data) {
-        response = data;
-      }
+export class CreateProgramService {
 
-    });
 
-    return response;
+  createProgram(obj: string) {
+    return this.http.post('http://localhost:7000/program/create', obj);
   }
 
-  constructor() {
+  constructor(private http: HttpClient) {
   }
 }
 
diff --git a/client/src/app/fetch-kata-show-case.service.ts b/client/src/app/fetch-kata-show-case.service.ts
index fc7d9aae4fc71abaabb881aa2286c07b4ed3baf4..e92d827f823ade9c98fdaa38ac2a106de3c5e4c1 100644
--- a/client/src/app/fetch-kata-show-case.service.ts
+++ b/client/src/app/fetch-kata-show-case.service.ts
@@ -1,14 +1,17 @@
-import { Injectable } from '@angular/core';
+import {Injectable} from '@angular/core';
 import {KataShowCase} from './kata-displayer/kataShowCase';
-import {KATAS} from './kata-displayer/kataShowCaseMock';
+import * as $ from 'jquery';
+import {HttpClient} from '@angular/common/http';
 
 @Injectable({
   providedIn: 'root'
 })
 export class FetchKataShowCaseService {
 
-  constructor() { }
-  getPrograms(program: number): KataShowCase[] {
-    return KATAS.filter(x => x.idProgram === program);
+  constructor(private http: HttpClient) {
+  }
+
+  getKatasDetails(program: number) {
+    return this.http.get('http://localhost:7000/program/getkatas/details/' + program + '');
   }
 }
diff --git a/client/src/app/fetch-kata.service.ts b/client/src/app/fetch-kata.service.ts
index 659d9267940fc7a905d73b9946ecc91d259870ac..1ff94d5670f150677b70e47b9d9cca78cf436c1e 100644
--- a/client/src/app/fetch-kata.service.ts
+++ b/client/src/app/fetch-kata.service.ts
@@ -1,18 +1,17 @@
 import {Injectable} from '@angular/core';
+import {HttpClient} from '@angular/common/http';
 
-import {Kata} from './kata/kata';
-import {KATAS} from './kata/kataMock';
 
 @Injectable({
   providedIn: 'root'
 })
 export class FetchKataService {
 
-  getKata(kataId: number): Kata[] {
-    return KATAS;
+  getKata(programID: number, kataID: number) {
+    return this.http.get('http://localhost:7000/program/getkata/' + programID + '/' + kataID + '');
   }
 
-  constructor() {
+  constructor(private http: HttpClient) {
   }
 
 }
diff --git a/client/src/app/fetch-program.service.ts b/client/src/app/fetch-program.service.ts
index 72758ecb7641c8eb1dd3be2348b00d8a9c3437ac..9e1a79b8cad6203487fd97a1b81e6a8f7cb6b548 100644
--- a/client/src/app/fetch-program.service.ts
+++ b/client/src/app/fetch-program.service.ts
@@ -1,30 +1,16 @@
 import {Injectable} from '@angular/core';
-import {Program} from './program-displayer/program';
-import {PROGRAMS} from './program-displayer/programMock';
-import * as $ from 'jquery';
+import {HttpClient} from '@angular/common/http';
 
 @Injectable({
   providedIn: 'root'
 })
 export class FetchProgramService {
 
-  getPrograms(): Program[] {
-    let response = '';
-
-    $.ajax({
-      url: 'http://localhost:7000/program/getall',
-      type: 'get',
-      async: false,
-      success(data) {
-        response = data;
-      }
-
-    });
-
-    const obj: Program[] = response as Program;
-    return obj;
+  getPrograms() {
+    return this.http.get('http://localhost:7000/program/getdetails');
   }
 
-  constructor() {
+
+  constructor(private http: HttpClient) {
   }
 }
diff --git a/client/src/app/kata-create/kata-create.component.ts b/client/src/app/kata-create/kata-create.component.ts
index 8937b4d90245c5658190e3d80f976e2d9b2a5105..a4a7a049f66d8ed20951a523eeaf9149f529e94c 100644
--- a/client/src/app/kata-create/kata-create.component.ts
+++ b/client/src/app/kata-create/kata-create.component.ts
@@ -5,7 +5,6 @@ import {ActivatedRoute, Router} from '@angular/router';
 import {Location} from '@angular/common';
 import {CreateKataService} from '../create-kata.service';
 import {CompilationService} from '../compilation.service';
-import * as $ from 'jquery';
 
 @Component({
   selector: 'app-kata-create',
@@ -64,37 +63,44 @@ export class KataCreateComponent implements OnInit {
   }
 
   publish(): void {
+
     this.kateCreateService.publish(JSON.stringify({
+      id: +new Date(),
       title: this.title,
+      language: this.language,
       canva: this.canva,
       cassert: this.assert,
       solution: this.solution,
       rules: this.rules,
       keepAssert: this.keepAssertForKata,
       nbAttempt: this.numberOfAttempt,
-      programID: this.programId
-    }));
+      programID: this.programId,
+      difficulty: 'Ceinture blanche'
+    })).subscribe();
 
     this.router.navigate(['/kata-displayer/' + this.programId + '']);
   }
 
   try(): void {
-    const response = $.parseJSON(this.compilationService.compilationServer(JSON.stringify({
+    let response;
+
+    this.compilationService.compilationServer(JSON.stringify({
       language: this.language,
       stream: this.solution,
       assert: this.assert
-    })));
-
-
-    if (response.exit === 0) {
-      this.status = 0;
-      this.result = response.output + '\nTests passed';
-    } else {
-      this.status = 1;
-      this.result = response.error;
-    }
-
-    this.result += '\nExecuted in : ' + response.time + 'ms';
+    })).subscribe((data: string) => {
+      console.log(data);
+      response = data;
+      if (response.exit === 0) {
+        this.status = 0;
+        this.result = response.output + '\nTests passed';
+      } else {
+        this.status = 1;
+        this.result = response.error;
+      }
+
+      this.result += '\nExecuted in : ' + response.time + 'ms';
+    });
   }
 
   ngOnInit() {
diff --git a/client/src/app/kata-displayer/kata-displayer.component.html b/client/src/app/kata-displayer/kata-displayer.component.html
index f51d8bdd49e924bd75ac1c84a5c833ec9bff6ac3..c8b63d8e5aee9aaffffca3d8fd4d5f6b4cced839 100644
--- a/client/src/app/kata-displayer/kata-displayer.component.html
+++ b/client/src/app/kata-displayer/kata-displayer.component.html
@@ -1,4 +1,4 @@
-<div class="container">
+<div class="container" *ngIf="katas">
   <span class="title">{{programTitle}}
     <br>
     <span class="subtitle">{{programSensei}} <span class="language"> {{programLanguage}}</span>
@@ -11,13 +11,14 @@
         <div class="p-2">
         <div class="card" style="width: 18rem;">
         <div class="card-body">
-          <h5 class="card-title"><a class="title" routerLink="/kata/{{kata.id}}">{{kata.title}}</a></h5>
+          <h5 class="card-title"><a class="title"
+                                    routerLink="/kata/{{programTitle}}/{{programSensei}}/{{idProgram}}/{{kata.id}}">{{kata.title}}</a></h5>
           <br/>
           <h6 class="card-subtitle mb-2 text-muted">{{kata.difficulty}} </h6>
           <span style="float: right;">{{kata.status}}</span>
           <br/>
           <br/>
-          <p class="card-text">{{kata.description}}</p>
+          <!--<p class="card-text">{{kata.description}}</p>-->
           </div>
         </div>
         </div>
diff --git a/client/src/app/kata-displayer/kata-displayer.component.ts b/client/src/app/kata-displayer/kata-displayer.component.ts
index c9140611980c5992fdf759aab336159042a153f9..8e20a10a75ac4eba35ee6109b302101601446a06 100644
--- a/client/src/app/kata-displayer/kata-displayer.component.ts
+++ b/client/src/app/kata-displayer/kata-displayer.component.ts
@@ -16,6 +16,7 @@ export class KataDisplayerComponent implements OnInit {
   programTitle: string;
   programLanguage: string;
   programSensei: string;
+
   constructor(
     private route: ActivatedRoute,
     private location: Location,
@@ -28,7 +29,7 @@ export class KataDisplayerComponent implements OnInit {
     this.programSensei = this.route.snapshot.paramMap.get('sensei');
     this.programLanguage = this.route.snapshot.paramMap.get('language');
     this.programTitle = this.route.snapshot.paramMap.get('title');
-    this.katas = this.fetchKataShowCaseService.getPrograms(this.idProgram);
+    this.fetchKataShowCaseService.getKatasDetails(this.idProgram).subscribe((data: KataShowCase[]) => this.katas = data);
   }
 
   ngOnInit() {
diff --git a/client/src/app/kata-displayer/kataShowCase.ts b/client/src/app/kata-displayer/kataShowCase.ts
index 3b7a3ee523ce7a453e1409e38449650db5aa39ef..01043af95ebb554d40b1be61bfd3d439d5db1c98 100644
--- a/client/src/app/kata-displayer/kataShowCase.ts
+++ b/client/src/app/kata-displayer/kataShowCase.ts
@@ -1,9 +1,7 @@
-export class KataShowCase {
-  id: number;
+export interface KataShowCase {
   title: string;
   difficulty: string;
-  idProgram: number;
-  description: string;
+  id: string;
   status: string;
 }
 
diff --git a/client/src/app/kata-displayer/kataShowCaseMock.ts b/client/src/app/kata-displayer/kataShowCaseMock.ts
index 7d8599ca2b0b2acab5bc65ba5989b95ddd618823..d9827e49f72cd5d6414b1558dd6f45310bc4e6af 100644
--- a/client/src/app/kata-displayer/kataShowCaseMock.ts
+++ b/client/src/app/kata-displayer/kataShowCaseMock.ts
@@ -1,4 +1,4 @@
-import {KataShowCase} from './kataShowCase';
+/*import {KataShowCase} from './kataShowCase';
 
 export const KATAS: KataShowCase[] = [
   {
@@ -12,3 +12,4 @@ export const KATAS: KataShowCase[] = [
   {id: 1, title: 'Fopen', difficulty: 'Ceinture Jaune', idProgram: 1, description: 'TOFILL', status: 'FAILED'},
   {id: 2, title: 'Fwrite', difficulty: 'Ceinture Verte', idProgram: 1, description: 'TOFILL', status: 'RESOLVED'}
 ];
+*/
diff --git a/client/src/app/kata/kata.component.html b/client/src/app/kata/kata.component.html
index 2963cce582b6bcddafd3a30e5c9675d92b3af664..bfb17756334dad20edc5c3ad8ac63c200ab09483 100644
--- a/client/src/app/kata/kata.component.html
+++ b/client/src/app/kata/kata.component.html
@@ -1,26 +1,26 @@
-<div class="d-flex justify-content-center" style="margin-top:2%">
+<div *ngIf="kata" class="d-flex justify-content-center" style="margin-top:2%">
   <div class="d-flex flex-column">
-    <div class="p-2 title">{{kata.title}} <a routerLink="/kata-displayer/0/{{kata.title}}/{{kata.language}}/{{kata.sensei}}">- {{kata.programTitle}}</a>
-      <br><span class="subtitle">{{kata.sensei}} <span class="language"> {{kata.language}}</span></span></div>
+    <div class="p-2 title">{{kata.title}} <a routerLink="/kata-displayer/{{programID}}/{{kata.title}}/{{kata.language}}/{{programSensei}}">- {{programTitle}}</a>
+      <br><span class="subtitle">{{programSensei}} <span class="language"> {{kata.language}}</span></span></div>
 
     <div class="p-2 "><textarea disabled style="text-align: justify">{{kata.rules}}</textarea>
       <app-terminal-code style="margin-left: 20px;" [code]="kata.canva" [type]="kata.language" (new)="OnNewEvent($event)"></app-terminal-code>
     </div>
 
     <div class="p-2">
-      <app-terminal-assert [code]="kata.assert" [type]="kata.language"></app-terminal-assert>
+      <app-terminal-assert [code]="kata.cassert" [type]="kata.language"></app-terminal-assert>
       <textarea [ngClass]="{'success':status === 0,'error':status === 1,'':status === 2}" style="white-space: pre-wrap;"
                 disabled>{{result}}</textarea>
     </div>
 
     <div class="p-2">
 
-      <button (click)="compile(kata.language,kata.canva,kata.assert)" class="code">TRY MY SOLUTION</button>
-      <button (click)="compile(kata.language,kata.canva,kata.assert)" style="margin-right: 10px" class="code">SURRENDER</button>
+      <button (click)="compile(kata.language,kata.canva,kata.cassert)" class="code">TRY MY SOLUTION</button>
+      <button  style="margin-right: 10px" class="code">SURRENDER</button>
     </div>
   </div>
 
 
 </div>
-<!--[(ngModel)]="result"-->
+
 
diff --git a/client/src/app/kata/kata.component.ts b/client/src/app/kata/kata.component.ts
index fb7f8f06d7740973682da848aff31cb392caa7c1..706d298d66247e6c7b0a6b0b33aec2fc7cab292d 100644
--- a/client/src/app/kata/kata.component.ts
+++ b/client/src/app/kata/kata.component.ts
@@ -17,6 +17,10 @@ export class KataComponent implements OnInit {
   idKata: number;
   status = 2;
   result = '';
+  programID: number;
+
+  programTitle: string;
+  programSensei: string;
 
   constructor(
     private route: ActivatedRoute,
@@ -28,7 +32,13 @@ export class KataComponent implements OnInit {
 
   getKata(): void {
     this.idKata = +this.route.snapshot.paramMap.get('id');
-    this.kata = this.fetchKataService.getKata(this.idKata)[0];
+    this.programID = +this.route.snapshot.paramMap.get('prid');
+    this.programSensei = this.route.snapshot.paramMap.get('sensei');
+    this.programTitle = this.route.snapshot.paramMap.get('prgtitle');
+    this.fetchKataService.getKata(this.programID, this.idKata).subscribe((data: Kata) => {
+      this.kata = data;
+    });
+
   }
 
   OnNewEvent(event: any): void {
@@ -36,22 +46,25 @@ export class KataComponent implements OnInit {
   }
 
   compile(language: string, stream: string, assert: string): void {
-    const response = $.parseJSON(this.compilationService.compilationServer(JSON.stringify({
+    let response;
+
+    this.compilationService.compilationServer(JSON.stringify({
       language: this.kata.language,
       stream: stream,
       assert: assert
-    })));
-
-
-    if (response.exit === 0) {
-      this.status = 0;
-      this.result = response.output + '\nExercise passed';
-    } else {
-      this.status = 1;
-      this.result = response.error;
-    }
+    })).subscribe((data: string) => {
+      console.log(data);
+      response = data;
+      if (response.exit === 0) {
+        this.status = 0;
+        this.result = response.output + '\nExercise passed';
+      } else {
+        this.status = 1;
+        this.result = response.error;
+      }
 
-    this.result += '\nExecuted in : ' + response.time + 'ms';
+      this.result += '\nExecuted in : ' + response.time + 'ms';
+    });
   }
 
   ngOnInit() {
diff --git a/client/src/app/kata/kata.ts b/client/src/app/kata/kata.ts
index 7466b9df02c14ae1d9d08f000f014f9e9e21ea7d..603cb6b73cfd41b5dcf52350587485559be85614 100644
--- a/client/src/app/kata/kata.ts
+++ b/client/src/app/kata/kata.ts
@@ -1,12 +1,13 @@
-export class Kata {
-  id: number;
+export interface Kata {
+  id: string;
   title: string;
-  sensei: string;
-  programTitle: string;
   language: string;
   solution: string;
   canva: string;
   rules: string;
-  assert: string;
-
+  cassert: string;
+  keepAssert: boolean;
+  nbAttempt: number;
+  programID: string;
+  difficulty: string;
 }
diff --git a/client/src/app/kata/kataMock.ts b/client/src/app/kata/kataMock.ts
index c027ffeb71eb68e8ca63d3436e7588d811340df5..9e5cbbf391cf64d9909b7da52fcebdea2e15d72c 100644
--- a/client/src/app/kata/kataMock.ts
+++ b/client/src/app/kata/kataMock.ts
@@ -1,3 +1,4 @@
+/*
 import {Kata} from './kata';
 
 // TODO un kata n'a pas besoin de programtitile, ca devrait ĂȘtre passĂ© par la classe d'en dessus (idem pour sensei)
@@ -17,3 +18,4 @@ export const KATAS: Kata[] = [{
     'assert_that(m.multiTwo([3])).is_equal_to([6])',
   solution: 'def multiTwo(n):\n' + '  return [i*2 for i in n]'
 }];
+*/
diff --git a/client/src/app/program-create/program-create.component.ts b/client/src/app/program-create/program-create.component.ts
index d5e63a270993d41b9894f30447b66bdf93d3f46f..97468c200f26fa0b91232d6749dc54bc4d33c0bb 100644
--- a/client/src/app/program-create/program-create.component.ts
+++ b/client/src/app/program-create/program-create.component.ts
@@ -24,26 +24,27 @@ export class ProgramCreateComponent implements OnInit {
   }
 
   createProgram(newkata: boolean): void {
-    console.log(this.programTags.split(','));
-    this.programToKata = +this.createProgramService.createProgram(JSON.stringify({
-      id: + new Date(),
+    this.createProgramService.createProgram(JSON.stringify({
+      id: this.programToKata,
       sensei: 'Orestis Pileas Malaspinas',
       language: this.programLanguage,
       nbKata: 0,
       title: this.programTitle,
       description: this.programDescr,
-      tags: this.programTags.split(',')
-    }));
-
-    if (newkata) {
-      this.router.navigate(['/kata_create/' + this.programToKata + '/' + this.programLanguage + '']);
-    } else {
-      this.router.navigate(['/']);
-    }
+      tags: this.programTags.split(','),
+      katas: []
+    })).subscribe(() => {
+      if (newkata) {
+        this.router.navigate(['/kata_create/' + this.programToKata + '/' + this.programLanguage + '']);
+      } else {
+        this.router.navigate(['/']);
+      }
+    });
 
   }
 
   ngOnInit() {
+    this.programToKata = +new Date();
   }
 
 }
diff --git a/client/src/app/program-displayer/program-displayer.component.html b/client/src/app/program-displayer/program-displayer.component.html
index 63cd6576bb7fb47f2159e06f9af5c66b1e41d77d..a7d45b1a9380c2fbf29b2d5c5849ddbdb31717f4 100644
--- a/client/src/app/program-displayer/program-displayer.component.html
+++ b/client/src/app/program-displayer/program-displayer.component.html
@@ -1,13 +1,13 @@
-<div class="d-flex justify-content-center" style="margin-top:2%">
+<div class="d-flex justify-content-center"  *ngIf="programs" style="margin-top:2%">
   <div class="d-flex flex-column">
     <div class="p-2" style="width:200px"></div>
     <div class="p-2">Liste de programme</div>
 
     <div class="p-2" >
-  <span *ngFor="let program of programs">
+  <span  *ngFor="let program of programs">
       <div class="card" style="width: 18rem;">
         <div class="card-body">
-          <a routerLink="/kata-displayer/{{program.id}}/{{program.title}}/{{program.language}}/{{program.sensei}}">
+          <a routerLink="/kata-displayer/{{program.programID}}/{{program.title}}/{{program.language}}/{{program.sensei}}">
             <h5 class="card-title">{{program.title}}</h5></a>
           <h6 class="card-subtitle mb-2 text-muted"><a class="sensei" href="">{{program.sensei}} </a>
             <a href=""><span class="language">{{program.language}}</span></a></h6>
diff --git a/client/src/app/program-displayer/program-displayer.component.ts b/client/src/app/program-displayer/program-displayer.component.ts
index 63172e5792857c0b8181973aa4b005ea92187e23..45517ebe8f60f4be40cc66ae30e3599d42d40d83 100644
--- a/client/src/app/program-displayer/program-displayer.component.ts
+++ b/client/src/app/program-displayer/program-displayer.component.ts
@@ -16,7 +16,7 @@ export class ProgramDisplayerComponent implements OnInit {
   }
 
   getProgram(): void {
-    this.programs = this.fetchProgramService.getPrograms();
+    this.fetchProgramService.getPrograms().subscribe((data: Program[]) => this.programs = data);
   }
 
   ngOnInit() {
diff --git a/client/src/app/program-displayer/program.ts b/client/src/app/program-displayer/program.ts
index 354edb0f5bc309fb8dc6b6811354490cc191bf84..228b41e6d1a3a47e0ca30e5e8e9d98bb9a55ca14 100644
--- a/client/src/app/program-displayer/program.ts
+++ b/client/src/app/program-displayer/program.ts
@@ -1,9 +1,9 @@
 export interface Program {
-  id: string,
-  title: string;
-  language: string;
-  sensei: string;
-  nbKata: number;
-  description: string;
-  tags: string[];
+    programID: string;
+    title: string;
+    language: string;
+    sensei: string;
+    nbKata: number;
+    description: string;
+    tags: string[];
 }
diff --git a/client/src/app/program-displayer/programMock.ts b/client/src/app/program-displayer/programMock.ts
index e8161da5a70fd4a17f8b6f0aee6daeebd004a31a..a505b6f54df64d27b2baef1b52111c39abd6b813 100644
--- a/client/src/app/program-displayer/programMock.ts
+++ b/client/src/app/program-displayer/programMock.ts
@@ -1,4 +1,4 @@
-import {Program} from './program';
+/*import {Program} from './program';
 
 export const PROGRAMS: Program[] = [
   {
@@ -20,3 +20,4 @@ export const PROGRAMS: Program[] = [
   }
 ];
 
+*/
diff --git a/client/src/app/terminal-code/terminal-code.component.html b/client/src/app/terminal-code/terminal-code.component.html
index f860115080de1ccb0fa851e88b0ca7a5266c61a0..bb8fe6116690605222ab745312fb1fe790a6df54 100644
--- a/client/src/app/terminal-code/terminal-code.component.html
+++ b/client/src/app/terminal-code/terminal-code.component.html
@@ -1 +1 @@
-<ace-editor [readOnly]="false" [mode]="type" (textChanged)="onChange($event)" [autoUpdateContent]="true" [(text)]="code" [durationBeforeCallback]="1000" #editor></ace-editor>
+<ace-editor [readOnly]="false" [mode]="type" (textChanged)="onChange($event)" [autoUpdateContent]="true" [(text)]="code" [durationBeforeCallback]="200" #editor></ace-editor>
diff --git a/tests/serveur_compilation/server_rest/src/main/java/Kata.java b/tests/serveur_compilation/server_rest/src/main/java/Kata.java
index 9cd0bc5d1a3047ae82e562ead68ad37fa69bc0d9..55f94dcfeed3d00b25b7f18d5e56ba392d72c0e4 100644
--- a/tests/serveur_compilation/server_rest/src/main/java/Kata.java
+++ b/tests/serveur_compilation/server_rest/src/main/java/Kata.java
@@ -1,7 +1,7 @@
 public class Kata {
-    private String title, canva, cassert, solution, rules;
+    private String id, title, canva, cassert, solution, rules,programID,difficulty,language;
     private boolean keepAssert;
-    private int nbAttempt,programID;
+    private int nbAttempt;
 
 
     public boolean isKeepAssert() {
@@ -60,11 +60,35 @@ public class Kata {
         this.nbAttempt = nbAttempt;
     }
 
-    public int getProgramID() {
+    public String getId() {
+        return id;
+    }
+
+    public void setId(String id) {
+        this.id = id;
+    }
+
+    public String getProgramID() {
         return programID;
     }
 
-    public void setProgramID(int programID) {
+    public void setProgramID(String programID) {
         this.programID = programID;
     }
+
+    public String getDifficulty() {
+        return difficulty;
+    }
+
+    public void setDifficulty(String difficulty) {
+        this.difficulty = difficulty;
+    }
+
+    public String getLanguage() {
+        return language;
+    }
+
+    public void setLanguage(String language) {
+        this.language = language;
+    }
 }
diff --git a/tests/serveur_compilation/server_rest/src/main/java/KataShowCase.java b/tests/serveur_compilation/server_rest/src/main/java/KataShowCase.java
new file mode 100644
index 0000000000000000000000000000000000000000..345ea1e1390e0127dbb657610c0cd0132785180d
--- /dev/null
+++ b/tests/serveur_compilation/server_rest/src/main/java/KataShowCase.java
@@ -0,0 +1,42 @@
+public class KataShowCase {
+    private String title,difficulty,id,status;
+
+    public KataShowCase(String title, String difficulty, String id, String status){
+     this.difficulty = difficulty;
+     this.title = title;
+     this.id = id;
+     this.status = status;
+    }
+
+    public String getTitle() {
+        return title;
+    }
+
+    public void setTitle(String title) {
+        this.title = title;
+    }
+
+    public String getDifficulty() {
+        return difficulty;
+    }
+
+    public void setDifficulty(String difficulty) {
+        this.difficulty = difficulty;
+    }
+
+    public String getId() {
+        return id;
+    }
+
+    public void setId(String programID) {
+        this.id = programID;
+    }
+
+    public String getStatus() {
+        return status;
+    }
+
+    public void setStatus(String status) {
+        this.status = status;
+    }
+}
diff --git a/tests/serveur_compilation/server_rest/src/main/java/LiveDB.java b/tests/serveur_compilation/server_rest/src/main/java/LiveDB.java
index 6d2608e9c7b4805b15127645a1aec03217a434fa..334fe38ff8104a1fc70a004fd13eb3f46bc02069 100644
--- a/tests/serveur_compilation/server_rest/src/main/java/LiveDB.java
+++ b/tests/serveur_compilation/server_rest/src/main/java/LiveDB.java
@@ -1,31 +1,63 @@
 import java.util.ArrayList;
 
-public class LiveDB extends ProgramsDataBase{
+public class LiveDB extends ProgramsDataBase {
 
-    ArrayList<Program> programs;
     ArrayList<Kata> katas;
 
+    ArrayList<Program> programs;
 
     public LiveDB() {
-        programs = new ArrayList<>();
+        this.programs = new ArrayList<>();
+        this.katas = new ArrayList<>();
+    }
+
+    public void createProgram(Program prg) {
+        this.programs.add(prg);
+    }
 
+    public void createKata(Kata kata) {
 
+        for (Program p : this.programs)
+            if (p.getId().equals(kata.getProgramID())) {
+                p.setNbKata(p.getNbKata() + 1);
+                p.getKatas().add(kata);
+                break;
+            }
     }
 
-    public String createProgram(Program prg) {
+    public ArrayList<ProgramShowCase> getProgramsDetails() {
+        ArrayList<ProgramShowCase> p = new ArrayList<>();
 
-        programs.add(prg);
-        return String.valueOf(programs.indexOf(prg));
+        for (Program prg : this.programs)
+            p.add(new ProgramShowCase(prg.getTitle(), prg.getSensei(), prg.getLanguage(), prg.getDescription(), prg.getNbKata(), prg.getTags(), prg.getId()));
+
+        return p;
     }
 
-    public void createKata(Kata kata) {
-        katas.add(kata);
-        //programs.get(kata.getProgramID()).setKata();
-    //    programs.get(kata.getProgramID()).getKata().add(kata);
+    public Kata getProgramKata(String programID, String kataID) {
+        ArrayList<Kata> ktemp = new ArrayList<>();
+        Kata kata = new Kata();
+        for (Program prg : this.programs)
+            if (prg.getId().equals(programID))
+                ktemp = prg.getKatas();
+            for(Kata k : ktemp)
+                if(k.getId().equals(kataID))
+                    kata = k;
+        return kata;
     }
 
-    public ArrayList<Program> getAllPrograms(){
-        return programs;
+    public ArrayList<KataShowCase> getProgramKatasDetails(String programID) {
+        ArrayList<KataShowCase> ktsc = new ArrayList<>();
+        ArrayList<Kata> kt = new ArrayList<>();
+        for (Program prg : this.programs)
+            if (prg.getId().equals(programID)) {
+                kt = prg.getKatas();
+                break;
+            }
+
+        for (Kata k : kt)
+            ktsc.add(new KataShowCase(k.getTitle(), k.getDifficulty(), k.getId(), "TODO"));
+        return ktsc;
     }
 
-}
+}
\ No newline at end of file
diff --git a/tests/serveur_compilation/server_rest/src/main/java/Program.java b/tests/serveur_compilation/server_rest/src/main/java/Program.java
index f165d3e2eb78d37e739a79a55ab173cfdbf6d578..40ced1914b050bc844664e10926797549c3bd58b 100644
--- a/tests/serveur_compilation/server_rest/src/main/java/Program.java
+++ b/tests/serveur_compilation/server_rest/src/main/java/Program.java
@@ -4,6 +4,7 @@ public class Program {
     private String id,sensei,language,title,description;
     private String[] tags;
     private int nbKata;
+    private ArrayList<Kata> katas;
 
     public String getSensei() {
         return sensei;
@@ -60,6 +61,14 @@ public class Program {
     public void setId(String id) {
         this.id = id;
     }
+
+    public ArrayList<Kata> getKatas() {
+        return katas;
+    }
+
+    public void setKatas(ArrayList<Kata> katas) {
+        this.katas = katas;
+    }
 /*
     public ArrayList<Kata> getKata() {
         return kata;
diff --git a/tests/serveur_compilation/server_rest/src/main/java/ProgramShowCase.java b/tests/serveur_compilation/server_rest/src/main/java/ProgramShowCase.java
new file mode 100644
index 0000000000000000000000000000000000000000..5f1974c31a6c93f62ad3c67aedf72d4c3dfc713b
--- /dev/null
+++ b/tests/serveur_compilation/server_rest/src/main/java/ProgramShowCase.java
@@ -0,0 +1,71 @@
+public class ProgramShowCase {
+    private String title,sensei,language,description,programID;
+    private int nbKata;
+    private String[] tags;
+
+    public ProgramShowCase(String title, String sensei, String language, String description, int nbKata, String[] tags, String programID){
+        this.title = title;
+        this.sensei = sensei;
+        this.language = language;
+        this.description = description;
+        this.nbKata = nbKata;
+        this.tags = tags;
+        this.programID = programID;
+    }
+
+    public String getTitle() {
+        return title;
+    }
+
+    public void setTitle(String title) {
+        this.title = title;
+    }
+
+    public String getSensei() {
+        return sensei;
+    }
+
+    public void setSensei(String sensei) {
+        this.sensei = sensei;
+    }
+
+    public String getLanguage() {
+        return language;
+    }
+
+    public void setLanguage(String language) {
+        this.language = language;
+    }
+
+    public String getDescription() {
+        return description;
+    }
+
+    public void setDescription(String description) {
+        this.description = description;
+    }
+
+    public int getNbKata() {
+        return nbKata;
+    }
+
+    public void setNbKata(int nbKata) {
+        this.nbKata = nbKata;
+    }
+
+    public String[] getTags() {
+        return tags;
+    }
+
+    public void setTags(String[] tags) {
+        this.tags = tags;
+    }
+
+    public String getProgramID() {
+        return programID;
+    }
+
+    public void setProgramID(String programID) {
+        this.programID = programID;
+    }
+}
diff --git a/tests/serveur_compilation/server_rest/src/main/java/ProgramsDataBase.java b/tests/serveur_compilation/server_rest/src/main/java/ProgramsDataBase.java
index 942460a4a29208c2a2f976f8bcf8449ee93bc030..fdd800aa856550ded904d8821df1e384285c7123 100644
--- a/tests/serveur_compilation/server_rest/src/main/java/ProgramsDataBase.java
+++ b/tests/serveur_compilation/server_rest/src/main/java/ProgramsDataBase.java
@@ -1,7 +1,9 @@
 import java.util.ArrayList;
 
 public abstract class ProgramsDataBase {
-    public abstract String createProgram(Program prg);
+    public abstract void createProgram(Program prg);
     public abstract void createKata(Kata kata);
-    public abstract ArrayList<Program> getAllPrograms();
+    public abstract ArrayList<ProgramShowCase> getProgramsDetails();
+    public abstract Kata getProgramKata(String programID, String kataID);
+    public abstract ArrayList<KataShowCase> getProgramKatasDetails(String programID);
 }
diff --git a/tests/serveur_compilation/server_rest/src/main/java/app.java b/tests/serveur_compilation/server_rest/src/main/java/app.java
index 9fc5f030de278874ed60bf8c6e512bef6a0757f3..7e406b846374273ec46a0c856fc01d2c99004ddb 100644
--- a/tests/serveur_compilation/server_rest/src/main/java/app.java
+++ b/tests/serveur_compilation/server_rest/src/main/java/app.java
@@ -57,7 +57,7 @@ public class app {
 
         app.post("/program/create", ctx -> {
             Program prg = objectMapper.readValue(ctx.body(), Program.class);
-            ctx.result(db.createProgram(prg));
+            db.createProgram(prg);
         });
 
         app.post("/kata/create", ctx -> {
@@ -65,8 +65,16 @@ public class app {
             db.createKata(kt);
         });
 
-        app.get("/program/getall", ctx -> {
-            ctx.json(db.getAllPrograms());
+        app.get("/program/getdetails", ctx -> {
+            ctx.json(db.getProgramsDetails());
+        });
+
+        app.get("/program/getkatas/details/:id", ctx -> {
+            ctx.json(db.getProgramKatasDetails(ctx.pathParam("id")));
+        });
+
+        app.get("/program/getkata/:prid/:id", ctx -> {
+            ctx.json(db.getProgramKata(ctx.pathParam("prid"),ctx.pathParam("id")));
         });
 
     }
diff --git a/tests/serveur_compilation/server_rest/target/classes/Kata.class b/tests/serveur_compilation/server_rest/target/classes/Kata.class
index 24051da0d093d147439b77806979affed7719169..f25c79bcda09dd0d6749bcb29e8197d9ff1f8e99 100644
Binary files a/tests/serveur_compilation/server_rest/target/classes/Kata.class and b/tests/serveur_compilation/server_rest/target/classes/Kata.class differ
diff --git a/tests/serveur_compilation/server_rest/target/classes/KataShowCase.class b/tests/serveur_compilation/server_rest/target/classes/KataShowCase.class
new file mode 100644
index 0000000000000000000000000000000000000000..0cd30bb503988e17695e5101e37861fec13e46c1
Binary files /dev/null and b/tests/serveur_compilation/server_rest/target/classes/KataShowCase.class differ
diff --git a/tests/serveur_compilation/server_rest/target/classes/LiveDB.class b/tests/serveur_compilation/server_rest/target/classes/LiveDB.class
index 643b28cb936fca7c136dc0d74110d0826e0f7fd4..e7abcb7ca81754ed034a5c3e5f1f504b1f140e3f 100644
Binary files a/tests/serveur_compilation/server_rest/target/classes/LiveDB.class and b/tests/serveur_compilation/server_rest/target/classes/LiveDB.class differ
diff --git a/tests/serveur_compilation/server_rest/target/classes/Program.class b/tests/serveur_compilation/server_rest/target/classes/Program.class
index 076c738e8da22af7eb12c4d2246a1350e57e6e69..28a6aa780e25735f56a5623fa57bcb5ccfcefe45 100644
Binary files a/tests/serveur_compilation/server_rest/target/classes/Program.class and b/tests/serveur_compilation/server_rest/target/classes/Program.class differ
diff --git a/tests/serveur_compilation/server_rest/target/classes/ProgramShowCase.class b/tests/serveur_compilation/server_rest/target/classes/ProgramShowCase.class
new file mode 100644
index 0000000000000000000000000000000000000000..787ad292fa0c3d49f6f3f9376aa49f0cc0621a24
Binary files /dev/null and b/tests/serveur_compilation/server_rest/target/classes/ProgramShowCase.class differ
diff --git a/tests/serveur_compilation/server_rest/target/classes/ProgramsDataBase.class b/tests/serveur_compilation/server_rest/target/classes/ProgramsDataBase.class
index 5cf70dcf91262632cd00de8714059b7414cfebc6..bcfdd67e6dde0c9b6d912f6e36b8665e556f522d 100644
Binary files a/tests/serveur_compilation/server_rest/target/classes/ProgramsDataBase.class and b/tests/serveur_compilation/server_rest/target/classes/ProgramsDataBase.class differ
diff --git a/tests/serveur_compilation/server_rest/target/classes/app.class b/tests/serveur_compilation/server_rest/target/classes/app.class
index d71aef4b1c2e5d40604a286ab5ad413696e90e86..b6aa526cb48f6549b6af307f8969b230ef95c720 100644
Binary files a/tests/serveur_compilation/server_rest/target/classes/app.class and b/tests/serveur_compilation/server_rest/target/classes/app.class differ
diff --git a/tests/serveur_compilation/serveur_compilation/share_docker_file/__pycache__/sample.cpython-34.pyc b/tests/serveur_compilation/serveur_compilation/share_docker_file/__pycache__/sample.cpython-34.pyc
index d8b4331ea84fc0443059b6c9bca23135615f2cf4..dff2bd8c9b20431260cff819dc0a15783cef5ded 100644
Binary files a/tests/serveur_compilation/serveur_compilation/share_docker_file/__pycache__/sample.cpython-34.pyc and b/tests/serveur_compilation/serveur_compilation/share_docker_file/__pycache__/sample.cpython-34.pyc differ
diff --git a/tests/serveur_compilation/serveur_compilation/src/main/java/DockerCompilation.java b/tests/serveur_compilation/serveur_compilation/src/main/java/DockerCompilation.java
index 6ad789e25dcd538f91dffbeef5c9ea71dc432482..cce482e90a1da238e05f25688473af0f9edb6161 100644
--- a/tests/serveur_compilation/serveur_compilation/src/main/java/DockerCompilation.java
+++ b/tests/serveur_compilation/serveur_compilation/src/main/java/DockerCompilation.java
@@ -13,14 +13,12 @@ public class DockerCompilation {
             case "python":
                 filename = "share_docker_file/sample.py";
                 filename_test = "share_docker_file/assert.py";
-                //  cmd = "python3 " + filename_test;
                 cmd = "docker run --rm --mount type=bind,source=/Users/freak/Desktop/dojo-hepia/tests/serveur_compilation/serveur_compilation/share_docker_file,dst=/env/ hey:1.1 python3 assert.py";
                 break;
             case "java":
                 filename = "share_docker_file/kata.java";
                 filename_test = "share_docker_file/Main.java";
                 cmd = "docker run --rm --mount type=bind,source=/Users/freak/Desktop/dojo-hepia/tests/serveur_compilation/serveur_compilation/share_docker_file,dst=/env/ java:4.0 ./java_test.sh";
-                //cmd = "java " + filename_test;
                 break;
         }
 
@@ -91,15 +89,6 @@ public class DockerCompilation {
         file = new File(filename_test);
         file.delete();
 
-        switch (input.get("language").toString()){
-            case "java":
-                file = new File("share_docker_file/Main.class");
-                file.delete();
-                file = new File("share_docker_file/kata.class");
-                file.delete();
-                break;
-        }
-
         return json;
     }
 }
diff --git a/tests/serveur_compilation/serveur_compilation/target/classes/DockerCompilation.class b/tests/serveur_compilation/serveur_compilation/target/classes/DockerCompilation.class
index 994cf1cca332b9d916993ed58361757ca7d99761..6f7d0b292ea90673daa6db85c46c39b053bcc3a0 100644
Binary files a/tests/serveur_compilation/serveur_compilation/target/classes/DockerCompilation.class and b/tests/serveur_compilation/serveur_compilation/target/classes/DockerCompilation.class differ