diff --git a/src/app/app-routing.module.ts b/src/app/app-routing.module.ts
index 21390dadf3e5e06d0b8526f9d1652b0b3d0dea6a..fea6c640131c02fba963823048b256722bee5e33 100644
--- a/src/app/app-routing.module.ts
+++ b/src/app/app-routing.module.ts
@@ -26,7 +26,7 @@ import { PedidoComponent } from './mi-cuenta/perfil-cuenta/pedidos/pedido/pedido
 import { PedidoGuardService } from './shared/servicios/pedido-guard.service';
 import { ContrasenaOlvidadaComponent } from './mi-cuenta/contrasena-olvidada/contrasena-olvidada.component';
 import { RestablecerPasswordComponent } from './mi-cuenta/restablecer-password/restablecer-password.component';
-
+/* Rutas de la aplicacion */
 const appRoutes: Routes = [
   { path: '', redirectTo: '/homepage', pathMatch: 'full' },
   { path: 'homepage', component: HomepageComponent },
diff --git a/src/app/app.component.ts b/src/app/app.component.ts
index cc5cc3e5149168a4dc0f46862b887bc4a2a4c803..e7a73e7e61aa4c0b7d6276d53d988b8eccb7285d 100644
--- a/src/app/app.component.ts
+++ b/src/app/app.component.ts
@@ -14,7 +14,7 @@ export class AppComponent implements OnInit {
     private authService: AuthService,
     private cestaService: CestaCompraService
   ) {}
-
+  /* Realiza una llamada al AuthService para tratar de hacer autologin al usuario y otra al cesta service para recuperar la cesta de la compra */
   ngOnInit(): void {
     this.authService.autoLogin();
     this.cestaService.recuperarCestaFromLocalStorage();
diff --git a/src/app/contacto/contacto.component.ts b/src/app/contacto/contacto.component.ts
index 02bfccb4b2b5b71ba1870336759814faf9762ac2..7203e6e3281f0378e53f6462056a8e7f06420c05 100644
--- a/src/app/contacto/contacto.component.ts
+++ b/src/app/contacto/contacto.component.ts
@@ -26,7 +26,6 @@ export class ContactoComponent {
       .then(
         (resolve) => {
           this.envioCorrecto = true;
-          console.log(resolve);
           form.reset();
         },
         (reject) => {}
diff --git a/src/app/mi-cuenta/completar-registro/completar-registro.component.ts b/src/app/mi-cuenta/completar-registro/completar-registro.component.ts
index 6415d0392268d8058b49ccba8edbc6c8627256be..83b586e8fa0f57f7eac375d91aca23a0982bf60a 100644
--- a/src/app/mi-cuenta/completar-registro/completar-registro.component.ts
+++ b/src/app/mi-cuenta/completar-registro/completar-registro.component.ts
@@ -61,7 +61,6 @@ export class CompletarRegistroComponent implements OnInit {
           this.router.navigate(['/homepage']);
         },
         (error) => {
-          console.log(error.message);
           if (error.message.indexOf('auth/email-already-in-use')) {
             this.loading = false;
             this.errorMessage =
diff --git a/src/app/mi-cuenta/perfil-cuenta/cerrar-sesion/cerrar-sesion.component.ts b/src/app/mi-cuenta/perfil-cuenta/cerrar-sesion/cerrar-sesion.component.ts
index 5b8abb2b509760f043eca20c0216abecf27cabb2..1c6d77e99222c2512d7294073ea5b9197a27dc18 100644
--- a/src/app/mi-cuenta/perfil-cuenta/cerrar-sesion/cerrar-sesion.component.ts
+++ b/src/app/mi-cuenta/perfil-cuenta/cerrar-sesion/cerrar-sesion.component.ts
@@ -8,10 +8,10 @@ import { AuthService } from 'src/app/shared/servicios/auth.service';
 })
 export class CerrarSesionComponent implements OnInit {
   constructor(private authService: AuthService) {}
-
+  /* crea una cuenta atras para, de forma ficticia, dar la sensación al usuario de que se está cerrando la sesión */
   ngOnInit(): void {
     setTimeout(() => {
       this.authService.logOut();
-    }, 2000);
+    }, 1500);
   }
 }
diff --git a/src/app/mi-cuenta/perfil-cuenta/datos-pago/datos-pago.component.ts b/src/app/mi-cuenta/perfil-cuenta/datos-pago/datos-pago.component.ts
index f437d343b8614f3e13548140243b232b547e7fb8..fc21dd8b1787d3de61cf07ef3edb5fcb5c5a36c2 100644
--- a/src/app/mi-cuenta/perfil-cuenta/datos-pago/datos-pago.component.ts
+++ b/src/app/mi-cuenta/perfil-cuenta/datos-pago/datos-pago.component.ts
@@ -3,13 +3,10 @@ import { Component, OnInit } from '@angular/core';
 @Component({
   selector: 'app-datos-pago',
   templateUrl: './datos-pago.component.html',
-  styleUrls: ['./datos-pago.component.css']
+  styleUrls: ['./datos-pago.component.css'],
 })
 export class DatosPagoComponent implements OnInit {
-
-  constructor() { }
-
-  ngOnInit(): void {
-  }
-
+  constructor() {}
+  /* no tiene lógica porque no se han implementado los pagos, solo se simulan */
+  ngOnInit(): void {}
 }
diff --git a/src/app/mi-cuenta/perfil-cuenta/datos-personales/datos-personales.component.ts b/src/app/mi-cuenta/perfil-cuenta/datos-personales/datos-personales.component.ts
index 1f52b0d7ad34e1a3e6d10a4678eeb07a4f86da61..c2e16dbf137f1fbabdc7819b08c4eafb0369db3b 100644
--- a/src/app/mi-cuenta/perfil-cuenta/datos-personales/datos-personales.component.ts
+++ b/src/app/mi-cuenta/perfil-cuenta/datos-personales/datos-personales.component.ts
@@ -57,16 +57,13 @@ export class DatosPersonalesComponent implements OnInit {
           this.cambioEmailText = 'Cambiar correo';
         })
         .catch((err) => {
-          console.log(err);
           this.emailFail = true;
           this.email = this.authService.credential.user.email;
         });
       this.user.email = this.email;
       this.databaseService
         .updateUserInDatabase(this.user, this.authService.credential.user.uid)
-        .subscribe((ok) => {
-          console.log(ok);
-        });
+        .subscribe((ok) => {});
     }
   }
   /* habilita el formulario para cambiar el telefono y, en caso de estar habilitado
diff --git a/src/app/mi-cuenta/perfil-cuenta/direcciones/direcciones.component.ts b/src/app/mi-cuenta/perfil-cuenta/direcciones/direcciones.component.ts
index a44aab87de0b2dc91e7e4d0d06633dc7d4b43741..dd638ef22c9dc4f2edcf59fe00b11c5480094c79 100644
--- a/src/app/mi-cuenta/perfil-cuenta/direcciones/direcciones.component.ts
+++ b/src/app/mi-cuenta/perfil-cuenta/direcciones/direcciones.component.ts
@@ -11,19 +11,26 @@ import { DatabaseService } from 'src/app/shared/servicios/database.service';
   providers: [DatabaseService],
 })
 export class DireccionesComponent implements OnInit, OnDestroy {
-  user: Usuario;
-  cambioEnvio = false;
-  cambioEnvioText = 'Modificar direccion de envío';
-  envioSuccess = false;
-  cambioFacturacion = false;
-  cambioFacturacionText = 'Modificar direccion de facturacion';
-  facturacionSuccess = false;
+  user: Usuario; /* el usuario del que se van a mostrar las direcciones */
+  cambioEnvio =
+    false; /* variable que permite controlar los textos y la accion del botón "cambiar direccion de envio" */
+  cambioEnvioText =
+    'Modificar direccion de envío'; /* el texto que se muestra en el boton de "cambiar direccion de envio" */
+  envioSuccess =
+    false; /* true si se ha cambiado correctamente la direccion de envio del usuario en base de datos. Permite mostrar una alerta al usuario en caso de exito */
+  cambioFacturacion =
+    false; /* variable que permite controlar los textos y la accion del botón "cambiar direccion de facturacion" */
+  cambioFacturacionText =
+    'Modificar direccion de facturacion'; /* el texto que se muestra en el boton de "cambiar direccion de facturacion" */
+  facturacionSuccess =
+    false; /* true si se ha cambiado correctamente la direccion de facturacion del usuario en base de datos. Permite mostrar una alerta al usuario en caso de exito */
 
   private userSubscription: Subscription;
   constructor(
     private authService: AuthService,
     private databaseService: DatabaseService
   ) {}
