diff --git a/README.md b/README.md
index 39071b8300c35a86ed4e0330e0d561319f72b652..23bca6e1c7ac2067ff09ad6e67b7b098c04dc83c 100644
--- a/README.md
+++ b/README.md
@@ -9,63 +9,30 @@
 <p>DOCKER-COMPOSE</p>
 <p>ANGULAR CLI</p>
 
-### Temporary users ids :
+### Temporary user ids :
 
 | Username | Password | Privileges |
 |----------|----------|------------|
-| shodai   | shodai   | shodai     |
-| sensei   | sensei   | sensei     |
-| monji    | monji    | monji      |
+| shodai   | admin   | shodai     |
 
-<b>Users privileges hierarchy</b>
-<p>shodai>sensei>monji</p>
 
-#### Client
-
->./client/
-```
-npm install
-ng serve --open
-```
+<p>When connected to shodai account, you can generate tokens to create further sensei in "Sponsorship" (location : left nav bar)</p>
 
-#### Gateway
->./gateway/
-```
-mvn package
-mvn exec:java
-```
-
-#### Compilateur
->./compilation/
-```
-mvn package
-mvn exec:java
-```
-
-##### Create java container
-
->./compilation/docker/java
-```
-docker build . -t java:1.0
-```
-
-##### Create python container
+<p>All created account without token will automatically be ranked as "monji"</p>
+<b>Users privileges hierarchy</b>
 
->./compilation/docker/python
-```
-docker build . -t python:1.0
-```
+<p>shodai>sensei>monji</p>
 
-#### MongoDB
+#### 1. Mongo Database
 
-##### Create container
+##### 1.2 Create container
 
 >./mongodb/
 ```
 docker-compose up -d
 ```
 
-##### Create user
+##### 1.3 Create user
 
 >./mongodb/
 ```
@@ -76,6 +43,8 @@ password : example
 insert the following command :
 
 ```