+  /* recupera el usuario que hay ahora mismo en la aplicacion con la sesion iniciada */
   ngOnInit(): void {
     this.userSubscription = this.authService.userBS.subscribe((user) => {
       this.user = user;
@@ -32,6 +39,7 @@ export class DireccionesComponent implements OnInit, OnDestroy {
   ngOnDestroy(): void {
     this.userSubscription.unsubscribe();
   }
+  /* modifica el texto del boton cambiar direccion de envio y procesa la solicitud del cambio */
   cambioEnvioActivate() {
     if (!this.cambioEnvio) {
       this.cambioEnvio = true;
@@ -46,6 +54,7 @@ export class DireccionesComponent implements OnInit, OnDestroy {
         });
     }
   }
+  /* modifica el texto del boton cambiar direccion de facturacion y procesa la solicitud del cambio */
   cambioFacturacionActivate() {
     if (!this.cambioFacturacion) {
       this.cambioFacturacion = true;
diff --git a/src/app/mi-cuenta/perfil-cuenta/pedidos/card-pedido-resumen-perfil/card-pedido-resumen-perfil.component.ts b/src/app/mi-cuenta/perfil-cuenta/pedidos/card-pedido-resumen-perfil/card-pedido-resumen-perfil.component.ts
index 3c1390f92f8a36de0d7b7b2257658ca4462d8169..f9cf0032080a5d4d949a743d20b352fcf2b2423b 100644
--- a/src/app/mi-cuenta/perfil-cuenta/pedidos/card-pedido-resumen-perfil/card-pedido-resumen-perfil.component.ts
+++ b/src/app/mi-cuenta/perfil-cuenta/pedidos/card-pedido-resumen-perfil/card-pedido-resumen-perfil.component.ts
@@ -10,11 +10,14 @@ import { DatabaseService } from 'src/app/shared/servicios/database.service';
   providers: [DatabaseService],
 })
 export class CardPedidoResumenPerfilComponent implements OnInit {
-  @Input('pedido') numeroPedido: string;
-  pedido: Pedido = new Pedido();
-  pedidoSubscription: Subscription;
-  fechaPedido: string;
-  estadoColor = '';
+  @Input('pedido')
+  numeroPedido: string; /* el numero del pedido que se muestra en el compomemte */
+  pedido: Pedido =
+    new Pedido(); /* el pedido que se muestar resumido en el componente */
+  pedidoSubscription: Subscription; /* la subscripcion al pedido recuperado de abse de datos */
+  fechaPedido: string; /* la fecha del pedido en formato texto */
+  estadoColor =
+    ''; /* el color que recibirá el estado del pedido mostrrado en el compnonente */
   constructor(private databaseService: DatabaseService) {}
 
   ngOnInit(): void {
diff --git a/src/app/mi-cuenta/perfil-cuenta/pedidos/pedido/pedido-item/pedido-perfil-item.component.ts b/src/app/mi-cuenta/perfil-cuenta/pedidos/pedido/pedido-item/pedido-perfil-item.component.ts
index 0bf84e6479550634542f92ed6ce56f1cfd46f440..8ad4b681a70cc25831530cfcba754516d2747f2a 100644
--- a/src/app/mi-cuenta/perfil-cuenta/pedidos/pedido/pedido-item/pedido-perfil-item.component.ts
+++ b/src/app/mi-cuenta/perfil-cuenta/pedidos/pedido/pedido-item/pedido-perfil-item.component.ts
@@ -12,15 +12,16 @@ export class PedidoItemComponent implements OnInit {
   @Input('productoUnidades') productoUnidades: {
     productoID: string;
     unidades: number;
-  } = {
-    productoID: '',
-    unidades: 0,
-  };
-  public producto: Producto;
+  } =
+    {
+      productoID: '',
+      unidades: 0,
+    }; /* el identificados del producto que va a mostrar el componente y las unidades de ese producto en el pedido */
+  public producto: Producto; /* el producto que muestra el componente */
 
-  imagen: Observable<any>;
+  imagen: Observable<any>; /* la imagen del producto que se muestra en el componente */
   constructor(private databaseService: DatabaseService) {}
-
+  /* recupera el pedido que se va a mostrar de base de datos y su imagen */
   ngOnInit(): void {
     this.databaseService
       .getProductoFromDatabase(this.productoUnidades.productoID)
diff --git a/src/app/mi-cuenta/perfil-cuenta/pedidos/pedido/pedido.component.ts b/src/app/mi-cuenta/perfil-cuenta/pedidos/pedido/pedido.component.ts
index 002d8b6d7952826b7564c298baecbb986450b95c..4e16283464bf4cd1d031110b31b6b67100a0a36e 100644
--- a/src/app/mi-cuenta/perfil-cuenta/pedidos/pedido/pedido.component.ts
+++ b/src/app/mi-cuenta/perfil-cuenta/pedidos/pedido/pedido.component.ts
@@ -11,18 +11,19 @@ import { DatabaseService } from 'src/app/shared/servicios/database.service';
   providers: [DatabaseService],
 })
 export class PedidoComponent implements OnInit, OnDestroy {
-  private paramsSubscription: Subscription;
-  public pedido: Pedido;
-  public numeroPedido: string;
-  public imagen;
-  fechaPedido: string;
-  estadoColor: string;
+  private paramsSubscription: Subscription; /* subscripcion a los parametros de la ruta para poder saber que pedido mostrar en el componente */
+  public pedido: Pedido; /* el pedido a mostrar en el componente */
+  public numeroPedido: string; /* el numeor del pedido que se muestra */
+  fechaPedido: string; /* la feche en formato texto en la que fue realizado el pedido */
+  estadoColor: string; /* el color a mostrar en el estado del pedido */
 
   constructor(
     private route: ActivatedRoute,
     private databaseService: DatabaseService,
     private router: Router
   ) {}
+  /* recupera de base de datos el pedido que se recibe via los parametros de la ruta y procesa sus datos para saber de qué color mostrar el estado del pedido
+  y  compone el string de la fecha del pedido*/
   ngOnInit(): void {
     this.paramsSubscription = this.route.params.subscribe((params: Params) => {
       this.databaseService
diff --git a/src/app/mi-cuenta/perfil-cuenta/pedidos/pedidos.component.ts b/src/app/mi-cuenta/perfil-cuenta/pedidos/pedidos.component.ts
index 5a7ce094f976c8351605173208d1d0ec9e360042..f3757d944efabbbc8d145a1e7f3fe5d7f3205702 100644
--- a/src/app/mi-cuenta/perfil-cuenta/pedidos/pedidos.component.ts
+++ b/src/app/mi-cuenta/perfil-cuenta/pedidos/pedidos.component.ts
@@ -11,13 +11,14 @@ import { DatabaseService } from 'src/app/shared/servicios/database.service';
   providers: [DatabaseService],
 })
 export class PedidosComponent implements OnInit {
-  pedidos: string[];
-  pedidosSubscription: Subscription;
+  pedidos: string[]; /* pedidios a mostrar en la vista */
+  pedidosSubscription: Subscription; /* subscripcion a los pedidos en base de datos */
   constructor(
     private databaseService: DatabaseService,
     private authService: AuthService
   ) {}
-
+  /* recupera los pedidos de un usuario en base de datos y los ordena por fecha de pedido, dejando los mas antiguos en la parte más baja y los más recientes en
+    la parte mas alta */
   ngOnInit(): void {
     this.pedidosSubscription = this.databaseService
       .getPedidosDeUsuarioFromDatabase(this.authService.credential.user.uid)
@@ -38,7 +39,6 @@ export class PedidosComponent implements OnInit {
         this.pedidos = paresPedidoFecha.map((par) => {
           return par.pid;
         });
-        console.log(paresPedidoFecha);
       });
   }
 }
diff --git a/src/app/mi-cuenta/perfil-cuenta/perfil-cuenta.component.ts b/src/app/mi-cuenta/perfil-cuenta/perfil-cuenta.component.ts
index 0c3ade359b0a64975217cacfca436bdf8a5ec310..2bc92e37713be86b9a1133162f1e6a8dd5f4984c 100644
--- a/src/app/mi-cuenta/perfil-cuenta/perfil-cuenta.component.ts
+++ b/src/app/mi-cuenta/perfil-cuenta/perfil-cuenta.component.ts
@@ -7,6 +7,6 @@ import { Component, OnInit } from '@angular/core';
 })
 export class PerfilCuentaComponent implements OnInit {
   constructor() {}
-
+  /* no posee lógica interna debido a que su única función es contener los componentes que conforman la vista de mi cuenta y la columna de navegación de esta */
   ngOnInit(): void {}
 }
diff --git a/src/app/mi-cuenta/restablecer-password/restablecer-password.component.ts b/src/app/mi-cuenta/restablecer-password/restablecer-password.component.ts
index add8d6c152e21691caff53ac0703a48e4d406c5c..7b1ca1b840e9d302baed21050ecf69389ae12eca 100644
--- a/src/app/mi-cuenta/restablecer-password/restablecer-password.component.ts
+++ b/src/app/mi-cuenta/restablecer-password/restablecer-password.component.ts
@@ -39,8 +39,6 @@ export class RestablecerPasswordComponent implements OnInit {
       return;
     }
     this.authService.resetPassword(this.oobCode, this.password1).then((res) => {
-      console.log(res);
-
       this.cambioCorrecto = true;
     });
   }
diff --git a/src/app/shared/clases/metodoPago.model.ts b/src/app/shared/clases/metodoPago.model.ts
index b104ed1a3c8499b3b4f9259331858ce9b2ad6d80..d9fee40ae7c4d15b1be22fcc659c6748e2d1b50c 100644
--- a/src/app/shared/clases/metodoPago.model.ts
+++ b/src/app/shared/clases/metodoPago.model.ts
@@ -1,3 +1,3 @@
 export interface MetodoPago {
-  /* To-Do en el caso de implementar la pasarela de pago */
+  /* A definir cuando se incluyan los pagos */
 }
diff --git a/src/app/shared/servicios/auth-guard.service.ts b/src/app/shared/servicios/auth-guard.service.ts
index d3ef992f072fff3f6d100a0f7c10be581f6244f9..cbfedd1c1bb9f1b93c10bc4fa65616ef0fe0fe13 100644
--- a/src/app/shared/servicios/auth-guard.service.ts
+++ b/src/app/shared/servicios/auth-guard.service.ts
@@ -14,7 +14,7 @@ import { AuthService } from './auth.service';
 })
 export class AuthGuardService implements CanActivate {
   constructor(private authService: AuthService, private router: Router) {}
-
+  /* Resuelve si se puede acceder a las vistas de mi cuenta dependiendo de si hay un usuario autenticado o no */
   canActivate(
     route: ActivatedRouteSnapshot,
     state: RouterStateSnapshot
diff --git a/src/app/shared/servicios/auth.service.ts b/src/app/shared/servicios/auth.service.ts
index 39e45aa973853bca292022f6f33e0e5000ec4813..8361347b8e9cc459a7bc22e558df8f9b9de4845e 100644
--- a/src/app/shared/servicios/auth.service.ts
+++ b/src/app/shared/servicios/auth.service.ts
@@ -17,16 +17,20 @@ import { Router } from '@angular/router';
 
 @Injectable()
 export class AuthService {
-  credential!: UserCredential;
-  userBS = new BehaviorSubject<Usuario>(null);
-  userRegistroBS = new BehaviorSubject<Usuario>(null);
-  private password = '';
+  credential!: UserCredential; /* la credencial del usuario que ha iniciado sesion en la aplicacion */
+  userBS = new BehaviorSubject<Usuario>(
+    null
+  ); /* el usuario que ha iniciado sesion en la aplicacion */
+  userRegistroBS = new BehaviorSubject<Usuario>(
+    null
+  ); /* el usuario que va a ser dado de alta en bse de datos tras terminar un registro */
   constructor(
     private auth: Auth,
     private databaseService: DatabaseService,
     private router: Router
   ) {}
-
+  /* metodo que permite comprobar si un usuario tiene sesion iniciada cuando se recarga 
+  la página o se accede de nuevo, y que en caso de tener la sesion iniciada, recupera los datos del usuario desde base de datos */
   public autoLogin() {
     const userLogged: boolean = JSON.parse(localStorage.getItem('userLogged'));
     if (userLogged) {
@@ -38,9 +42,6 @@ export class AuthService {
     );
 
     if (!userLogged) {
-      console.log('not userr');
-      console.log(this.auth);
-
       this.auth
         .updateCurrentUser(userCredential.user)
         .then(() => {})
@@ -49,7 +50,6 @@ export class AuthService {
           localStorage.removeItem('userCredential');
           signOut(this.auth);
           this.credential = null;
-          console.log('error update user');
         });
       return;
     }
@@ -74,16 +74,24 @@ export class AuthService {
       }
     });
   }
+  /* metodo que permite cambiar el email de un usuario con sesion iniciada
+   */
   public cambiarEmail(email: string) {
     return updateEmail(this.auth.currentUser, email);
   }
+  /* metodo que permite hacer una llamada a firebase para que envie un correo de recuperacion de contraseña a un usuario registrado que lo solicite. 
+  Recibe como parametro el email que introduce el usuario */
   forgotPassword(email: string) {
     return sendPasswordResetEmail(this.auth, email);
   }
+  /* metodo que permite cambiar la contraseña una vez ha sido solicitada la recuperacion de esta por un usario. 
+  recibe como parametro el oobCode proporcionado por Firebase y la nueva contraseña del usuario */
   resetPassword(oobCode: string, newPassword: string) {
     return confirmPasswordReset(this.auth, oobCode, newPassword);
   }
-
+  /* metodo que permite iniciar sesion a un usario. REcibe como parametro las credenciales del usuario. 
+  Si se logra iniciar sesion, se recuperan los datos del usuario de base de datos y se guardan en el servicio. 
+  tambien se notifica a los componentes que necesiten al usuario cuando este está ya recuperado de abse de datos*/
   public loginUserWithEmail(
     email: string,
     password: string
@@ -101,7 +109,6 @@ export class AuthService {
           localStorage.setItem('userCredential', JSON.stringify(userAuth));
           this.userBS.next(userDB);
           this.credential = userAuth;
-          this.password = '';
           this.router.navigate(['/tienda/tienda']);
         });
 
@@ -110,6 +117,7 @@ export class AuthService {
 
     return from(loginPromise);
   }
+  /* metodo que permite cerrar la sesion de un usuario que la haya iniciado */
   public logOut() {
     signOut(this.auth);
     this.credential = null;
@@ -119,7 +127,7 @@ export class AuthService {
     this.router.navigate(['/auth']);
     window.location.reload();
   }
-
+  /* metodo que permite crear un usuario en el modulo auth de firebase mediante su email y contraseña, los cuales recibe por parametro */
   public createUserWithEmail(
     email: string,
     password: string
@@ -131,7 +139,7 @@ export class AuthService {
     );
     return from(registerPromise);
   }
-
+  /* metodo que permite actualizar y notificar de la actualizacion del usuario que va a ser registrado en la aplicacion */
   public updateUserRegistro(user: Usuario): void {
     this.userRegistroBS.next(user);
   }
diff --git a/src/app/shared/servicios/cesta-compra.service.ts b/src/app/shared/servicios/cesta-compra.service.ts
index 21dd8988bd80be7d46178957ff0c009705472233..3e4eff6903e3cbc4fe2dce1b37a66457508b0868 100644
--- a/src/app/shared/servicios/cesta-compra.service.ts
+++ b/src/app/shared/servicios/cesta-compra.service.ts
@@ -11,19 +11,26 @@ import { DatabaseService } from './database.service';
   providedIn: 'root',
 })
 export class CestaCompraService {
-  private userSubscription: Subscription;
-  private user: Usuario;
-  public cestaBS = new BehaviorSubject<Cesta>(new Cesta());
-  private cesta: Cesta = new Cesta();
-  private pedido: Pedido = null;
-  public pedidoBS = new BehaviorSubject<Pedido>(null);
-  private diasTipicosParaUnEnvio = 4;
-  private fechaEntregaPrevista: Date = new Date();
-  private gastosDeEnvío = 5.95;
+  private userSubscription: Subscription; /* subscripcion al usuario del AuthService */
+  private user: Usuario; /* usuario local del servicio para ir modificandolo */
+  public cestaBS = new BehaviorSubject<Cesta>(
+    new Cesta()
+  ); /* cesta a la que se pueden subscribir otros componentes para recibir sus cambios */
+  private cesta: Cesta = new Cesta(); /* cesta local del servicio */
+  private pedido: Pedido =
+    null; /* pedido que se va a crear en base de datos en caso de iniciarse el proceso de pedido */
+  public pedidoBS = new BehaviorSubject<Pedido>(
+    null
+  ); /* pedido al que se pueden subscribir otros compononentes para recibir sus cambios */
+  private diasTipicosParaUnEnvio = 4; /* dias que suele tardar un envio */
+  private fechaEntregaPrevista: Date =
+    new Date(); /* fehca de entrega prevista, calculada al inicio del componente */
+  private gastosDeEnvío = 5.95; /* gasto de envío de un pedido */
   constructor(
     private databaseService: DatabaseService,
     private authService: AuthService
   ) {
+    /* al construir el servicio se crea la subscripcion al usuario del AuthService. Si se recibe usuario, se recuperan los productos de este usuario de base de datos */
     this.userSubscription = this.authService.userBS.subscribe(
       (user: Usuario) => {
         if (!!user) {
@@ -55,7 +62,7 @@ export class CestaCompraService {
       this.fechaEntregaPrevista.getDate() + this.diasTipicosParaUnEnvio
     );
   }
-
+  /* Metodo que permite recuperar la cesta almacenada en el almacenamiento local del navegador del usuario y guardarlo en la cesta del servicio */
   recuperarCestaFromLocalStorage() {
     this.cesta = new Cesta();
     let cesta: Cesta = JSON.parse(localStorage.getItem('cesta'));
@@ -64,7 +71,9 @@ export class CestaCompraService {
     }
     this.cestaBS.next(this.cesta);
   }
-
+  /* Metodo que permite añadir un producto a la cesta. recibe como parámetro el producto a añadir y las unidades a añadir de ese producto. 
+si el producto a añadir ha sido añadido previamente solo aumenta las unidades de ese producto en la cesta. 
+Tambien actualiza la cesta de el usuario en base de datso si este ha iniciado sesion*/
   addProducto(producto: Producto, unidades: number) {
     let index = this.cesta.productos.findIndex(
       (e) => e.producto.productoID === producto.productoID
@@ -98,6 +107,8 @@ export class CestaCompraService {
     localStorage.setItem('cesta', JSON.stringify(this.cesta));
     this.cestaBS.next(this.cesta);
   }
+  /* metodo que permite eliminar un producto de la cesta de la compra. recibe como parametro el indicador del producto a borrar. 
+  modifica la cesta del usuario en base de datos si este ha iniciado sesion. */
   deleteProducto(productoID: string) {
     let index = this.cesta.productos.findIndex(
       (p) => p.producto.productoID === productoID
@@ -115,7 +126,8 @@ export class CestaCompraService {
     localStorage.setItem('cesta', JSON.stringify(this.cesta));
     this.updateUserYCestaEnDatabase();
   }
-
+  /* metodo que permite modificar la cantidad de un producto que ha sido añadido a la cesta. 
+  recibe como parametro un objeto compuesto por un producto y las nuevas unidades del producto en la cesta. */
   modificarCantidadProducto(entrada: { producto: Producto; unidades: number }) {
     let index = this.cesta.productos.findIndex(
       (e) => e.producto.productoID === entrada.producto.productoID
@@ -137,6 +149,7 @@ export class CestaCompraService {
 
     this.updateUserYCestaEnDatabase();
   }
+  /* metodo que devuelve en formato de string local la fecha de entrega prevista de un pedido. */
   getFechaEntregaPrevistaPedido(): string {
     const options: Intl.DateTimeFormatOptions = {
       weekday: 'long',
@@ -146,11 +159,11 @@ export class CestaCompraService {
     };
     return this.fechaEntregaPrevista.toLocaleDateString('es-ES', options);
   }
-
+  /* metodo que devuelve el valor de los gastos de envio */
   getGastosDeEnvio(): number {
     return this.gastosDeEnvío;
   }
-
+  /* metodo que crea un pedido con los datos iniciales de este para poder ir completandolo */
   crearPedidoInicial() {
     this.pedido = new Pedido();
     this.cesta.productos.forEach((p) => {
@@ -167,13 +180,16 @@ export class CestaCompraService {
     this.pedido.fechaPedido = new Date().getTime();
     this.pedidoBS.next(this.pedido);
   }
+  /* metodo que devuelve el pedido de el servicio */
   getPedido(): Pedido {
     return this.pedido;
   }
+  /* metodo que actualiza los datos del pedido del servicio, y comunica los cambios a otros componentes. */
   actualizarPedido(pedido: Pedido) {
     this.pedido = pedido;
     this.pedidoBS.next(pedido);
   }
+  /* metodo que permite vaciar las cestas local y remota  */
   clearCestas() {
     this.cesta = new Cesta();
     this.cestaBS.next(this.cesta);
@@ -182,20 +198,17 @@ export class CestaCompraService {
     localStorage.setItem('cesta', JSON.stringify(this.cesta));
     this.updateUserYCestaEnDatabase();
   }
+  /* metodo que actualiza la cesta de un usuario en base de datos con la cesta local del servicio. */
   updateUserYCestaEnDatabase() {
     if (!!this.authService.credential) {
-      console.log(this.authService.credential);
       this.databaseService
         .updateUserInDatabase(this.user, this.authService.credential.user.uid)
         .pipe(take(1))
         .subscribe(
           (res) => {
-            console.log('updateCompleto');
             this.authService.userBS.next(this.user);
           },
-          (error) => {
-            console.log(error);
-          }
+          (error) => {}
         );
     }
   }
diff --git a/src/app/shared/servicios/database.service.ts b/src/app/shared/servicios/database.service.ts
index eb5fed41f49075e341063f8fd8b20adf893f0584..37f3aa505c9d7304f8c92dff8ce66cc06d00fae0 100644
--- a/src/app/shared/servicios/database.service.ts
+++ b/src/app/shared/servicios/database.service.ts
@@ -15,7 +15,8 @@ export class DatabaseService {
     private router: Router,
     private storage: AngularFireStorage
   ) {}
-
+  /* Método que permite crear un usuario en base de datos, recibe un objeto de tipo Usuario y el identificador de ese usuario en base de datos. 
+  Devuelve una promesa que resuelve si se completa la operación */
   createNewUserInDatabase(user: Usuario, uid: string) {
     return new Promise<any>((resolve, reject) => {
       this.angularFirestore.collection('users').doc(uid).set({
@@ -30,6 +31,8 @@ export class DatabaseService {
       });
     });
   }
+  /* Método que permite actualizar los datos de un usuario en base de datos, recibe un objeto de tipo Usuario y el identificador de ese usuario a modificar en base de datos. 
+  Devuelve una promesa que resuelve si se completa la operación */
   updateUserInDatabase(user: Usuario, uid: string) {
     const updatePromise = this.angularFirestore
       .collection('users')
@@ -46,16 +49,18 @@ export class DatabaseService {
       });
     return from(updatePromise);
   }
-
+  /* metodo que devuelve una referencia de una imagen accesible desde un navegador. 
+Recibe como parametro la ruta que ocupa en la jerarquía del módulo Storage la imagen en cuestion.
+Devuelve el observable de la llamada al módulo storage*/
   getDownloadURLFromStorage(imagePath: string) {
     const ref = this.storage.ref(imagePath);
     return ref.getDownloadURL();
   }
-
+  /* Método permite recuperar un usuario de base de datos */
   getUserFromDatabase(uid: string): Observable<any> {
     return this.angularFirestore.collection('users').doc(uid).valueChanges();
   }
-
+  /* permite crear una consulta en base de datos. recibe parametrizados los datos de la consulta */
   createConsultaInDatabase(
     nombre: string,
     apellidos: string,
@@ -73,12 +78,14 @@ export class DatabaseService {
       motivoConsulta: motivoConsulta,
     });
   }
+  /* metodo que recupera un productos de la base de datos. REcibe como parametro el identificador del producto a recuperar */
   getProductoFromDatabase(productoID: string): Observable<any> {
     return this.angularFirestore
       .collection('productos')
       .doc(productoID)
       .valueChanges();
   }
+  /* metodo que actualiza un producto en basee de datos. Recibe el producto a actualizar como parametro */
   updateProductoInDatabase(producto: Producto): Promise<any> {
     return new Promise<any>((resolve, reject) =>
       this.angularFirestore
@@ -98,34 +105,37 @@ export class DatabaseService {
           stockEnAlmacen: producto.stockEnAlmacen,
         })
         .then(
-          (response) => {
-            console.log(response);
-          },
+          (response) => {},
           (error) => {
             reject(error);
           }
         )
     );
   }
+  /* metodo que recupera todos los productos de base de datos. */
   getAllProductosFromDatabase() {
     return this.angularFirestore.collection('productos').snapshotChanges();
   }
+  /* metodo que recupera todos los productos destacados de base de datos */
   getProductosDestacadosFromDatabase(): Observable<any> {
     return this.angularFirestore
       .collection('productos', (ref) => ref.where('destacado', '==', true))
       .valueChanges();
   }
+  /* Metodo que recupera las categorias presentes en base de datos */
   getCategoriasNamesFromDatabase(): Observable<any> {
     return this.angularFirestore
       .collection('categorias')
       .doc('base')
       .valueChanges();
   }
+  /* metodo que recupera los productos de una categoria. Recibe como parametro el nombre de la categoria de los productos a recuperar   */
   getProductosDeCategoriaFromDatabase(categoria: string): Observable<any> {
     return this.angularFirestore
       .collection('productos', (ref) => ref.where('categoria', '==', categoria))
       .valueChanges();
   }
+  /* Metodo que crea un pedido en base de datos. Recibe como parámetro el pedido que hay que crear y el identificador unico del usuario al que debe ser asociado el pedido. */
   createPedidoInDatabase(pedido: Pedido, uid: string) {
     return new Promise<any>((resolve, reject) =>
       this.angularFirestore
@@ -149,12 +159,10 @@ export class DatabaseService {
               this.getProductoFromDatabase(par.productoID)
                 .pipe(take(1))
                 .subscribe((producto: Producto) => {
-                  console.log(producto);
-
                   let productoAct = producto;
                   productoAct.stockEnAlmacen -= par.unidades;
                   this.updateProductoInDatabase(productoAct).then((res) =>
-                    console.log(res)
+                    console.log('')
                   );
                 });
             });
@@ -165,18 +173,20 @@ export class DatabaseService {
         )
     );
   }
+  /* Metodo que permite recuperar de base de datos los pedidos de un usuario. Recibe como parámetro el identificador unico del usario del que se desean recuperar los pedidos. */
   getPedidosDeUsuarioFromDatabase(uid: string): Observable<any> {
     return this.angularFirestore
       .collection('pedidos', (ref) => ref.where('uid', '==', uid))
       .snapshotChanges();
   }
+  /* metodo que permite recuperar un pedido de un usuario de base de datos. recibe como parámetro el identificador único del pedido a recuperar */
   getPedidoFromDatabase(numeroPedido: string) {
     return this.angularFirestore
       .collection('pedidos')
       .doc(numeroPedido)
       .valueChanges();
   }
-
+  /* Metodo que permite cancelar un pedido en base de datos. Recibe como parametro el pedido a cancelar y el identificador unico del pedido. */
   cancelarPedidoInDatabase(pedido: Pedido, numeroPedido: string) {
     return this.angularFirestore
       .collection('pedidos')
diff --git a/src/app/shared/servicios/pedido-guard.service.ts b/src/app/shared/servicios/pedido-guard.service.ts
index 8e9a4bd7540bee5fc8aad338f1e72fb09f9811e8..d4e4c3c3afaef0b0d4f3ecca69dcaa103af5c401 100644
--- a/src/app/shared/servicios/pedido-guard.service.ts
+++ b/src/app/shared/servicios/pedido-guard.service.ts
@@ -17,7 +17,7 @@ export class PedidoGuardService implements CanActivate {
     private cestaService: CestaCompraService,
     private router: Router
   ) {}
-
+  /* Metodo que resuelve si se puede acceder a laa vista de pago */
   canActivate(
     route: ActivatedRouteSnapshot,
     state: RouterStateSnapshot
@@ -27,12 +27,15 @@ export class PedidoGuardService implements CanActivate {
     | Observable<boolean | UrlTree>
     | Promise<boolean | UrlTree> {
     return this.cestaService.pedidoBS.pipe(
+      /* cuando hay un pedido devolvemos true para poder acceder a la vista de pago */
       map((pedido) => {
         const hayPedido = !!pedido;
         if (hayPedido) {
           return true;
         }
-        return this.router.createUrlTree(['/cesta']);
+        return this.router.createUrlTree([
+          '/cesta',
+        ]); /* si no hay pedido se devuelve una ruta que nos redirige a la cesta de la compra */
       })
     );
   }
diff --git a/src/app/sobre-nosotros/sobre-nosotros.component.ts b/src/app/sobre-nosotros/sobre-nosotros.component.ts
index 42e4abda4becf44b6602103d9a63e045431112e3..b6871fca4362b5c8027a0e2fd07719cf79551743 100644
--- a/src/app/sobre-nosotros/sobre-nosotros.component.ts
+++ b/src/app/sobre-nosotros/sobre-nosotros.component.ts
@@ -3,13 +3,10 @@ import { Component, OnInit } from '@angular/core';
 @Component({
   selector: 'app-sobre-nosotros',
   templateUrl: './sobre-nosotros.component.html',
-  styleUrls: ['./sobre-nosotros.component.css']
+  styleUrls: ['./sobre-nosotros.component.css'],
 })
 export class SobreNosotrosComponent implements OnInit {
-
-  constructor() { }
-
-  ngOnInit(): void {
-  }
-
+  constructor() {}
+  /* No posee lógica ya que su unica funcion es la de contener la vista sobre nosotros */
+  ngOnInit(): void {}
 }
diff --git a/src/app/tienda/card-producto/card-producto.component.ts b/src/app/tienda/card-producto/card-producto.component.ts
index 6307d6eaedda56af586171d4f48cd94416b598af..a54da116f767c7ee5262e326877b890dcba83d72 100644
--- a/src/app/tienda/card-producto/card-producto.component.ts
+++ b/src/app/tienda/card-producto/card-producto.component.ts
@@ -10,20 +10,25 @@ import { DatabaseService } from 'src/app/shared/servicios/database.service';
   providers: [DatabaseService],
 })
 export class CardProductoComponent implements OnInit {
-  @Input('producto') producto: Producto;
-  imagen: Observable<string | null>;
-  added = false;
+  @Input('producto')
+  producto: Producto; /* producto que se recibe como parametro y que sera mostrado en la card */
+  imagen: Observable<
+    string | null
+  >; /* la imagen que se va a mostrar en la card, la cual es un observable porque su recepcion es asincrona */
+  added =
+    false; /* booleano que controla la muestra de un pequeño icono indicativo de que el produco ha sido añadido a la cesta */
 
   constructor(
     private databaseService: DatabaseService,
     private cestaService: CestaCompraService
   ) {}
-
+  /* se encarga de recuperar la imagen del producto de base de datos mediante una llamada al database service */
   ngOnInit(): void {
     this.imagen = this.databaseService.getDownloadURLFromStorage(
       this.producto.imagenIconoPath
     );
   }
+  /* funcion que se llama al hacer click en el boton añadir a la cesta y que mediante una llamada al cestaCompraService añade una unidad del producto mostrado a la cesta */
   addCesta(): void {
     this.cestaService.addProducto(this.producto, 1);
     this.added = true;
diff --git a/src/app/tienda/carousel-productos/carousel-productos.component.ts b/src/app/tienda/carousel-productos/carousel-productos.component.ts
index 647b05b3acfe94d1fb8ab29455d6e6294cc6970e..a4ac8f8e836a917693a6c7d44292a8d1bd506eda 100644
--- a/src/app/tienda/carousel-productos/carousel-productos.component.ts
+++ b/src/app/tienda/carousel-productos/carousel-productos.component.ts
@@ -28,8 +28,9 @@ export class CarouselProductosComponent implements OnInit {
       numVisible: 1,
       numScroll: 1,
     },
-  ];
-  @Input('productos') productos: Producto[];
+  ]; /* Opciones responsivas del carousel  */
+  @Input('productos')
+  productos: Producto[]; /* productos a mostrar en el carousel */
 
   constructor() {}
 
diff --git a/src/app/tienda/categorias/categorias.component.ts b/src/app/tienda/categorias/categorias.component.ts
index 8dfa1d23daa5fc97d3af731e6c4abaeacf85edd5..514555732b1b8f88b0048070058c8c9286c66f8c 100644
--- a/src/app/tienda/categorias/categorias.component.ts
+++ b/src/app/tienda/categorias/categorias.component.ts
@@ -10,16 +10,16 @@ import { DatabaseService } from 'src/app/shared/servicios/database.service';
   providers: [DatabaseService],
 })
 export class CategoriasComponent implements OnInit {
-  @Input('mostrarBotonVolver') mostrarBotonVolver: Boolean;
-  categoriasAMostrar: string[0];
-  paramsSubcription: Subscription;
-  tituloCategorias: string;
+  @Input('mostrarBotonVolver')
+  mostrarBotonVolver: Boolean; /* Booleano que controla el visionado o no del boton volver a la tienda */
+  categoriasAMostrar: string[0]; /* array que contiene las categorias que van a ser mostradas en el componente */
+  paramsSubcription: Subscription; /* Subscripcion a los parametros de la ruta para saber que categorias debemos mostrar */
+  tituloCategorias: string; /* el titulo a mostrar en las categorias, que puede ser categorias principales, o todas las categorias */
   constructor(
     private route: ActivatedRoute,
-    private databaseService: DatabaseService,
-    private router: Router
+    private databaseService: DatabaseService
   ) {}
-
+  /* Se encarga de recuperar de la ruta el componente en el que se ha incrustado este componente para saber lo que debe mostrar */
   ngOnInit(): void {
     switch (this.route.snapshot.url.toString()) {
       case 'tienda':
diff --git a/src/app/tienda/grid-productos/grid-productos.component.ts b/src/app/tienda/grid-productos/grid-productos.component.ts
index f53d50885dab1b8d0afd51e9da6d606b2490458d..0fc3576aa28e9fc88b9cf9dfe02c2189b146c48b 100644
--- a/src/app/tienda/grid-productos/grid-productos.component.ts
+++ b/src/app/tienda/grid-productos/grid-productos.component.ts
@@ -11,19 +11,22 @@ import { DatabaseService } from 'src/app/shared/servicios/database.service';
   providers: [DatabaseService],
 })
 export class GridProductosComponent implements OnInit, OnDestroy {
-  nombreCategoriaProductos: string;
-  paramsSubscription: Subscription;
-  mostrarBotonVolver = false;
-  @Input('productos') productos: Producto[];
+  nombreCategoriaProductos: string; /* El nombre de la categoría de la que se muestran los productos, o todos los productos en caso de mostar todos */
+  paramsSubscription: Subscription; /* La subscripcion a los paramteros para saber donde esta incrustado el componente y saber qué mostrar */
+  mostrarBotonVolver =
+    false; /* booleano que controla el mostrar o no el botón volver a la tienda */
+  @Input('productos')
+  productos: Producto[]; /* lo productos que recibe el componente para ser mostrados */
 
   constructor(
     private route: ActivatedRoute,
     private databaseService: DatabaseService
   ) {}
+  /* Destruye la subscripcion a los parametros de la ruta */
   ngOnDestroy(): void {
     this.paramsSubscription.unsubscribe();
   }
-
+  /* Se encarga de recuperar los productos de una categoria si no estamos en la pagina principal de la tienda, dado que en esa vista se pasan como parametro los productos */
   ngOnInit(): void {
     this.paramsSubscription = this.route.params.subscribe((params) => {
       this.databaseService
diff --git a/src/app/tienda/producto/producto.component.ts b/src/app/tienda/producto/producto.component.ts
index 8c56e88d32548bf2fb8db4f83647ee1e4f64414d..e6294dc643e79aea376432c961394799b5544c85 100644
--- a/src/app/tienda/producto/producto.component.ts
+++ b/src/app/tienda/producto/producto.component.ts
@@ -12,19 +12,25 @@ import { DatabaseService } from 'src/app/shared/servicios/database.service';
   providers: [DatabaseService],
 })
 export class ProductoComponent implements OnInit, OnDestroy {
-  producto: Producto;
-  images = [];
-  cantidadAIncluirEnCesta = 1;
-  private paramsSubscription;
-  showNavigationArrows = true;
-  showNavigationIndicators = true;
+  producto: Producto; /* El producto que se va a mostrar */
+  images = []; /* Las imagenes asociadas al producto */
+  cantidadAIncluirEnCesta = 1; /* La cantidad de producto que va a ser adicionada a la cesta cuando el usuario lo haga */
+  private paramsSubscription; /* La subscripcion a los parámetros de la ruta para saber que prodcuto mostrar */
+  showNavigationArrows =
+    true; /* booleano que se emplea para saber si hay que mostrar las flechas en el carousel de imagenes */
+  showNavigationIndicators =
+    true; /* booleano que se emplea para saber si hay me mostrar los indicadores de imagen en el carousel de imagenes */
+  added =
+    false; /* Booleano que controla el mostrar o no un icono en el boton de añadir a la cesta para dar retroalimentacion al usuario */
 
-  added = false;
   constructor(
     private route: ActivatedRoute,
     private databaseService: DatabaseService,
     private cestaService: CestaCompraService
   ) {}
+
+  /* Recupera de los parametros el identificador del pedido que hay que mostrar y recupera ese pedido de base de datos para mostrarlo. 
+    Tambien carga las imagenes del producto para mostrarlas en el carousel */
   ngOnInit(): void {
     this.paramsSubscription = this.route.params.subscribe((params: Params) => {
       this.databaseService
@@ -47,6 +53,9 @@ export class ProductoComponent implements OnInit, OnDestroy {
   getImage(imagePath: string) {
     return this.databaseService.getDownloadURLFromStorage(imagePath);
   }
+
+  /* Metodo que se llama al hacer click en el boton "añadir a la cesta", el cual hace una llamada al CEstaCompraService para introducir en la cesta el producto. 
+    También modifica el atributo added para mostar un pequeño icono al usuario indicando que la accion se ha completado*/
   addCesta(): void {
     this.cestaService.addProducto(this.producto, this.cantidadAIncluirEnCesta);
     this.added = true;
@@ -54,6 +63,8 @@ export class ProductoComponent implements OnInit, OnDestroy {
       this.added = !this.added;
     }, 1500);
   }
+
+  /* destruye la subscripcion a los parametros de la ruta */
   ngOnDestroy(): void {
     this.paramsSubscription.unsubscribe();
   }
diff --git a/src/app/tienda/tienda-tienda/tienda-tienda.component.ts b/src/app/tienda/tienda-tienda/tienda-tienda.component.ts
index 1e93c038ef17ca5c4a9897c842f9967d0c23fad7..f16f4c634f6d55f781de13af5faf5149ae5a0114 100644
--- a/src/app/tienda/tienda-tienda/tienda-tienda.component.ts
+++ b/src/app/tienda/tienda-tienda/tienda-tienda.component.ts
@@ -1,5 +1,5 @@
 import { Component, OnInit } from '@angular/core';
-import { Subscription } from 'rxjs';
+import { Subscription, take } from 'rxjs';
 import { Producto } from 'src/app/shared/clases/producto';
 import { DatabaseService } from 'src/app/shared/servicios/database.service';
 @Component({
@@ -9,13 +9,14 @@ import { DatabaseService } from 'src/app/shared/servicios/database.service';
   providers: [DatabaseService],
 })
 export class TiendaTiendaComponent implements OnInit {
-  productos: Producto[];
-  productosSubscription: Subscription;
+  productos: Producto[]; /* Los productos que van a ser mostrados */
+  productosSubscription: Subscription; /* Subscripcion a los productos en base de datos*/
   constructor(private databaseService: DatabaseService) {}
-
+  /* Recupera todos los productos de base de datos para mostrarlos en la pagina principal de la tienda */
   ngOnInit(): void {
     this.productosSubscription = this.databaseService
       .getAllProductosFromDatabase()
+      .pipe(take(1))
       .subscribe((productosRes) => {
         this.productos = productosRes.map((p) => {
           return { ...(p.payload.doc.data() as Producto) };