+use DojoHepia
+
 db.createUser(
   {
     user: "shodai",
@@ -87,13 +56,11 @@ db.createUser(
 )
 ```
 
-##### Importing data
-<p>If you want to popularize the database with programs and katas, you can insert the following files in the mongo db database</p>
+##### (optional) Importing data
+<p>If you want to popularize the database with programs and katas, you can insert the following file in the mongo db database</p>
 
 >./mongodb/data/programs
 
->./mongodb/data/programssubscriptions
-
 <p>to import the datas, copy past them and to the following steps :</p>
 
 >./mongodb/
@@ -104,9 +71,43 @@ password : example
 ```
 use DojoHepia
 db.Programs.insertMany(<programs-copied-data>);
-db.ProgramsSubscription.insertMany(<programsSubscription-copied-data>);
 ```
 
+#### 2. Gateway
+>./gateway/
+```
+mvn package
+mvn exec:java
+```
+#### 3. Client
+
+>./client/
+```
+npm install
+ng serve --open
+```
+
+#### 4. Compilateur
+
+##### 4.1 Pull java container
+
+```
+docker pull freakency/java:1.0
+```
+##### 4.2 Pull python container
+
+```
+docker pull freakency/python:1.0
+```
+##### 4.3 Compile and run
+
+>./compilation/
+```
+mvn package
+mvn exec:java
+```
+
+
 
 ## Vocabulaire
 | Art - Martial | Dojo Hepia       |
diff --git a/client/package-lock.json b/client/package-lock.json
index 5c029f943acac6d35ffac0491300c7f57a3d5554..5a1dc920edd1efe9e049fa1df6b352709438ebeb 100644
--- a/client/package-lock.json
+++ b/client/package-lock.json
@@ -5525,6 +5525,11 @@
       "dev": true,
       "optional": true
     },
+    "js-sha1": {
+      "version": "0.6.0",
+      "resolved": "https://registry.npmjs.org/js-sha1/-/js-sha1-0.6.0.tgz",
+      "integrity": "sha512-01gwBFreYydzmU9BmZxpVk6svJJHrVxEN3IOiGl6VO93bVKYETJ0sIth6DASI6mIFdt7NmfX9UiByRzsYHGU9w=="
+    },
     "js-tokens": {
       "version": "3.0.2",
       "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-3.0.2.tgz",
diff --git a/client/package.json b/client/package.json
index eafca2b6b32d808f6bf804535eada417e1eaf981..2fad21703397ae3603faff239a6b1e241ce042c3 100644
--- a/client/package.json
+++ b/client/package.json
@@ -28,12 +28,12 @@
     "font-awesome": "^4.7.0",
     "hammerjs": "^2.0.8",
     "jquery": "^3.4.0",
+    "js-sha1": "^0.6.0",
     "ng2-ace-editor": "^0.3.9",
     "ngx-alerts": "^3.4.3",
     "ngx-bootstrap": "^4.1.1",
     "ngx-ui-loader": "^7.2.2",
     "rxjs": "~6.3.3",
-    "tslib": "^1.9.0",
     "uuid": "^3.3.2",
     "zone.js": "~0.8.26"
   },
diff --git a/client/src/app/app-routing.module.ts b/client/src/app/app-routing.module.ts
index 84db7391ef7c0ff6fc16415822822b5a00df71f2..4398032abb74b329e27b58a42784910390ef6f1a 100644
--- a/client/src/app/app-routing.module.ts
+++ b/client/src/app/app-routing.module.ts
@@ -11,12 +11,16 @@ import {SearchbyComponent} from './component/searchby/searchby.component';
 import {Role} from './_helper/_models/roles';
 import {SubscriptionComponent} from './component/subscription/subscription.component';
 import {MineComponent} from './component/mine/mine.component';
+import {SigninComponent} from './component/signin/signin.component';
+import {TokenComponent} from './component/token/token.component';
 
 const routes: Routes = [
-  {path: '', component: ProgramDisplayerComponent, canActivate: [AuthGuard]},
+  {path: '', component: ProgramDisplayerComponent, canActivate: [AuthGuard], data: {roles: [Role.shodai, Role.monji, Role.sensei]}},
 
   {path: 'user/login', component: LoginComponent},
-  {path: 'program', component: ProgramDisplayerComponent, canActivate: [AuthGuard], data: {roles: [Role.shodai, Role.monji, Role.sensei]}},
+  {path: 'user/signin', component: SigninComponent},
+  {path: 'program/all', component: ProgramDisplayerComponent, canActivate: [AuthGuard], data: {roles: [Role.shodai, Role.monji, Role.sensei]}},
+  {path: 'token', component: TokenComponent, canActivate: [AuthGuard], data: {roles: [Role.shodai, Role.sensei]}},
   {path: 'program/subscriptions', component: SubscriptionComponent, canActivate: [AuthGuard], data: {roles: [Role.shodai, Role.monji, Role.sensei]}},
   {path: 'program/mine', component: MineComponent, canActivate: [AuthGuard], data: {roles: [Role.shodai, Role.sensei]}},
   {path: 'program/search', component: SearchbyComponent, canActivate: [AuthGuard], data: {roles: [Role.shodai, Role.monji, Role.sensei]}},
diff --git a/client/src/app/app.module.ts b/client/src/app/app.module.ts
index 7049df27d20f0612eb19adb8a57669e890ab7c55..2e362717de67331c44d604dd6ccc50e127c1b812 100644
--- a/client/src/app/app.module.ts
+++ b/client/src/app/app.module.ts
@@ -14,7 +14,14 @@ import {
   MatIconModule,
   MatListModule,
   MatCardModule,
-  MatInputModule, MatFormFieldModule, MatExpansionModule, MatGridListModule, MatSnackBarModule
+  MatInputModule,
+  MatFormFieldModule,
+  MatExpansionModule,
+  MatGridListModule,
+  MatSnackBarModule,
+  MatCheckboxModule,
+  MatBadgeModule,
+  MatProgressSpinnerModule
 } from '@angular/material';
 import {AppRoutingModule} from './app-routing.module';
 import {RouterModule} from '@angular/router';
@@ -38,6 +45,9 @@ import { SearchbyComponent } from './component/searchby/searchby.component';
 import { SubscriptionComponent } from './component/subscription/subscription.component';
 import { MineComponent } from './component/mine/mine.component';
 import { CardNoneallDisplayerComponent } from './component/program-displayer/card-noneall-displayer/card-noneall-displayer.component';
+import { SigninComponent } from './component/signin/signin.component';
+import { TokenComponent } from './component/token/token.component';
+
 
 @NgModule({
   declarations: [
@@ -57,7 +67,9 @@ import { CardNoneallDisplayerComponent } from './component/program-displayer/car
     SearchbyComponent,
     SubscriptionComponent,
     MineComponent,
-    CardNoneallDisplayerComponent
+    CardNoneallDisplayerComponent,
+    SigninComponent,
+    TokenComponent
   ],
   imports: [
 
@@ -71,6 +83,7 @@ import { CardNoneallDisplayerComponent } from './component/program-displayer/car
     MatInputModule,
     MatFormFieldModule,
     MatExpansionModule,
+    MatCheckboxModule,
     MatGridListModule,
     MatSnackBarModule,
     MatListModule,
@@ -82,7 +95,9 @@ import { CardNoneallDisplayerComponent } from './component/program-displayer/car
     NgxUiLoaderModule,
     AlertModule.forRoot({maxMessages: 5, timeout: 5000, position: 'right'}),
     ReactiveFormsModule,
-    MatCardModule
+    MatCardModule,
+    MatBadgeModule,
+    MatProgressSpinnerModule
 
   ],
   providers: [{provide: HTTP_INTERCEPTORS, useClass: JwtInterceptor, multi: true}, {
diff --git a/client/src/app/component/kata-displayer/kata-displayer.component.html b/client/src/app/component/kata-displayer/kata-displayer.component.html
index 2d9d8b227624d7f9a2a2d27e7df32f626d6ca607..0a29300392237157709a092c2a998ea2e8fbca24 100644
--- a/client/src/app/component/kata-displayer/kata-displayer.component.html
+++ b/client/src/app/component/kata-displayer/kata-displayer.component.html
@@ -5,12 +5,15 @@
       <span class="subtitle">{{programSensei}} <span class="language"> {{programLanguage}}</span>
     </span>
 
-      <button mat-button style="margin:0 3rem 0 0;float:right" *ngIf="isOwner"
+      <button mat-button style="margin:0 3rem 0 0;float:right;" *ngIf="isOwner"
               routerLink="/kata_create/{{idProgram}}/{{programLanguage}}">Create a new kata
       </button>
-      <button mat-button style="margin:0 3rem 0 0;float:right" *ngIf="isOwner" (click)="delete(idProgram)">Delete this program
+      <button mat-button style="margin:0 3rem 0 0;float:right" *ngIf="isOwner" (click)="deleteProgram(idProgram)">Delete
+        this
+        program
       </button>
-      <button mat-button style="margin:0 3rem 0 0;float:right" *ngIf="!isOwner" (click)="subscribe()">{{subvalue}}</button>
+      <button mat-button style="margin:0 3rem 0 0;float:right" *ngIf="!isOwner"
+              (click)="subscribe()">{{subvalue}}</button>
     </h1>
 
   </div>
@@ -25,11 +28,11 @@
             <h5 class="card-title"><a class="title"
                                       routerLink="/kata/{{idProgram}}/{{kata.id}}">{{kata.title}}</a>
             <span style="float:right;"
-              [ngClass]="{'TODO':kata.status==='TODO','ON-GOING':kata.status==='ON-GOING','RESOLVED':kata.status==='RESOLVED','FAILED': kata.status==='FAILED'}">{{kata.status}}</span></h5>
+                  [ngClass]="{'TODO':kata.status==='TODO','ON-GOING':kata.status==='ON-GOING','RESOLVED':kata.status==='RESOLVED','FAILED': kata.status==='FAILED'}">{{kata.status}}</span></h5>
             <br/>
             <h6 class="card-subtitle mb-2 text-muted">{{kata.difficulty}}</h6>
-            <br/>
-            <br/>
+            <!-- <button mat-button *ngIf="isOwner" (click)="deleteKata(kata.id)" class="card-link">Delete kata</button>-->
+            <!--<button mat-button *ngIf="isOwner" routerLink="#">Statistics</button>-->
             <!--<p class="card-text">{{kata.description}}</p>-->
           </div>
         </div>
diff --git a/client/src/app/component/kata-displayer/kata-displayer.component.ts b/client/src/app/component/kata-displayer/kata-displayer.component.ts
index 9e23a1328b7bc1081bf4d98fe0b95b2b67825487..490baa36a62130ae7154762ffca9f3b4136eb334 100644
--- a/client/src/app/component/kata-displayer/kata-displayer.component.ts
+++ b/client/src/app/component/kata-displayer/kata-displayer.component.ts
@@ -53,6 +53,10 @@ export class KataDisplayerComponent implements OnInit {
   ) {
   }
 
+  deleteKata(kataid: string){
+
+  }
+
   getIsOwner() {
     if (this.currentUser.id === this.programSenseiID) {
       this.isOwner = true;
@@ -113,7 +117,7 @@ export class KataDisplayerComponent implements OnInit {
     });
   }
 
-  delete(id: string) {
+  deleteProgram(id: string) {
     if (confirm('Are you sure you want to delete this program ? all katas and users datas regarding this katas will be deleted as well.')) {
       this.programService.deleteProgram(id).subscribe(() => {
         this.router.navigate(['program/mine']);
diff --git a/client/src/app/component/login/login.component.html b/client/src/app/component/login/login.component.html
index f50fb176e67ca1873835cc37b844c05b453fde5b..200a002a68852ad905469481cfdad64facbada5d 100644
--- a/client/src/app/component/login/login.component.html
+++ b/client/src/app/component/login/login.component.html
@@ -22,5 +22,6 @@
     <br>
     <div *ngIf="error" class="alert alert-danger">{{error}}</div>
   </form>
+  <a routerLink="/user/signin">Create my account</a>
 </div>
 
diff --git a/client/src/app/component/login/login.component.ts b/client/src/app/component/login/login.component.ts
index de3f86b13178427b0901a340fd0a33f0c30bf634..f6a108a040ab56ffcccf5ee0cc74b187f10ebb2c 100644
--- a/client/src/app/component/login/login.component.ts
+++ b/client/src/app/component/login/login.component.ts
@@ -3,6 +3,7 @@ import {AuthenticationService} from '../../services/auth/authentication.service'
 import {first} from 'rxjs/operators';
 import {ActivatedRoute, Router} from '@angular/router';
 import {FormBuilder, FormGroup, Validators} from '@angular/forms';
+import * as sha1 from 'js-sha1';
 
 @Component({
   selector: 'app-login',
@@ -13,7 +14,6 @@ export class LoginComponent implements OnInit {
 
   constructor(private route: ActivatedRoute,
               private router: Router,
-              private auth: AuthenticationService,
               private formBuilder: FormBuilder,
               private authenticationService: AuthenticationService) {
     if (this.authenticationService.currentUserValue) {
@@ -38,7 +38,7 @@ export class LoginComponent implements OnInit {
     }
 
     this.loading = true;
-    this.auth.login(this.f.username.value, this.f.password.value)
+    this.authenticationService.login(this.f.username.value, sha1(this.f.password.value))
       .pipe(first())
       .subscribe(
         data => {
diff --git a/client/src/app/component/main-left-side-nav/main-left-side-nav.component.html b/client/src/app/component/main-left-side-nav/main-left-side-nav.component.html
index 289b809565d3e812f015c9a1605fcdfbff3302f7..4784723815466635aa1ef08f25c7b8d359e792c7 100644
--- a/client/src/app/component/main-left-side-nav/main-left-side-nav.component.html
+++ b/client/src/app/component/main-left-side-nav/main-left-side-nav.component.html
@@ -3,15 +3,16 @@
                [attr.role]="(isHandset$ | async) ? 'dialog' : 'navigation'"
                [mode]="(isHandset$ | async) ? 'over' : 'side'"
                [opened]="!(isHandset$ | async)">
-    <mat-toolbar routerLink="/">DOJO HEPIA</mat-toolbar>
+    <mat-toolbar><a class="title" routerLink="/">DOJO HEPIA</a></mat-toolbar>
     <mat-nav-list *ngIf="currentUser">
-      <a mat-list-item routerLink="/program">All programs</a>
+      <a mat-list-item routerLink="/program/all" routerLinkActive="active-list-item">All programs</a>
       <div *ngIf="currentUser.role != Role.monji">
-        <a mat-list-item routerLink="/program/create">New program</a>
-        <a mat-list-item routerLink="/program/mine">My programs</a>
+        <a mat-list-item routerLink="/program/create" routerLinkActive="active-list-item">New program</a>
+        <a mat-list-item routerLink="/program/mine" routerLinkActive="active-list-item">My programs</a>
+        <a mat-list-item routerLink="/token" routerLinkActive="active-list-item">Sponsorship</a>
       </div>
-      <a mat-list-item routerLink="/program/subscriptions">Subscriptions</a>
-      <a mat-list-item routerLink="/program/search">Search</a>
+      <a mat-list-item routerLink="/program/subscriptions" routerLinkActive="active-list-item">Subscriptions</a>
+      <a mat-list-item routerLink="/program/search" routerLinkActive="active-list-item">Search</a>
       <a mat-list-item (click)="logout()">Log out</a>
     </mat-nav-list>
   </mat-sidenav>
diff --git a/client/src/app/component/main-left-side-nav/main-left-side-nav.component.scss b/client/src/app/component/main-left-side-nav/main-left-side-nav.component.scss
index f483fdbadc6de2f6f154e246cf011ad304c98d44..d26a167c83dfd47a4434b8c4d32b09cca982d7c0 100644
--- a/client/src/app/component/main-left-side-nav/main-left-side-nav.component.scss
+++ b/client/src/app/component/main-left-side-nav/main-left-side-nav.component.scss
@@ -24,3 +24,15 @@
 *{
   color : var(--color-cloud);
 }
+
+.active-list-item {
+  background-color: var(--color-light-blue);
+}
+.title{
+  color : var(--color-cloud);
+  text-decoration: none;
+}
+.title:hover{
+  color: var(--color-dark-grey);
+  transition: .2s;
+}
diff --git a/client/src/app/component/mine/mine.component.ts b/client/src/app/component/mine/mine.component.ts
index 884d28d83646aae2a9c0873a9009cd1765ff7596..ca2baaee0843481786a02e4c16f00836428fba5e 100644
--- a/client/src/app/component/mine/mine.component.ts
+++ b/client/src/app/component/mine/mine.component.ts
@@ -23,6 +23,9 @@ export class MineComponent implements OnInit {
     this.ngxLoader.start();
     this.programSubscription.getMine(this.auth.currentUserValue.id).subscribe((data: Program[]) => {
       this.programs = data;
+      if (this.programs.length === 0) {
+        this.programReceivedFailed = true;
+      }
       this.ngxLoader.stop();
     }, error1 => {
       if (error1.status === 404) {
diff --git a/client/src/app/component/signin/signin.component.css b/client/src/app/component/signin/signin.component.css
new file mode 100644
index 0000000000000000000000000000000000000000..cad61d57bb6c4a3325f97b494ac22f63779773ed
--- /dev/null
+++ b/client/src/app/component/signin/signin.component.css
@@ -0,0 +1,14 @@
+input{
+
+  background-color: rgba(43, 47, 57, 1);
+  border: 1px solid rgba(63, 67, 77, 1);
+  border-radius: 7px;
+  color: rgba(236, 240, 241, 1.0);
+  padding: .6em 1.4em .5em .8em;
+}
+
+input:focus{
+  background-color: rgba(43, 47, 57, 1);
+  color: var(--color-cloud);
+  outline:none;
+}
diff --git a/client/src/app/component/signin/signin.component.html b/client/src/app/component/signin/signin.component.html
new file mode 100644
index 0000000000000000000000000000000000000000..8b449413c70d56f762cd4ffd251b2436503554b9
--- /dev/null
+++ b/client/src/app/component/signin/signin.component.html
@@ -0,0 +1,53 @@
+<div class="container" style="margin-top:10%">
+  <form [formGroup]="signinForm" (ngSubmit)="onSubmit()">
+
+   <!-- <div class="form-group">
+      <label for="firstname">First name</label>
+      <input type="text" formControlName="firstname" class="form-control" [ngClass]="{ 'is-invalid': submitted && f.firstname.errors }"/>
+      <div *ngIf="submitted && f.firstname.errors" class="invalid-feedback">
+        <div *ngIf="f.firstname.errors.required">First name is required</div>
+      </div>
+    </div>
+
+    <div class="form-group">
+      <label for="lastname">Last name</label>
+      <input type="text" formControlName="lastname" class="form-control" [ngClass]="{ 'is-invalid': submitted && f.lastname.errors }"/>
+      <div *ngIf="submitted && f.lastname.errors" class="invalid-feedback">
+        <div *ngIf="f.lastname.errors.required">Last name is required</div>
+      </div>
+    </div>-->
+
+
+    <div class="form-group">
+      <label for="username">Username</label>
+      <input type="text" formControlName="username" class="form-control" [ngClass]="{ 'is-invalid': submitted && f.username.errors }"/>
+      <div *ngIf="submitted && f.username.errors" class="invalid-feedback">
+        <div *ngIf="f.username.errors.required">Username is required</div>
+      </div>
+    </div>
+    <div class="form-group">
+      <label for="password">Password</label>
+      <input type="password" formControlName="password" class="form-control" [ngClass]="{ 'is-invalid': submitted && f.password.errors }"/>
+      <div *ngIf="submitted && f.password.errors" class="invalid-feedback">
+        <div *ngIf="f.password.errors.required">Password is required</div>
+      </div>
+    </div>
+    <div class="form-group">
+      <button [disabled]="loading" mat-button style="float:right">Sign in</button>
+      <img *ngIf="loading" src="data:image/gif;base64,R0lGODlhEAAQAPIAAP///wAAAMLCwkJCQgAAAGJiYoKCgpKSkiH/C05FVFNDQVBFMi4wAwEAAAAh/hpDcmVhdGVkIHdpdGggYWpheGxvYWQuaW5mbwAh+QQJCgAAACwAAAAAEAAQAAADMwi63P4wyklrE2MIOggZnAdOmGYJRbExwroUmcG2LmDEwnHQLVsYOd2mBzkYDAdKa+dIAAAh+QQJCgAAACwAAAAAEAAQAAADNAi63P5OjCEgG4QMu7DmikRxQlFUYDEZIGBMRVsaqHwctXXf7WEYB4Ag1xjihkMZsiUkKhIAIfkECQoAAAAsAAAAABAAEAAAAzYIujIjK8pByJDMlFYvBoVjHA70GU7xSUJhmKtwHPAKzLO9HMaoKwJZ7Rf8AYPDDzKpZBqfvwQAIfkECQoAAAAsAAAAABAAEAAAAzMIumIlK8oyhpHsnFZfhYumCYUhDAQxRIdhHBGqRoKw0R8DYlJd8z0fMDgsGo/IpHI5TAAAIfkECQoAAAAsAAAAABAAEAAAAzIIunInK0rnZBTwGPNMgQwmdsNgXGJUlIWEuR5oWUIpz8pAEAMe6TwfwyYsGo/IpFKSAAAh+QQJCgAAACwAAAAAEAAQAAADMwi6IMKQORfjdOe82p4wGccc4CEuQradylesojEMBgsUc2G7sDX3lQGBMLAJibufbSlKAAAh+QQJCgAAACwAAAAAEAAQAAADMgi63P7wCRHZnFVdmgHu2nFwlWCI3WGc3TSWhUFGxTAUkGCbtgENBMJAEJsxgMLWzpEAACH5BAkKAAAALAAAAAAQABAAAAMyCLrc/jDKSatlQtScKdceCAjDII7HcQ4EMTCpyrCuUBjCYRgHVtqlAiB1YhiCnlsRkAAAOwAAAAAAAAAAAA==" />
+    </div>
+
+    <mat-checkbox (change)="toggleChecked()">I have a token</mat-checkbox>
+    <div *ngIf="checked" class="form-group">
+      <hr>
+      <input type="text" formControlName="token"  placeholder="Past your given token" class="form-control" [ngClass]="{ 'is-invalid': submitted && f.token.errors }"/>
+      <div *ngIf="submitted && f.token.errors" class="invalid-feedback">
+        <div *ngIf="f.token.errors.required">Token is required</div>
+      </div>
+    </div>
+    <br>
+    <br>
+    <div *ngIf="error" class="alert alert-danger">{{error}}</div>
+  </form>
+</div>
+
diff --git a/client/src/app/component/signin/signin.component.spec.ts b/client/src/app/component/signin/signin.component.spec.ts
new file mode 100644
index 0000000000000000000000000000000000000000..c64b0b29c1335ece163f3414d52dd8aee94f61ed
--- /dev/null
+++ b/client/src/app/component/signin/signin.component.spec.ts
@@ -0,0 +1,25 @@
+import { async, ComponentFixture, TestBed } from '@angular/core/testing';
+
+import { SigninComponent } from './signin.component';
+
+describe('SigninComponent', () => {
+  let component: SigninComponent;
+  let fixture: ComponentFixture<SigninComponent>;
+
+  beforeEach(async(() => {
+    TestBed.configureTestingModule({
+      declarations: [ SigninComponent ]
+    })
+    .compileComponents();
+  }));
+
+  beforeEach(() => {
+    fixture = TestBed.createComponent(SigninComponent);
+    component = fixture.componentInstance;
+    fixture.detectChanges();
+  });
+
+  it('should create', () => {
+    expect(component).toBeTruthy();
+  });
+});
diff --git a/client/src/app/component/signin/signin.component.ts b/client/src/app/component/signin/signin.component.ts
new file mode 100644
index 0000000000000000000000000000000000000000..0b0de48c2c12a56de6c0950142ab5feeabf41318
--- /dev/null
+++ b/client/src/app/component/signin/signin.component.ts
@@ -0,0 +1,81 @@
+import {Component, OnInit} from '@angular/core';
+import {AuthenticationService} from '../../services/auth/authentication.service';
+import {Router} from '@angular/router';
+import {FormBuilder, FormGroup, Validators} from '@angular/forms';
+import {SignInService} from '../../services/auth/signin/sign-in.service';
+import {v4 as uuid} from 'uuid';
+import * as sha1 from 'js-sha1';
+
+@Component({
+  selector: 'app-signin',
+  templateUrl: './signin.component.html',
+  styleUrls: ['./signin.component.css']
+})
+export class SigninComponent implements OnInit {
+
+  constructor(private authenticationService: AuthenticationService,
+              private router: Router,
+              private formBuilder: FormBuilder,
+              private signinService: SignInService) {
+    if (this.authenticationService.currentUserValue) {
+      this.router.navigate(['/']);
+    }
+  }
+
+  signinForm: FormGroup;
+
+  loading = false;
+  submitted = false;
+  error = '';
+  checked = false;
+
+
+  toggleChecked() {
+    const token = this.signinForm.get('token');
+    this.checked = !this.checked;
+    if (!this.checked) {
+      token.setValidators([null]);
+    } else {
+      token.setValidators([Validators.required]);
+    }
+  }
+
+  get f() {
+    return this.signinForm.controls;
+  }
+
+  onSubmit() {
+    this.submitted = true;
+
+    // stop here if form is invalid
+    if (this.signinForm.invalid) {
+      return;
+    }
+
+    this.signinService.createUser(JSON.stringify({
+      id: uuid(),
+      username: this.f.username.value,
+      password: sha1(this.f.password.value),
+      token: this.f.token.value
+    })).subscribe(data => {
+        this.router.navigate(['/login']);
+      },
+      error => {
+        this.error = error.error;
+      });
+
+  }
+
+
+  ngOnInit() {
+    this.signinForm = this.formBuilder.group({
+      // firstname: ['', Validators.required],
+      // lastname: ['', Validators.required],
+      username: ['', Validators.required],
+      token: ['', null],
+      password: ['', Validators.required]
+    });
+
+  }
+
+}
diff --git a/client/src/app/component/subscription/subscription.component.ts b/client/src/app/component/subscription/subscription.component.ts
index b611463b96c2f0ae42d3b62bc4526969c1b183c8..1fff01a6173ea7f598bfddfec463c532de80b19f 100644
--- a/client/src/app/component/subscription/subscription.component.ts
+++ b/client/src/app/component/subscription/subscription.component.ts
@@ -22,6 +22,10 @@ export class SubscriptionComponent implements OnInit {
     this.ngxLoader.start();
     this.programSubscription.getSubscription(this.auth.currentUserValue.id).subscribe((data: Program[]) => {
       this.programs = data.filter((x) => x.sensei !== this.auth.currentUserValue.username);
+
+      if (this.programs.length === 0) {
+        this.programReceivedFailed = true;
+      }
       this.ngxLoader.stop();
     }, error1 => {
       if (error1.status === 404) {
diff --git a/client/src/app/component/token/token.component.css b/client/src/app/component/token/token.component.css
new file mode 100644
index 0000000000000000000000000000000000000000..e31f2863e72462cd0deb5d637db883dcdd155286
--- /dev/null
+++ b/client/src/app/component/token/token.component.css
@@ -0,0 +1,6 @@
+.container{
+  text-align: center;
+  font-family: "Helvetica Neue";
+  margin-top:5%;
+  color:var(--color-cloud);
+}
diff --git a/client/src/app/component/token/token.component.html b/client/src/app/component/token/token.component.html
new file mode 100644
index 0000000000000000000000000000000000000000..b2dd8fc5fc17f52a1b8be65813ce3128e69875f4
--- /dev/null
+++ b/client/src/app/component/token/token.component.html
@@ -0,0 +1,9 @@
+<div class="container">
+  <p>Hey ! If you're here, it's because you're trusted by Dojo Hepia.</p>
+  <p>If you want to let one of your friend become a Sensei by sponsoring him, you can generate a special token</p>
+  <p>(token will be up 10 minutes)</p>
+  <button mat-button (click)="generate()">Generate token</button>
+  <br/>
+  <br/>
+  <p style="color:rgba(231, 76, 60,1.0);">{{token}}</p>
+</div>
diff --git a/client/src/app/component/token/token.component.spec.ts b/client/src/app/component/token/token.component.spec.ts
new file mode 100644
index 0000000000000000000000000000000000000000..9c319a5ad9b5dd06dcb3c53875a9689399b8283b
--- /dev/null
+++ b/client/src/app/component/token/token.component.spec.ts
@@ -0,0 +1,25 @@
+import { async, ComponentFixture, TestBed } from '@angular/core/testing';
+
+import { TokenComponent } from './token.component';
+
+describe('TokenComponent', () => {
+  let component: TokenComponent;
+  let fixture: ComponentFixture<TokenComponent>;
+
+  beforeEach(async(() => {
+    TestBed.configureTestingModule({
+      declarations: [ TokenComponent ]
+    })
+    .compileComponents();
+  }));
+
+  beforeEach(() => {
+    fixture = TestBed.createComponent(TokenComponent);
+    component = fixture.componentInstance;
+    fixture.detectChanges();
+  });
+
+  it('should create', () => {
+    expect(component).toBeTruthy();
+  });
+});
diff --git a/client/src/app/component/token/token.component.ts b/client/src/app/component/token/token.component.ts
new file mode 100644
index 0000000000000000000000000000000000000000..d1d07d8b3f5b188b5a2ce27778d083ddf316cc4b
--- /dev/null
+++ b/client/src/app/component/token/token.component.ts
@@ -0,0 +1,25 @@
+import {Component, OnInit} from '@angular/core';
+import {TokenService} from '../../services/auth/signin/token.service';
+
+@Component({
+  selector: 'app-token',
+  templateUrl: './token.component.html',
+  styleUrls: ['./token.component.css']
+})
+export class TokenComponent implements OnInit {
+
+  constructor(private tokenService: TokenService) {
+  }
+
+  token = '';
+
+  generate() {
+    this.tokenService.getToken().subscribe((data: string) => {
+      this.token = data;
+    });
+  }
+
+  ngOnInit() {
+  }
+
+}
diff --git a/client/src/app/services/auth/signin/sign-in.service.spec.ts b/client/src/app/services/auth/signin/sign-in.service.spec.ts
new file mode 100644
index 0000000000000000000000000000000000000000..544991d1b5e57035837f6dde87fdb9eb950e5dab
--- /dev/null
+++ b/client/src/app/services/auth/signin/sign-in.service.spec.ts
@@ -0,0 +1,12 @@
+import { TestBed } from '@angular/core/testing';
+
+import { SignInService } from './sign-in.service';
+
+describe('SignInService', () => {
+  beforeEach(() => TestBed.configureTestingModule({}));
+
+  it('should be created', () => {
+    const service: SignInService = TestBed.get(SignInService);
+    expect(service).toBeTruthy();
+  });
+});
diff --git a/client/src/app/services/auth/signin/sign-in.service.ts b/client/src/app/services/auth/signin/sign-in.service.ts
new file mode 100644
index 0000000000000000000000000000000000000000..64ac600de45623ae77179076a3be01fadeda0e08
--- /dev/null
+++ b/client/src/app/services/auth/signin/sign-in.service.ts
@@ -0,0 +1,15 @@
+import {Injectable} from '@angular/core';
+import {HttpClient} from '@angular/common/http';
+
+@Injectable({
+  providedIn: 'root'
+})
+export class SignInService {
+
+  createUser(obj: string) {
+    return this.http.post('http://localhost:7000/user/signin', obj);
+  }
+
+  constructor(private http: HttpClient) {
+  }
+}
diff --git a/client/src/app/services/auth/signin/token.service.spec.ts b/client/src/app/services/auth/signin/token.service.spec.ts
new file mode 100644
index 0000000000000000000000000000000000000000..9375546dec7e3a1f3e7b451d2b8c61f546648fe6
--- /dev/null
+++ b/client/src/app/services/auth/signin/token.service.spec.ts
@@ -0,0 +1,12 @@
+import { TestBed } from '@angular/core/testing';
+
+import { TokenService } from './token.service';
+
+describe('TokenService', () => {
+  beforeEach(() => TestBed.configureTestingModule({}));
+
+  it('should be created', () => {
+    const service: TokenService = TestBed.get(TokenService);
+    expect(service).toBeTruthy();
+  });
+});
diff --git a/client/src/app/services/auth/signin/token.service.ts b/client/src/app/services/auth/signin/token.service.ts
new file mode 100644
index 0000000000000000000000000000000000000000..60d9461b777165da8f4096a6a3171658eb94b842
--- /dev/null
+++ b/client/src/app/services/auth/signin/token.service.ts
@@ -0,0 +1,15 @@
+import {Injectable} from '@angular/core';
+import {HttpClient} from '@angular/common/http';
+
+@Injectable({
+  providedIn: 'root'
+})
+export class TokenService {
+
+  getToken() {
+    return this.http.get('http://localhost:7000/token/generate');
+  }
+
+  constructor(private http: HttpClient) {
+  }
+}
diff --git a/client/src/styles.scss b/client/src/styles.scss
index 7f7ca8724520992f877b4a0f79c93c589ba16bec..f28ad0c7c16fce2f85e4a6607286a6fe539906a6 100644
--- a/client/src/styles.scss
+++ b/client/src/styles.scss
@@ -62,3 +62,5 @@ button:focus{
 hr{
   border: 1px solid var(--color-dark-blue);
 }
+
+
diff --git a/compilation/.idea/workspace.xml b/compilation/.idea/workspace.xml
index 714e61bf531f18157adf03f92475899fb8cbf679..6c357ed1ba298443e6379c17a22b5519c0e828bd 100644
--- a/compilation/.idea/workspace.xml
+++ b/compilation/.idea/workspace.xml
@@ -2,26 +2,14 @@
 <project version="4">
   <component name="ChangeListManager">
     <list default="true" id="8d8fb2c1-8426-4933-8193-ee68625cf8de" name="Default Changelist" comment="">
-      <change beforePath="$PROJECT_DIR$/../client/src/app/component/kata/kata.component.ts" beforeDir="false" afterPath="$PROJECT_DIR$/../client/src/app/component/kata/kata.component.ts" afterDir="false" />
-      <change beforePath="$PROJECT_DIR$/../client/src/app/component/mine/mine.component.html" beforeDir="false" afterPath="$PROJECT_DIR$/../client/src/app/component/mine/mine.component.html" afterDir="false" />
-      <change beforePath="$PROJECT_DIR$/../client/src/app/component/program-displayer/card-displayer/card-displayer.component.css" beforeDir="false" afterPath="$PROJECT_DIR$/../client/src/app/component/program-displayer/card-displayer/card-displayer.component.css" afterDir="false" />
-      <change beforePath="$PROJECT_DIR$/../client/src/app/component/program-displayer/card-noneall-displayer/card-noneall-displayer.component.css" beforeDir="false" />
-      <change beforePath="$PROJECT_DIR$/../client/src/app/component/program-displayer/card-noneall-displayer/card-noneall-displayer.component.html" beforeDir="false" afterPath="$PROJECT_DIR$/../client/src/app/component/program-displayer/card-noneall-displayer/card-noneall-displayer.component.html" afterDir="false" />
-      <change beforePath="$PROJECT_DIR$/../client/src/app/component/program-displayer/card-noneall-displayer/card-noneall-displayer.component.ts" beforeDir="false" afterPath="$PROJECT_DIR$/../client/src/app/component/program-displayer/card-noneall-displayer/card-noneall-displayer.component.ts" afterDir="false" />
-      <change beforePath="$PROJECT_DIR$/../client/src/app/component/program-displayer/program-displayer.component.html" beforeDir="false" afterPath="$PROJECT_DIR$/../client/src/app/component/program-displayer/program-displayer.component.html" afterDir="false" />
-      <change beforePath="$PROJECT_DIR$/../client/src/app/component/searchby/searchby.component.html" beforeDir="false" afterPath="$PROJECT_DIR$/../client/src/app/component/searchby/searchby.component.html" afterDir="false" />
-      <change beforePath="$PROJECT_DIR$/../client/src/app/component/searchby/searchby.component.ts" beforeDir="false" afterPath="$PROJECT_DIR$/../client/src/app/component/searchby/searchby.component.ts" afterDir="false" />
-      <change beforePath="$PROJECT_DIR$/../client/src/app/component/subscription/subscription.component.html" beforeDir="false" afterPath="$PROJECT_DIR$/../client/src/app/component/subscription/subscription.component.html" afterDir="false" />
-      <change beforePath="$PROJECT_DIR$/../client/src/styles.scss" beforeDir="false" afterPath="$PROJECT_DIR$/../client/src/styles.scss" afterDir="false" />
-      <change beforePath="$PROJECT_DIR$/.idea/workspace.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/workspace.xml" afterDir="false" />
-      <change beforePath="$PROJECT_DIR$/share_docker_file/Kata.class" beforeDir="false" afterPath="$PROJECT_DIR$/share_docker_file/Kata.class" afterDir="false" />
-      <change beforePath="$PROJECT_DIR$/share_docker_file/Main.class" beforeDir="false" afterPath="$PROJECT_DIR$/share_docker_file/Main.class" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/../README.md" beforeDir="false" afterPath="$PROJECT_DIR$/../README.md" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/../client/src/app/component/kata-displayer/kata-displayer.component.html" beforeDir="false" afterPath="$PROJECT_DIR$/../client/src/app/component/kata-displayer/kata-displayer.component.html" afterDir="false" />
       <change beforePath="$PROJECT_DIR$/src/main/java/DockerCompilation.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/java/DockerCompilation.java" afterDir="false" />
       <change beforePath="$PROJECT_DIR$/../gateway/.idea/workspace.xml" beforeDir="false" afterPath="$PROJECT_DIR$/../gateway/.idea/workspace.xml" afterDir="false" />
-      <change beforePath="$PROJECT_DIR$/../gateway/src/main/java/LiveDB.java" beforeDir="false" afterPath="$PROJECT_DIR$/../gateway/src/main/java/LiveDB.java" afterDir="false" />
       <change beforePath="$PROJECT_DIR$/../gateway/src/main/java/MongoDB.java" beforeDir="false" afterPath="$PROJECT_DIR$/../gateway/src/main/java/MongoDB.java" afterDir="false" />
-      <change beforePath="$PROJECT_DIR$/../gateway/src/main/java/ProgramShowCase.java" beforeDir="false" afterPath="$PROJECT_DIR$/../gateway/src/main/java/ProgramShowCase.java" afterDir="false" />
       <change beforePath="$PROJECT_DIR$/../gateway/src/main/java/app.java" beforeDir="false" afterPath="$PROJECT_DIR$/../gateway/src/main/java/app.java" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/../gateway/target/classes/MongoDB.class" beforeDir="false" afterPath="$PROJECT_DIR$/../gateway/target/classes/MongoDB.class" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/../gateway/target/classes/app.class" beforeDir="false" afterPath="$PROJECT_DIR$/../gateway/target/classes/app.class" afterDir="false" />
     </list>
     <ignored path="$PROJECT_DIR$/out/" />
     <ignored path="$PROJECT_DIR$/target/" />
@@ -39,8 +27,8 @@
       <file pinned="false" current-in-tab="true">
         <entry file="file://$PROJECT_DIR$/src/main/java/DockerCompilation.java">
           <provider selected="true" editor-type-id="text-editor">
-            <state relative-caret-position="45">
-              <caret line="6" column="67" lean-forward="true" selection-start-line="6" selection-start-column="67" selection-end-line="6" selection-end-column="67" />
+            <state relative-caret-position="247">
+              <caret line="20" column="114" selection-start-line="20" selection-start-column="114" selection-end-line="20" selection-end-column="114" />
             </state>
           </provider>
         </entry>
@@ -80,7 +68,7 @@
       </MavenImportingSettings>
     </option>
   </component>
-  <component name="ProjectFrameBounds" fullScreen="true">
+  <component name="ProjectFrameBounds" extendedState="6" fullScreen="true">
     <option name="y" value="23" />
     <option name="width" value="1920" />
     <option name="height" value="1121" />
@@ -92,7 +80,6 @@
     </navigator>
     <panes>
       <pane id="PackagesPane" />
-      <pane id="Scope" />
       <pane id="ProjectPane">
         <subPane>
           <expand>
@@ -109,6 +96,7 @@
           <select />
         </subPane>
       </pane>
+      <pane id="Scope" />
     </panes>
   </component>
   <component name="PropertiesComponent">
@@ -208,11 +196,14 @@
       <workItem from="1557833112052" duration="420000" />
       <workItem from="1557842013256" duration="237000" />
       <workItem from="1557902518593" duration="3056000" />
+      <workItem from="1557931166779" duration="192000" />
+      <workItem from="1557988860203" duration="849000" />
+      <workItem from="1558017128365" duration="97000" />
     </task>
     <servers />
   </component>
   <component name="TimeTrackingManager">
-    <option name="totallyTimeSpent" value="40913000" />
+    <option name="totallyTimeSpent" value="42051000" />
   </component>
   <component name="TodoView">
     <todo-panel id="selected-file">
@@ -226,7 +217,7 @@
   <component name="ToolWindowManager">
     <frame x="0" y="0" width="1440" height="900" extended-state="6" />
     <layout>
-      <window_info content_ui="combo" id="Project" order="0" visible="true" weight="0.33404863" />
+      <window_info content_ui="combo" id="Project" order="0" visible="true" weight="0.3490701" />
       <window_info id="Structure" order="1" side_tool="true" weight="0.25" />
       <window_info id="Image Layers" order="2" />
       <window_info id="Designer" order="3" />
@@ -235,7 +226,7 @@
       <window_info id="Favorites" order="6" side_tool="true" />
       <window_info anchor="bottom" id="Message" order="0" />
       <window_info anchor="bottom" id="Find" order="1" weight="0.32891566" />
-      <window_info anchor="bottom" id="Run" order="2" weight="0.48795182" />
+      <window_info anchor="bottom" id="Run" order="2" weight="0.21927711" />
       <window_info anchor="bottom" id="Debug" order="3" weight="0.3987952" />
       <window_info anchor="bottom" id="Cvs" order="4" weight="0.25" />
       <window_info anchor="bottom" id="Inspection" order="5" weight="0.4" />
@@ -359,8 +350,8 @@
     <entry file="file://$PROJECT_DIR$/share_docker_file/Main.java" />
     <entry file="file://$PROJECT_DIR$/src/main/java/DockerCompilation.java">
       <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="45">
-          <caret line="6" column="67" lean-forward="true" selection-start-line="6" selection-start-column="67" selection-end-line="6" selection-end-column="67" />
+        <state relative-caret-position="247">
+          <caret line="20" column="114" selection-start-line="20" selection-start-column="114" selection-end-line="20" selection-end-column="114" />
         </state>
       </provider>
     </entry>
diff --git a/compilation/share_docker_file/Kata.class b/compilation/share_docker_file/Kata.class
index b1fa1177342df418b220cff96d8caed53c68d8e0..117730112f0014d3a78257896966d9e5bfdd28e0 100644
Binary files a/compilation/share_docker_file/Kata.class and b/compilation/share_docker_file/Kata.class differ
diff --git a/compilation/share_docker_file/__pycache__/sample.cpython-34.pyc b/compilation/share_docker_file/__pycache__/sample.cpython-34.pyc
index eee4e3510d11e77a706e8677a667da70212b8436..761d5e6c7dbaefd90fde4b7528c6b7aa017d8f2e 100644
Binary files a/compilation/share_docker_file/__pycache__/sample.cpython-34.pyc and b/compilation/share_docker_file/__pycache__/sample.cpython-34.pyc differ
diff --git a/compilation/src/main/java/DockerCompilation.java b/compilation/src/main/java/DockerCompilation.java
index 2efd38f5f0ac32aa04260f3c60c965bc758f6b4c..9518b6c330ca0f46485026e0afc027934e76d337 100644
--- a/compilation/src/main/java/DockerCompilation.java
+++ b/compilation/src/main/java/DockerCompilation.java
@@ -13,12 +13,12 @@ public class DockerCompilation {
             case "python":
                 filename = "share_docker_file/sample.py";
                 filename_test = "share_docker_file/assert.py";
-                cmd = "docker run --rm --mount type=bind,source=" + dir + "/share_docker_file,dst=/env/ python:1.0 python3 assert.py";
+                cmd = "docker run --rm --mount type=bind,source=" + dir + "/share_docker_file,dst=/env/ freakency/python:1.0 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=" + dir + "/share_docker_file,dst=/env/ java:1.0 ./java_test.sh";
+                cmd = "docker run --rm --mount type=bind,source=" + dir + "/share_docker_file,dst=/env/ freakency/java:1.0 ./java_test.sh";
                 break;
         }
 
diff --git a/compilation/target/05-1.0-SNAPSHOT.jar b/compilation/target/05-1.0-SNAPSHOT.jar
index fa2e926592bbfc6c72468ce3938fb933d01d8676..b508109229c066d7fc6c9596d60c715150eb7f78 100644
Binary files a/compilation/target/05-1.0-SNAPSHOT.jar and b/compilation/target/05-1.0-SNAPSHOT.jar differ
diff --git a/compilation/target/classes/DockerCompilation.class b/compilation/target/classes/DockerCompilation.class
index a0c134b4c750980a63932588459f4250ff42af6c..54b267b08d1c06483b7a2be98f949d3ad678dc1f 100644
Binary files a/compilation/target/classes/DockerCompilation.class and b/compilation/target/classes/DockerCompilation.class differ
diff --git a/gateway/.idea/workspace.xml b/gateway/.idea/workspace.xml
index c9f9a0aca62bfeefdfce8fc18609804a2da0ecd5..8776e03cd3f006ef5c3b2a1ef42a13175b6b61da 100644
--- a/gateway/.idea/workspace.xml
+++ b/gateway/.idea/workspace.xml
@@ -2,25 +2,12 @@
 <project version="4">
   <component name="ChangeListManager">
     <list default="true" id="e6a1f2e5-4f60-4227-82bb-83eb10fa94a5" name="Default Changelist" comment="">
-      <change beforePath="$PROJECT_DIR$/../client/src/app/component/kata/kata.component.ts" beforeDir="false" afterPath="$PROJECT_DIR$/../client/src/app/component/kata/kata.component.ts" afterDir="false" />
-      <change beforePath="$PROJECT_DIR$/../client/src/app/component/mine/mine.component.html" beforeDir="false" afterPath="$PROJECT_DIR$/../client/src/app/component/mine/mine.component.html" afterDir="false" />
-      <change beforePath="$PROJECT_DIR$/../client/src/app/component/program-displayer/card-displayer/card-displayer.component.css" beforeDir="false" afterPath="$PROJECT_DIR$/../client/src/app/component/program-displayer/card-displayer/card-displayer.component.css" afterDir="false" />
-      <change beforePath="$PROJECT_DIR$/../client/src/app/component/program-displayer/card-noneall-displayer/card-noneall-displayer.component.css" beforeDir="false" />
-      <change beforePath="$PROJECT_DIR$/../client/src/app/component/program-displayer/card-noneall-displayer/card-noneall-displayer.component.html" beforeDir="false" afterPath="$PROJECT_DIR$/../client/src/app/component/program-displayer/card-noneall-displayer/card-noneall-displayer.component.html" afterDir="false" />
-      <change beforePath="$PROJECT_DIR$/../client/src/app/component/program-displayer/card-noneall-displayer/card-noneall-displayer.component.ts" beforeDir="false" afterPath="$PROJECT_DIR$/../client/src/app/component/program-displayer/card-noneall-displayer/card-noneall-displayer.component.ts" afterDir="false" />
-      <change beforePath="$PROJECT_DIR$/../client/src/app/component/program-displayer/program-displayer.component.html" beforeDir="false" afterPath="$PROJECT_DIR$/../client/src/app/component/program-displayer/program-displayer.component.html" afterDir="false" />
-      <change beforePath="$PROJECT_DIR$/../client/src/app/component/searchby/searchby.component.html" beforeDir="false" afterPath="$PROJECT_DIR$/../client/src/app/component/searchby/searchby.component.html" afterDir="false" />
-      <change beforePath="$PROJECT_DIR$/../client/src/app/component/searchby/searchby.component.ts" beforeDir="false" afterPath="$PROJECT_DIR$/../client/src/app/component/searchby/searchby.component.ts" afterDir="false" />
-      <change beforePath="$PROJECT_DIR$/../client/src/app/component/subscription/subscription.component.html" beforeDir="false" afterPath="$PROJECT_DIR$/../client/src/app/component/subscription/subscription.component.html" afterDir="false" />
-      <change beforePath="$PROJECT_DIR$/../client/src/styles.scss" beforeDir="false" afterPath="$PROJECT_DIR$/../client/src/styles.scss" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/../README.md" beforeDir="false" afterPath="$PROJECT_DIR$/../README.md" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/../client/src/app/component/kata-displayer/kata-displayer.component.html" beforeDir="false" afterPath="$PROJECT_DIR$/../client/src/app/component/kata-displayer/kata-displayer.component.html" afterDir="false" />
       <change beforePath="$PROJECT_DIR$/../compilation/.idea/workspace.xml" beforeDir="false" afterPath="$PROJECT_DIR$/../compilation/.idea/workspace.xml" afterDir="false" />
-      <change beforePath="$PROJECT_DIR$/../compilation/share_docker_file/Kata.class" beforeDir="false" afterPath="$PROJECT_DIR$/../compilation/share_docker_file/Kata.class" afterDir="false" />
-      <change beforePath="$PROJECT_DIR$/../compilation/share_docker_file/Main.class" beforeDir="false" afterPath="$PROJECT_DIR$/../compilation/share_docker_file/Main.class" afterDir="false" />
       <change beforePath="$PROJECT_DIR$/../compilation/src/main/java/DockerCompilation.java" beforeDir="false" afterPath="$PROJECT_DIR$/../compilation/src/main/java/DockerCompilation.java" afterDir="false" />
       <change beforePath="$PROJECT_DIR$/.idea/workspace.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/workspace.xml" afterDir="false" />
-      <change beforePath="$PROJECT_DIR$/src/main/java/LiveDB.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/java/LiveDB.java" afterDir="false" />
       <change beforePath="$PROJECT_DIR$/src/main/java/MongoDB.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/java/MongoDB.java" afterDir="false" />
-      <change beforePath="$PROJECT_DIR$/src/main/java/ProgramShowCase.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/java/ProgramShowCase.java" afterDir="false" />
       <change beforePath="$PROJECT_DIR$/src/main/java/app.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/java/app.java" afterDir="false" />
     </list>
     <ignored path="$PROJECT_DIR$/out/" />
@@ -50,11 +37,11 @@
   </component>
   <component name="FileEditorManager">
     <leaf SIDE_TABS_SIZE_LIMIT_KEY="300">
-      <file pinned="false" current-in-tab="false">
+      <file pinned="false" current-in-tab="true">
         <entry file="file://$PROJECT_DIR$/src/main/java/app.java">
           <provider selected="true" editor-type-id="text-editor">
-            <state relative-caret-position="3390">
-              <caret line="226" lean-forward="true" selection-start-line="225" selection-start-column="28" selection-end-line="226" />
+            <state relative-caret-position="210">
+              <caret line="30" column="79" lean-forward="true" selection-start-line="30" selection-start-column="79" selection-end-line="30" selection-end-column="79" />
               <folding>
                 <element signature="imports" expanded="true" />
               </folding>
@@ -62,13 +49,15 @@
           </provider>
         </entry>
       </file>
-      <file pinned="false" current-in-tab="true">
+      <file pinned="false" current-in-tab="false">
         <entry file="file://$PROJECT_DIR$/src/main/java/MongoDB.java">
           <provider selected="true" editor-type-id="text-editor">
-            <state relative-caret-position="315">
-              <caret line="21" column="91" lean-forward="true" selection-start-line="21" selection-start-column="91" selection-end-line="21" selection-end-column="91" />
+            <state relative-caret-position="678">
+              <caret line="283" selection-start-line="283" selection-end-line="283" />
               <folding>
                 <element signature="imports" expanded="true" />
+                <element signature="e#12452#12453#0" expanded="true" />
+                <element signature="e#12528#12529#0" expanded="true" />
               </folding>
             </state>
           </provider>
@@ -77,17 +66,32 @@
       <file pinned="false" current-in-tab="false">
         <entry file="file://$PROJECT_DIR$/src/main/java/LiveDB.java">
           <provider selected="true" editor-type-id="text-editor">
-            <state relative-caret-position="-636">
-              <caret line="5" column="4" selection-start-line="5" selection-start-column="4" selection-end-line="5" selection-end-column="4" />
+            <state relative-caret-position="660">
+              <caret line="46" selection-start-line="46" selection-end-line="46" />
             </state>
           </provider>
         </entry>
       </file>
       <file pinned="false" current-in-tab="false">
-        <entry file="file://$PROJECT_DIR$/src/main/java/ProgramShowCase.java">
+        <entry file="file://$PROJECT_DIR$/src/main/java/MockUser.java">
           <provider selected="true" editor-type-id="text-editor">
-            <state relative-caret-position="270">
-              <caret line="18" column="8" selection-start-line="18" selection-start-column="8" selection-end-line="18" selection-end-column="8" />
+            <state relative-caret-position="150">
+              <caret line="10" column="22" selection-start-line="10" selection-start-column="22" selection-end-line="10" selection-end-column="22" />
+            </state>
+          </provider>
+        </entry>
+      </file>
+      <file pinned="false" current-in-tab="false">
+        <entry file="file://$PROJECT_DIR$/src/main/java/Program.java">
+          <provider selected="true" editor-type-id="text-editor">
+            <state relative-caret-position="45">
+              <caret line="3" column="47" selection-start-line="3" selection-start-column="42" selection-end-line="3" selection-end-column="47" />
+              <folding>
+                <element signature="e#1540#1541#0" expanded="true" />
+                <element signature="e#1571#1572#0" expanded="true" />
+                <element signature="e#1619#1620#0" expanded="true" />
+                <element signature="e#1659#1660#0" expanded="true" />
+              </folding>
             </state>
           </provider>
         </entry>
@@ -113,6 +117,7 @@
       <find>idprogram</find>
       <find>programID</find>
       <find>sea</find>
+      <find>dou</find>
     </findStrings>
   </component>
   <component name="Git.Settings">
@@ -126,17 +131,17 @@
         <option value="$PROJECT_DIR$/src/main/java/KataShowCase.java" />
         <option value="$PROJECT_DIR$/src/main/java/JWT.java" />
         <option value="$PROJECT_DIR$/src/main/java/JWToken.java" />
-        <option value="$PROJECT_DIR$/src/main/java/MockUser.java" />
         <option value="$PROJECT_DIR$/pom.xml" />
         <option value="$PROJECT_DIR$/src/main/java/Program.java" />
         <option value="$PROJECT_DIR$/src/main/java/Kata.java" />
         <option value="$PROJECT_DIR$/src/main/java/KataSubscription.java" />
         <option value="$PROJECT_DIR$/src/main/java/ProgramSubscription.java" />
+        <option value="$PROJECT_DIR$/src/main/java/ProgramShowCase.java" />
         <option value="$PROJECT_DIR$/src/main/java/ProgramsDataBase.java" />
-        <option value="$PROJECT_DIR$/src/main/java/app.java" />
         <option value="$PROJECT_DIR$/src/main/java/LiveDB.java" />
-        <option value="$PROJECT_DIR$/src/main/java/ProgramShowCase.java" />
+        <option value="$PROJECT_DIR$/src/main/java/MockUser.java" />
         <option value="$PROJECT_DIR$/src/main/java/MongoDB.java" />
+        <option value="$PROJECT_DIR$/src/main/java/app.java" />
       </list>
     </option>
   </component>
@@ -178,39 +183,7 @@
     <navigator proportions="" version="1">
       <foldersAlwaysOnTop value="true" />
     </navigator>
-    <panes>
-      <pane id="ProjectPane">
-        <subPane>
-          <expand>
-            <path>
-              <item name="gateway" type="b2602c69:ProjectViewProjectNode" />
-              <item name="gateway" type="462c0819:PsiDirectoryNode" />
-            </path>
-            <path>
-              <item name="gateway" type="b2602c69:ProjectViewProjectNode" />
-              <item name="gateway" type="462c0819:PsiDirectoryNode" />
-              <item name="src" type="462c0819:PsiDirectoryNode" />
-            </path>
-            <path>
-              <item name="gateway" type="b2602c69:ProjectViewProjectNode" />
-              <item name="gateway" type="462c0819:PsiDirectoryNode" />
-              <item name="src" type="462c0819:PsiDirectoryNode" />
-              <item name="main" type="462c0819:PsiDirectoryNode" />
-            </path>
-            <path>
-              <item name="gateway" type="b2602c69:ProjectViewProjectNode" />
-              <item name="gateway" type="462c0819:PsiDirectoryNode" />
-              <item name="src" type="462c0819:PsiDirectoryNode" />
-              <item name="main" type="462c0819:PsiDirectoryNode" />
-              <item name="java" type="462c0819:PsiDirectoryNode" />
-            </path>
-          </expand>
-          <select />
-        </subPane>
-      </pane>
-      <pane id="PackagesPane" />
-      <pane id="Scope" />
-    </panes>
+    <panes />
   </component>
   <component name="PropertiesComponent">
     <property name="ASKED_SHARE_PROJECT_CONFIGURATION_FILES" value="true" />
@@ -294,11 +267,14 @@
       <workItem from="1557833110452" duration="1791000" />
       <workItem from="1557842011080" duration="239000" />
       <workItem from="1557902516521" duration="5257000" />
+      <workItem from="1557931164526" duration="197000" />
+      <workItem from="1557988857639" duration="10612000" />
+      <workItem from="1558017000960" duration="198000" />
     </task>
     <servers />
   </component>
   <component name="TimeTrackingManager">
-    <option name="totallyTimeSpent" value="126009000" />
+    <option name="totallyTimeSpent" value="137016000" />
   </component>
   <component name="TodoView">
     <todo-panel id="selected-file">
@@ -313,7 +289,7 @@
     <frame x="0" y="0" width="1440" height="900" extended-state="0" />
     <editor active="true" />
     <layout>
-      <window_info content_ui="combo" id="Project" order="0" sideWeight="0.49924126" visible="true" weight="0.17596567" />
+      <window_info content_ui="combo" id="Project" order="0" sideWeight="0.49924126" weight="0.18025751" />
       <window_info id="Structure" order="1" sideWeight="0.5007587" side_tool="true" weight="0.20127796" />
       <window_info id="Image Layers" order="2" />
       <window_info id="Designer" order="3" />
@@ -352,84 +328,68 @@
       <breakpoints>
         <line-breakpoint enabled="true" type="java-line">
           <url>file://$PROJECT_DIR$/src/main/java/MongoDB.java</url>
-          <line>253</line>
-          <properties />
-          <option name="timeStamp" value="1" />
-        </line-breakpoint>
-        <line-breakpoint enabled="true" type="java-line">
-          <url>file://$PROJECT_DIR$/src/main/java/MongoDB.java</url>
-          <line>105</line>
+          <line>213</line>
           <properties />
-          <option name="timeStamp" value="2" />
+          <option name="timeStamp" value="8" />
         </line-breakpoint>
         <line-breakpoint enabled="true" type="java-line">
           <url>file://$PROJECT_DIR$/src/main/java/MongoDB.java</url>
-          <line>98</line>
+          <line>201</line>
           <properties />
-          <option name="timeStamp" value="3" />
+          <option name="timeStamp" value="9" />
         </line-breakpoint>
       </breakpoints>
     </breakpoint-manager>
-    <watches-manager>
-      <configuration name="Application">
-        <watch expression=" database.getCollection(&quot;ProgramsSubscription&quot;, ProgramSubscription.class).find(combine(eq(&quot;iduser&quot;, userid), eq(&quot;idprogram&quot;, programid))).first()" language="JAVA" />
-        <watch expression="database.getCollection(&quot;ProgramsSubscription&quot;, ProgramSubscription.class).find(combine(eq(&quot;iduser&quot;, userid), eq(&quot;idprogram&quot;, programid))).projection(include(&quot;katas&quot;)).first()" language="JAVA" />
-        <watch expression="programs.updateOne(combine(eq(&quot;iduser&quot;, userid), eq(&quot;idprogram&quot;, programid)), inc(&quot;nbKataDone&quot;, 1))" />
-        <watch expression="programs.find(combine(eq(&quot;iduser&quot;,userid),eq(&quot;idprogram&quot;,programid))).first().getNbKataDone()" language="JAVA" />
-        <watch expression="programs.find(combine(eq(&quot;iduser&quot;, userid), eq(&quot;idprogram&quot;, programid))).first()" />
-        <watch expression="x.getNbKataDone()" />
-      </configuration>
-    </watches-manager>
   </component>
   <component name="debuggerHistoryManager">
     <expressions id="watch">
       <expression>
-        <expression-string>programs.find(combine(eq(&quot;iduser&quot;,userid),eq(&quot;idprogram&quot;,programid))).first().getNbKataDone()</expression-string>
+        <expression-string>p.getKatas().contains(kataid)</expression-string>
         <language-id>JAVA</language-id>
         <evaluation-mode>EXPRESSION</evaluation-mode>
       </expression>
       <expression>
-        <expression-string>programs.find(combine(eq(&quot;iduser&quot;,userid),eq(&quot;idprogram&quot;,programid)))</expression-string>
+        <expression-string>p.getKatas().get(&quot;id&quot;,&quot;0&quot;);</expression-string>
         <language-id>JAVA</language-id>
         <evaluation-mode>EXPRESSION</evaluation-mode>
       </expression>
       <expression>
-        <expression-string>database.getCollection(&quot;ProgramsSubscription&quot;, ProgramSubscription.class).find(combine(eq(&quot;iduser&quot;, userid), eq(&quot;idprogram&quot;, programid))).projection(include(&quot;katas&quot;)).first()</expression-string>
+        <expression-string>database.getCollection(&quot;ProgramsSubscription&quot;, ProgramSubscription.class).find(combine(eq(&quot;iduser&quot;, userid), eq(&quot;idprogram&quot;, programid), eq(&quot;status&quot;, true),elemMatch(&quot;katas&quot;,Do) ))).first()</expression-string>
         <language-id>JAVA</language-id>
         <evaluation-mode>EXPRESSION</evaluation-mode>
       </expression>
       <expression>
-        <expression-string>database.getCollection(&quot;ProgramsSubscription&quot;, ProgramSubscription.class).find(combine(eq(&quot;iduser&quot;, userid), eq(&quot;idprogram&quot;, programid))).first()</expression-string>
+        <expression-string>database.getCollection(&quot;ProgramsSubscription&quot;, ProgramSubscription.class).find(combine(eq(&quot;iduser&quot;, userid), eq(&quot;idprogram&quot;, programid), eq(&quot;status&quot;, true),elemMatch(&quot;katas&quot;,Document.parse(kataid) ))).first()</expression-string>
         <language-id>JAVA</language-id>
         <evaluation-mode>EXPRESSION</evaluation-mode>
       </expression>
       <expression>
-        <expression-string>database.getCollection(&quot;ProgramsSubscription&quot;, ProgramSubscription.class).find(combine(eq(&quot;iduser&quot;, userid), eq(&quot;idprogram&quot;, programid))).firs</expression-string>
+        <expression-string>database.getCollection(&quot;ProgramsSubscription&quot;, ProgramSubscription.class).find(combine(eq(&quot;iduser&quot;, userid), eq(&quot;idprogram&quot;, programid), eq(&quot;status&quot;, true),elemMatch(&quot;katas._id&quot;,kataid ))).first()</expression-string>
         <language-id>JAVA</language-id>
         <evaluation-mode>EXPRESSION</evaluation-mode>
       </expression>
       <expression>
-        <expression-string>database.getCollection(&quot;ProgramsSubscription&quot;, ProgramSubscription.class).find(combine(eq(&quot;iduser&quot;, userid), eq(&quot;idprogram&quot;, programid))).first().getKatas()</expression-string>
+        <expression-string>database.getCollection(&quot;ProgramsSubscription&quot;, ProgramSubscription.class).find(combine(eq(&quot;iduser&quot;, userid), eq(&quot;idprogram&quot;, programid), eq(&quot;status&quot;, true),eq(&quot;katas.1._id&quot;,kataid ))).first()</expression-string>
         <language-id>JAVA</language-id>
         <evaluation-mode>EXPRESSION</evaluation-mode>
       </expression>
       <expression>
-        <expression-string>database.getCollection(&quot;ProgramsSubscription&quot;, ProgramSubscription.class).find(combine(eq(&quot;iduser&quot;, userid), eq(&quot;idprogram&quot;, programid))).first().getKatas();</expression-string>
+        <expression-string>database.getCollection(&quot;ProgramsSubscription&quot;, ProgramSubscription.class).find(combine(eq(&quot;iduser&quot;, userid), eq(&quot;idprogram&quot;, programid), eq(&quot;status&quot;, true),eq(&quot;katas.0._id&quot;,kataid ))).first()</expression-string>
         <language-id>JAVA</language-id>
         <evaluation-mode>EXPRESSION</evaluation-mode>
       </expression>
       <expression>
-        <expression-string>database.getCollection(&quot;ProgramsSubscription&quot;, ProgramSubscription.class).find(combine(eq(&quot;iduser&quot;, userid), eq(&quot;idprogram&quot;, programid))).projection(include(&quot;katas&quot;)).first();</expression-string>
+        <expression-string>database.getCollection(&quot;ProgramsSubscription&quot;, ProgramSubscription.class).find(combine(eq(&quot;iduser&quot;, userid), eq(&quot;idprogram&quot;, programid), eq(&quot;status&quot;, true),eq(&quot;katas._id&quot;,kataid ))).first()</expression-string>
         <language-id>JAVA</language-id>
         <evaluation-mode>EXPRESSION</evaluation-mode>
       </expression>
       <expression>
-        <expression-string>database.getCollection(&quot;ProgramsSubscription&quot;, ProgramSubscription.class).find(combine(eq(&quot;iduser&quot;, userid), eq(&quot;idprogram&quot;, programid))).projection(include(&quot;idprogram&quot;)).first()</expression-string>
+        <expression-string>database.getCollection(&quot;ProgramsSubscription&quot;, ProgramSubscription.class).find(combine(eq(&quot;iduser&quot;, userid), eq(&quot;idprogram&quot;, programid), eq(&quot;status&quot;, true),eq(&quot;katas.id&quot;,kataid ))).first()</expression-string>
         <language-id>JAVA</language-id>
         <evaluation-mode>EXPRESSION</evaluation-mode>
       </expression>
       <expression>
-        <expression-string>database.getCollection(&quot;ProgramsSubscription&quot;, ProgramSubscription.class).find(combine(eq(&quot;iduser&quot;, userid), eq(&quot;status&quot;, true))).projection(include(&quot;idprogram&quot;)).first()</expression-string>
+        <expression-string>database.getCollection(&quot;ProgramsSubscription&quot;, ProgramSubscription.class).find(combine(eq(&quot;iduser&quot;, userid), eq(&quot;idprogram&quot;, programid))).first()</expression-string>
         <language-id>JAVA</language-id>
         <evaluation-mode>EXPRESSION</evaluation-mode>
       </expression>
@@ -452,13 +412,6 @@
       </provider>
     </entry>
     <entry file="file://$PROJECT_DIR$/src/main/java/JWToken.java" />
-    <entry file="file://$PROJECT_DIR$/src/main/java/MockUser.java">
-      <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="90">
-          <caret line="6" column="16" selection-start-line="6" selection-start-column="16" selection-end-line="6" selection-end-column="16" />
-        </state>
-      </provider>
-    </entry>
     <entry file="file://$PROJECT_DIR$/pom.xml">
       <provider selected="true" editor-type-id="text-editor">
         <state relative-caret-position="455">
@@ -491,33 +444,6 @@
         </state>
       </provider>
     </entry>
-    <entry file="file://$PROJECT_DIR$/src/main/java/KataSubscription.java">
-      <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="75">
-          <caret line="5" column="26" selection-start-line="5" selection-start-column="24" selection-end-line="5" selection-end-column="26" />
-        </state>
-      </provider>
-    </entry>
-    <entry file="file://$PROJECT_DIR$/src/main/java/Program.java">
-      <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="45">
-          <caret line="3" column="47" selection-start-line="3" selection-start-column="42" selection-end-line="3" selection-end-column="47" />
-          <folding>
-            <element signature="e#1540#1541#0" expanded="true" />
-            <element signature="e#1571#1572#0" expanded="true" />
-            <element signature="e#1619#1620#0" expanded="true" />
-            <element signature="e#1659#1660#0" expanded="true" />
-          </folding>
-        </state>
-      </provider>
-    </entry>
-    <entry file="file://$PROJECT_DIR$/src/main/java/ProgramsDataBase.java">
-      <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="455">
-          <caret line="37" column="20" selection-start-line="37" selection-start-column="20" selection-end-line="37" selection-end-column="20" />
-        </state>
-      </provider>
-    </entry>
     <entry file="file://$PROJECT_DIR$/src/main/java/ProgramSubscription.java">
       <provider selected="true" editor-type-id="text-editor">
         <state relative-caret-position="165">
@@ -540,34 +466,92 @@
         </state>
       </provider>
     </entry>
-    <entry file="file://$PROJECT_DIR$/src/main/java/app.java">
+    <entry file="file://$PROJECT_DIR$/src/main/java/ProgramShowCase.java">
       <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="3390">
-          <caret line="226" lean-forward="true" selection-start-line="225" selection-start-column="28" selection-end-line="226" />
-          <folding>
-            <element signature="imports" expanded="true" />
-          </folding>
+        <state>
+          <caret column="27" lean-forward="true" selection-start-column="27" selection-end-column="27" />
+        </state>
+      </provider>
+    </entry>
+    <entry file="file://$PROJECT_DIR$/src/main/java/ProgramsDataBase.java">
+      <provider selected="true" editor-type-id="text-editor">
+        <state relative-caret-position="425">
+          <caret line="43" column="20" selection-start-line="43" selection-start-column="20" selection-end-line="43" selection-end-column="20" />
+        </state>
+      </provider>
+    </entry>
+    <entry file="file://$PROJECT_DIR$/src/main/java/KataSubscription.java">
+      <provider selected="true" editor-type-id="text-editor">
+        <state relative-caret-position="75">
+          <caret line="5" column="26" selection-start-line="5" selection-start-column="24" selection-end-line="5" selection-end-column="26" />
         </state>
       </provider>
     </entry>
     <entry file="file://$PROJECT_DIR$/src/main/java/LiveDB.java">
       <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="-636">
-          <caret line="5" column="4" selection-start-line="5" selection-start-column="4" selection-end-line="5" selection-end-column="4" />
+        <state relative-caret-position="660">
+          <caret line="46" selection-start-line="46" selection-end-line="46" />
         </state>
       </provider>
     </entry>
-    <entry file="file://$PROJECT_DIR$/src/main/java/ProgramShowCase.java">
+    <entry file="file://$PROJECT_DIR$/src/main/java/MockUser.java">
       <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="270">
-          <caret line="18" column="8" selection-start-line="18" selection-start-column="8" selection-end-line="18" selection-end-column="8" />
+        <state relative-caret-position="150">
+          <caret line="10" column="22" selection-start-line="10" selection-start-column="22" selection-end-line="10" selection-end-column="22" />
+          <folding>
+            <element signature="e#98#99#0" expanded="true" />
+            <element signature="e#123#124#0" expanded="true" />
+            <element signature="e#159#160#0" expanded="true" />
+            <element signature="e#187#188#0" expanded="true" />
+            <element signature="e#217#218#0" expanded="true" />
+            <element signature="e#243#244#0" expanded="true" />
+            <element signature="e#281#282#0" expanded="true" />
+            <element signature="e#311#312#0" expanded="true" />
+            <element signature="e#476#477#0" expanded="true" />
+            <element signature="e#507#508#0" expanded="true" />
+            <element signature="e#555#556#0" expanded="true" />
+            <element signature="e#595#596#0" expanded="true" />
+            <element signature="e#627#628#0" expanded="true" />
+            <element signature="e#655#656#0" expanded="true" />
+            <element signature="e#697#698#0" expanded="true" />
+            <element signature="e#731#732#0" expanded="true" />
+            <element signature="e#646#647#0" expanded="true" />
+            <element signature="e#677#678#0" expanded="true" />
+            <element signature="e#725#726#0" expanded="true" />
+            <element signature="e#765#766#0" expanded="true" />
+          </folding>
+        </state>
+      </provider>
+    </entry>
+    <entry file="file://$PROJECT_DIR$/src/main/java/Program.java">
+      <provider selected="true" editor-type-id="text-editor">
+        <state relative-caret-position="45">
+          <caret line="3" column="47" selection-start-line="3" selection-start-column="42" selection-end-line="3" selection-end-column="47" />
+          <folding>
+            <element signature="e#1540#1541#0" expanded="true" />
+            <element signature="e#1571#1572#0" expanded="true" />
+            <element signature="e#1619#1620#0" expanded="true" />
+            <element signature="e#1659#1660#0" expanded="true" />
+          </folding>
         </state>
       </provider>
     </entry>
     <entry file="file://$PROJECT_DIR$/src/main/java/MongoDB.java">
       <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="315">
-          <caret line="21" column="91" lean-forward="true" selection-start-line="21" selection-start-column="91" selection-end-line="21" selection-end-column="91" />
+        <state relative-caret-position="678">
+          <caret line="283" selection-start-line="283" selection-end-line="283" />
+          <folding>
+            <element signature="imports" expanded="true" />
+            <element signature="e#12452#12453#0" expanded="true" />
+            <element signature="e#12528#12529#0" expanded="true" />
+          </folding>
+        </state>
+      </provider>
+    </entry>
+    <entry file="file://$PROJECT_DIR$/src/main/java/app.java">
+      <provider selected="true" editor-type-id="text-editor">
+        <state relative-caret-position="210">
+          <caret line="30" column="79" lean-forward="true" selection-start-line="30" selection-start-column="79" selection-end-line="30" selection-end-column="79" />
           <folding>
             <element signature="imports" expanded="true" />
           </folding>
diff --git a/gateway/src/main/java/LiveDB.java b/gateway/src/main/java/LiveDB.java
index 798101b6fd638727eed22ef5b84e0d8b0b83eff8..b9a7c4ef0d761f9b3b53332f147f829cbf9733f1 100644
--- a/gateway/src/main/java/LiveDB.java
+++ b/gateway/src/main/java/LiveDB.java
@@ -133,5 +133,20 @@ public class LiveDB extends ProgramsDataBase {
 
     }
 
+    @Override
+    public void createUser(MockUser u) {
+
+    }
+
+    @Override
+    public MockUser checkUser(String username, String password) {
+        return null;
+    }
+
+    @Override
+    public boolean doUserExists(String username) {
+        return false;
+    }
+
 
 }
\ No newline at end of file
diff --git a/gateway/src/main/java/MockUser.java b/gateway/src/main/java/MockUser.java
index 2c8565fa582ba7bea9f2a2e310a3eb00607f0f6a..7812029403afb5c1376dd2e4852c410fbcdf96ba 100644
--- a/gateway/src/main/java/MockUser.java
+++ b/gateway/src/main/java/MockUser.java
@@ -1,13 +1,54 @@
 public class MockUser {
-    int id;
-    String name;
-    String password;
-    String level;
+    private String id, _id, username, password, level;
 
-    MockUser(int id, String name, String level,String password) {
+    public MockUser(String id, String username, String level,String password) {
         this.id = id;
-        this.name = name;
+        this.username = username;
         this.level = level;
         this.password = password;
     }
+
+    public MockUser(){}
+
+    public String getId() {
+        return id;
+    }
+
+    public void setId(String id) {
+        this.id = id;
+    }
+
+    public String get_id() {
+        return _id;
+    }
+
+    public void set_id(String _id) {
+        this._id = _id;
+    }
+
+    public String getPassword() {
+        return password;
+    }
+
+    public void setPassword(String password) {
+        this.password = password;
+    }
+
+    public String getLevel() {
+        return level;
+    }
+
+    public void setLevel(String level) {
+        this.level = level;
+    }
+
+    public String getUsername() {
+        return username;
+    }
+
+    public void setUsername(String username) {
+        this.username = username;
+    }
+
+
 }
\ No newline at end of file
diff --git a/gateway/src/main/java/MongoDB.java b/gateway/src/main/java/MongoDB.java
index 8ee3a84a0542f4d1b00be3f5f33e042f6f57934e..da0e2ab312d3f2b3536ffacb4e267ce5a87685e0 100644
--- a/gateway/src/main/java/MongoDB.java
+++ b/gateway/src/main/java/MongoDB.java
@@ -28,6 +28,10 @@ public class MongoDB extends ProgramsDataBase {
         this.database = mongoClient.getDatabase("DojoHepia");
         database.getCollection("Programs").createIndex(Indexes.ascending("title"));
 
+        if (!doUserExists("shodai")) {
+            createUser(new MockUser("0", "shodai", "shodai", "d033e22ae348aeb5660fc2140aec35850c4da997"));
+        }
+
     }
 
     public void createProgram(Program prg) {
@@ -46,12 +50,9 @@ public class MongoDB extends ProgramsDataBase {
     public ArrayList<ProgramShowCase> getProgramsDetails() {
         ArrayList<ProgramShowCase> p = new ArrayList<>();
         MongoCollection<Program> programs = database.getCollection("Programs", Program.class);
-        MongoCollection<ProgramSubscription> programSubs = database.getCollection("ProgramsSubscription", ProgramSubscription.class);
-
-        for (Program prg : programs.find()) {
 
+        for (Program prg : programs.find())
             p.add(new ProgramShowCase(prg.getTitle(), prg.getSensei(), prg.getLanguage(), prg.getDescription(), prg.getNbKata(), prg.getTags(), prg.getId()));
-        }
 
         return p;
     }
@@ -193,13 +194,16 @@ public class MongoDB extends ProgramsDataBase {
     }
 
     public KataSubscription getKataSubscriptionByID(String kataid, String programid, String userid) {
-
+/*
+        ProgramSubscription p = database.getCollection("ProgramsSubscription", ProgramSubscription.class).find(combine(eq("iduser", userid), eq("idprogram", programid), eq("status", true),eq("katas._id",kataid ))).filter(();
+        return p == null ? new KataSubscription() : p.getKatas().get(0);
+  */
         ProgramSubscription s = database.getCollection("ProgramsSubscription", ProgramSubscription.class).find(combine(eq("iduser", userid), eq("idprogram", programid), eq("status", true))).projection(include("katas")).first();
-
         if (s == null) {
             return new KataSubscription();
         } else
             for (KataSubscription k : s.getKatas()) {
+
                 if (k.getId().equals(kataid))
                     return k;
             }
@@ -258,12 +262,23 @@ public class MongoDB extends ProgramsDataBase {
         database.getCollection("Programs", Program.class).deleteMany(eq("_id", programid));
         database.getCollection("ProgramsSubscription", ProgramSubscription.class).deleteMany(eq("idprogram", programid));
     }
-/*
-    public void deletekatas(String kataid, String programid){
 
-        database.getCollection("ProgramsSubscription",ProgramSubscription.class).deleteMany();//
-        database.getCollection("Programs",Program.class).deleteMany(eq("_id",programid));
+    public void createUser(MockUser u) {
+        database.getCollection("Users", MockUser.class).insertOne(u);
+    }
+
+    public MockUser checkUser(String username, String password) {
+        MockUser u = database.getCollection("Users", MockUser.class).find(combine(eq("username", username), eq("password", password))).first();
+        if (u == null)
+            return null;
+        return u;
+    }
+
+    public boolean doUserExists(String username) {
+        MockUser u = database.getCollection("Users", MockUser.class).find(eq("username", username)).first();
+        if (u == null)
+            return false;
+        return true;
     }
-*/
 
 }
diff --git a/gateway/src/main/java/ProgramsDataBase.java b/gateway/src/main/java/ProgramsDataBase.java
index ed19c3071363a0d50df00fd481354553e8cff93b..79301b4f9d97c0b39e9bfdf7acab8ffaf8c45dfd 100644
--- a/gateway/src/main/java/ProgramsDataBase.java
+++ b/gateway/src/main/java/ProgramsDataBase.java
@@ -37,4 +37,10 @@ public abstract class ProgramsDataBase {
 
     public abstract void deleteProgram(String programid);
 
+    public abstract void createUser(MockUser u);
+
+    public abstract MockUser checkUser(String username, String password);
+
+    public abstract boolean doUserExists(String username);
+
 }
diff --git a/gateway/src/main/java/app.java b/gateway/src/main/java/app.java
index 373455079a89017909cf27004b28b7377b67e56e..4fe36aab1b0475b2ef9f1f1548a325993d0e6612 100644
--- a/gateway/src/main/java/app.java
+++ b/gateway/src/main/java/app.java
@@ -2,6 +2,8 @@ import com.auth0.jwt.JWT;
 import com.auth0.jwt.JWTCreator;
 import com.auth0.jwt.JWTVerifier;
 import com.auth0.jwt.algorithms.Algorithm;
+import com.auth0.jwt.exceptions.JWTVerificationException;
+import com.auth0.jwt.interfaces.DecodedJWT;
 import com.fasterxml.jackson.databind.ObjectMapper;
 import io.javalin.Context;
 import io.javalin.Handler;
@@ -18,6 +20,7 @@ import java.net.ConnectException;
 import java.net.HttpURLConnection;
 import java.net.URL;
 import java.util.ArrayList;
+import java.util.Date;
 import java.util.HashMap;
 import java.util.Map;
 
@@ -49,6 +52,7 @@ public class app {
 
     /**
      * Entry point of the gateway, no args needed
+     *
      * @param args - Not needed
      */
     public static void main(String[] args) {
@@ -60,19 +64,16 @@ public class app {
         // It generates a token based on user's name and his level
         JWTGenerator<MockUser> generator = (user, alg) -> {
             JWTCreator.Builder token = JWT.create()
-                    .withClaim("username", user.name)
-                    .withClaim("level", user.level);
+                    .withClaim("username", user.getUsername())
+                    .withClaim("level", user.getLevel())
+                    .withClaim("exp", new Date());
             return token.sign(alg);
         };
 
-        JWTVerifier verifier = JWT.require(algorithm).build();
+        // Make the token expire after six days
+        JWTVerifier verifier = JWT.require(algorithm).acceptExpiresAt(518400).build();
         JWTProvider provider = new JWTProvider(algorithm, generator, verifier);
 
-        // Mock list of users - Temporary
-        users.add(new MockUser(0, "monji", "monji", "monji"));
-        users.add(new MockUser(1, "shodai", "shodai", "shodai"));
-        users.add(new MockUser(2, "sensei", "sensei", "sensei"));
-
         // Decoder Handler
         Handler decodeHandler = JavalinJWT.createHeaderDecodeHandler(provider);
 
@@ -176,10 +177,10 @@ public class app {
             ctx.status(200);
         }, roles(Roles.SHODAI, Roles.SENSEI));
 
-        app.post("program/delete",ctx -> {
+        app.post("program/delete", ctx -> {
             db.deleteProgram(new JSONObject(ctx.body()).getString("programid"));
             ctx.status(200);
-        },roles(Roles.SHODAI, Roles.SENSEI));
+        }, roles(Roles.SHODAI, Roles.SENSEI));
 
         /******************/
 
@@ -187,7 +188,7 @@ public class app {
         /** KATAS **/
 
         app.get("/program/getkatas/details/:id/:userid", ctx -> {
-            ArrayList<KataShowCase> ktsc = db.getProgramKatasDetails(ctx.pathParam("id"),ctx.pathParam("userid"));
+            ArrayList<KataShowCase> ktsc = db.getProgramKatasDetails(ctx.pathParam("id"), ctx.pathParam("userid"));
             ctx.json(ktsc);
         }, roles(Roles.SHODAI, Roles.SENSEI, Roles.MONJI));
 
@@ -205,16 +206,17 @@ public class app {
         /** USER **/
 
         app.post("jwt/request/", ctx -> {
-            MockUser u = checkUser(ctx);
+            JSONObject ids = new JSONObject(ctx.body());
+            MockUser u = db.checkUser(ids.getString("username"), ids.getString("password"));
 
             if (!(u == null)) {
                 String token = provider.generateToken(u);
 
                 HashMap<String, String> p = new HashMap<>();
-                p.put("id", String.valueOf(u.id));
-                p.put("username", u.name);
+                p.put("id", String.valueOf(u.getId()));
+                p.put("username", u.getUsername());
                 p.put("token", token);
-                p.put("role", u.level);
+                p.put("role", u.getLevel());
 
                 ctx.json(p);
             } else {
@@ -318,20 +320,51 @@ public class app {
 
         app.post("kata/update/subscription", ctx -> {
             JSONObject obj = new JSONObject(ctx.body());
-            db.updateKataSubscription(obj.getString("kataid"), obj.getString("programid"), obj.getString("userid"), obj.getString("sol"),obj.getString("status"));
+            db.updateKataSubscription(obj.getString("kataid"), obj.getString("programid"), obj.getString("userid"), obj.getString("sol"), obj.getString("status"));
             ctx.status(200);
         }, roles(Roles.SHODAI, Roles.SENSEI, Roles.MONJI));
 
         /******************/
-    }
 
+        /** SIGN IN **/
 
-    public static MockUser checkUser(Context ctx) {
-        JSONObject ids = new JSONObject(ctx.body());
+        app.get("token/generate", ctx -> {
+            Algorithm algotoken = Algorithm.HMAC256("tochange");
+            String token = JWT.create()
+                    .withClaim("exp", new Date())
+                    .sign(algotoken);
+            ctx.json(token);
+        }, roles(Roles.SHODAI, Roles.SENSEI));
 
-        for (MockUser u : users)
-            if (u.name.equals(ids.get("username")) && u.password.equals(ids.get("password")))
-                return u;
-        return null;
+        app.post("user/signin", ctx -> {
+            JSONObject input = new JSONObject(ctx.body());
+            String username = input.getString("username");
+            String password = input.getString("password");
+            String id = input.getString("id");
+            if (db.doUserExists(username)) {
+                ctx.status(400).json("Username '" + username + "' already exists");
+            } else {
+                if (!input.get("token").equals("")) {
+                    try {
+                        Algorithm algotoken = Algorithm.HMAC256("tochange");
+                        JWTVerifier checker = JWT.require(algotoken)
+                                .acceptExpiresAt(600)
+                                .build(); //Reusable verifier instance
+
+                        checker.verify(input.getString("token"));
+                        db.createUser(new MockUser(id, username, "sensei", password));
+                        ctx.status(200);
+                    } catch (JWTVerificationException exception) {
+                        ctx.status(400).json("Bad token");
+                    }
+                } else {
+                    db.createUser(new MockUser(id, username, "monji", password));
+                    ctx.status(200);
+                }
+
+            }
+        }, roles(Roles.ANYONE));
+        /******************/
     }
+
 }
diff --git a/gateway/target/09-1.0-SNAPSHOT.jar b/gateway/target/09-1.0-SNAPSHOT.jar
index 2381c521d3c4ad868ed9777c4c7c1c8c4722fa86..9ed8e5c63cf7a440aa386fbacf7424762c6a33e6 100644
Binary files a/gateway/target/09-1.0-SNAPSHOT.jar and b/gateway/target/09-1.0-SNAPSHOT.jar differ
diff --git a/gateway/target/classes/LiveDB.class b/gateway/target/classes/LiveDB.class
index 41cad6a6f656cdda2c19b807d166106c265dbd21..13dceb1079bf4734755c0d11c47764b7e20d4f1e 100644
Binary files a/gateway/target/classes/LiveDB.class and b/gateway/target/classes/LiveDB.class differ
diff --git a/gateway/target/classes/MockUser.class b/gateway/target/classes/MockUser.class
index 8f9dff4d0fbf1e8dc569af3217c1cacd4419f244..5233ab9cfe462ae704441d3d485c0accd79cf37d 100644
Binary files a/gateway/target/classes/MockUser.class and b/gateway/target/classes/MockUser.class differ
diff --git a/gateway/target/classes/MongoDB.class b/gateway/target/classes/MongoDB.class
index c75c8ccfa3ebbe95ace5f6f6b368b7b320e1002c..1690a6899501e0268151c890ff7c34d612d72f28 100644
Binary files a/gateway/target/classes/MongoDB.class and b/gateway/target/classes/MongoDB.class differ
diff --git a/gateway/target/classes/ProgramsDataBase.class b/gateway/target/classes/ProgramsDataBase.class
index 73f4ea12c0f3cc9e2e19df185b957496eab9d782..c0c01999d9fd0e6dc77addece7c813460d8734a8 100644
Binary files a/gateway/target/classes/ProgramsDataBase.class and b/gateway/target/classes/ProgramsDataBase.class differ
diff --git a/gateway/target/classes/app$Roles.class b/gateway/target/classes/app$Roles.class
index 7fd0a8d175306585e897c571a1a78fb67665262c..4b64a05c7994775255726b2a5f9f6333e54f31cb 100644
Binary files a/gateway/target/classes/app$Roles.class and b/gateway/target/classes/app$Roles.class differ
diff --git a/gateway/target/classes/app.class b/gateway/target/classes/app.class
index 15cacf490efeb00aa9c56d5dbd249490e3bf7e1f..193a5635f2f7ac70e9b641ac1133076d2fe073d1 100644
Binary files a/gateway/target/classes/app.class and b/gateway/target/classes/app.class differ
diff --git a/gateway/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst b/gateway/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst
index e8545315b0608c56cb3421477889a560d1624f53..629da2976ca4cd6cc0c3261470fbab857b313dc5 100644
--- a/gateway/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst
+++ b/gateway/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst
@@ -1,7 +1,11 @@
+/Users/freak/Desktop/dojo-hepia/gateway/src/main/java/MockUser.java
+/Users/freak/Desktop/dojo-hepia/gateway/src/main/java/KataSubscription.java
 /Users/freak/Desktop/dojo-hepia/gateway/src/main/java/KataShowCase.java
 /Users/freak/Desktop/dojo-hepia/gateway/src/main/java/ProgramShowCase.java
 /Users/freak/Desktop/dojo-hepia/gateway/src/main/java/Program.java
+/Users/freak/Desktop/dojo-hepia/gateway/src/main/java/ProgramSubscription.java
 /Users/freak/Desktop/dojo-hepia/gateway/src/main/java/app.java
 /Users/freak/Desktop/dojo-hepia/gateway/src/main/java/LiveDB.java
 /Users/freak/Desktop/dojo-hepia/gateway/src/main/java/Kata.java
+/Users/freak/Desktop/dojo-hepia/gateway/src/main/java/MongoDB.java
 /Users/freak/Desktop/dojo-hepia/gateway/src/main/java/ProgramsDataBase.java
diff --git a/mongodb/data/programssubscriptions b/mongodb/data/deprecated-programssubscriptions
similarity index 100%
rename from mongodb/data/programssubscriptions
rename to mongodb/data/deprecated-programssubscriptions
diff --git a/mongodb/data/programs b/mongodb/data/programs
index 5645e090c719a09ac91c7424d24ad4d728d20d76..c5b23392504c91e38cecd18b4d21e0f38bc5e55c 100644
--- a/mongodb/data/programs
+++ b/mongodb/data/programs
@@ -1 +1 @@
-[{"_id":"baac03de-2816-470e-8789-3c10b438364f","description":"Let's play with arrays in python !","idsensei":"1","katas":[{"_id":"41ea64c1-0711-46a8-aece-fae593283ad1","canva":"def add(arr,m):","cassert":"from assertpy import assert_that\nimport sample as m\n\nassert_that(m.add([2,3,4],3)).is_equal_to([2,3,4,3])","difficulty":"Ceinture blanche","keepAssert":false,"language":"python","nbAttempt":3,"programID":"baac03de-2816-470e-8789-3c10b438364f","rules":"Add the given element to the given array\n\nexemple :\nafter you've added the number '3' to the array [2,3,4], it becomes [2,3,4,3]","solution":"def add(arr,m):\n    arr.append(m)\n    return arr","title":"Add element"},{"_id":"55501e10-12fe-446f-aea1-2d4db550f1f6","canva":"def mult(arr,n):\n    # begin code here\n    ","cassert":"from assertpy import assert_that\nimport sample as m\n\nassert_that(m.mult([2,3,4],2)).is_equal_to([4,6,8])\nassert_that(m.mult([2,3,4],5)).is_equal_to([10,15,20])","difficulty":"Ceinture blanche","keepAssert":true,"language":"python","nbAttempt":10,"programID":"baac03de-2816-470e-8789-3c10b438364f","rules":"You'll multiply each element of a given array by the given number.","solution":"def mult(arr,n):\n    return [i * n for i in arr]","title":"Multiply elements"}],"language":"python","nbKata":2,"sensei":"shodai","tags":["arrays","hashmap","list"],"title":"Arrays"},{"_id":"26f8bb8a-e872-4b21-94a4-56308d500399","description":"Basics of the python language","idsensei":"2","katas":[{"_id":"4603ffd1-054f-4163-af51-d84a84c894e9","canva":"def ret(n):\n    ","cassert":"from assertpy import assert_that\nimport sample as m\n\nassert_that(m.ret(5)).is_equal_to(5)\nassert_that(m.ret(4)).is_equal_to(4)","difficulty":"Ceinture blanche","keepAssert":false,"language":"python","nbAttempt":100,"programID":"26f8bb8a-e872-4b21-94a4-56308d500399","rules":"Just return the given value.","solution":"def ret(n):\n    return n","title":"Return n"}],"language":"python","nbKata":1,"sensei":"sensei","tags":["basics","python"],"title":"Fundamentals"},{"_id":"86a3991a-a02e-4e0a-9323-7f4cedca2e3b","description":"Arrays in java are not that easy.","idsensei":"2","katas":[{"_id":"24ba470b-5678-482b-a888-95a02b6bf90e","canva":"import java.util.ArrayList;\n\npublic class Kata {\n    public static int sum(ArrayList<Integer> list){\n        \n    }\n}\n","cassert":"import static org.junit.Assert.*;\nimport java.util.ArrayList;\n\npublic class Main {\n\n    public static void main(String[] args) {\n\n    ArrayList<Integer> mylist = new ArrayList<>();\n    mylist.add(15);\n    mylist.add(5);\n    mylist.add(10);\n\n    assertEquals(Kata.sum(mylist),30);    \n\n   }\n}","difficulty":"Ceinture blanche","keepAssert":true,"language":"java","nbAttempt":2,"programID":"86a3991a-a02e-4e0a-9323-7f4cedca2e3b","rules":"Return a sum of all element in an arraylist","solution":"import java.util.ArrayList;\n\npublic class Kata {\n    public static int sum(ArrayList<Integer> list){\n        int sum = 0;\n        for(int n : list)\n            sum += n;\n        return sum;\n    }\n}\n","title":"Sum up element"}],"language":"java","nbKata":1,"sensei":"sensei","tags":["arrays","arraylist","hashmap"],"title":"Arrays"}]
+[{"_id":"baac03de-2816-470e-8789-3c10b438364f","description":"Let's play with arrays in python !","idsensei":"0","katas":[{"_id":"41ea64c1-0711-46a8-aece-fae593283ad1","canva":"def add(arr,m):","cassert":"from assertpy import assert_that\nimport sample as m\n\nassert_that(m.add([2,3,4],3)).is_equal_to([2,3,4,3])","difficulty":"Ceinture blanche","keepAssert":false,"language":"python","nbAttempt":3,"programID":"baac03de-2816-470e-8789-3c10b438364f","rules":"Add the given element to the given array\n\nexemple :\nafter you've added the number '3' to the array [2,3,4], it becomes [2,3,4,3]","solution":"def add(arr,m):\n    arr.append(m)\n    return arr","title":"Add element"},{"_id":"55501e10-12fe-446f-aea1-2d4db550f1f6","canva":"def mult(arr,n):\n    # begin code here\n    ","cassert":"from assertpy import assert_that\nimport sample as m\n\nassert_that(m.mult([2,3,4],2)).is_equal_to([4,6,8])\nassert_that(m.mult([2,3,4],5)).is_equal_to([10,15,20])","difficulty":"Ceinture blanche","keepAssert":true,"language":"python","nbAttempt":10,"programID":"baac03de-2816-470e-8789-3c10b438364f","rules":"You'll multiply each element of a given array by the given number.","solution":"def mult(arr,n):\n    return [i * n for i in arr]","title":"Multiply elements"}],"language":"python","nbKata":2,"sensei":"shodai","tags":["arrays","hashmap","list"],"title":"Arrays"},{"_id":"26f8bb8a-e872-4b21-94a4-56308d500399","description":"Basics of the python language","idsensei":"0","katas":[{"_id":"4603ffd1-054f-4163-af51-d84a84c894e9","canva":"def ret(n):\n    ","cassert":"from assertpy import assert_that\nimport sample as m\n\nassert_that(m.ret(5)).is_equal_to(5)\nassert_that(m.ret(4)).is_equal_to(4)","difficulty":"Ceinture blanche","keepAssert":false,"language":"python","nbAttempt":100,"programID":"26f8bb8a-e872-4b21-94a4-56308d500399","rules":"Just return the given value.","solution":"def ret(n):\n    return n","title":"Return n"}],"language":"python","nbKata":1,"sensei":"shodai","tags":["basics","python"],"title":"Fundamentals"},{"_id":"86a3991a-a02e-4e0a-9323-7f4cedca2e3b","description":"Arrays in java are not that easy.","idsensei":"0","katas":[{"_id":"24ba470b-5678-482b-a888-95a02b6bf90e","canva":"import java.util.ArrayList;\n\npublic class Kata {\n    public static int sum(ArrayList<Integer> list){\n        \n    }\n}\n","cassert":"import static org.junit.Assert.*;\nimport java.util.ArrayList;\n\npublic class Main {\n\n    public static void main(String[] args) {\n\n    ArrayList<Integer> mylist = new ArrayList<>();\n    mylist.add(15);\n    mylist.add(5);\n    mylist.add(10);\n\n    assertEquals(Kata.sum(mylist),30);    \n\n   }\n}","difficulty":"Ceinture blanche","keepAssert":true,"language":"java","nbAttempt":2,"programID":"86a3991a-a02e-4e0a-9323-7f4cedca2e3b","rules":"Return a sum of all element in an arraylist","solution":"import java.util.ArrayList;\n\npublic class Kata {\n    public static int sum(ArrayList<Integer> list){\n        int sum = 0;\n        for(int n : list)\n            sum += n;\n        return sum;\n    }\n}\n","title":"Sum up element"}],"language":"java","nbKata":1,"sensei":"shodai","tags":["arrays","arraylist","hashmap"],"title":"Arrays"}]