CursosEmpresasBlogLiveConfPrecios

Resumen de datos

Clase 6 de 21 • Curso Práctico de Vue.js

Clase anteriorSiguiente clase

Contenido del curso

Introducción

  • 1
    Construye una aplicación para el control de tus gastos con Vue.js

    Construye una aplicación para el control de tus gastos con Vue.js

    04:05 min
  • 2
    Creación del proyecto

    Creación del proyecto

    08:57 min

Setup inicial

  • 3
    Splashscreen

    Splashscreen

    13:49 min
  • 4
    Header y contenido

    Header y contenido

    14:27 min
  • 5
    Layout

    Layout

    13:12 min

Vista

  • 6
    Resumen de datos

    Resumen de datos

    Viendo ahora
  • 7
    Agregando formato a la moneda

    Agregando formato a la moneda

    08:12 min
  • 8
    Componente del historial

    Componente del historial

    15:40 min
  • 9
    Lista del historial

    Lista del historial

    16:56 min
  • 10
    El botón para agregar

    El botón para agregar

    17:59 min
  • 11
    Formulario para agregar

    Formulario para agregar

    14:00 min

Gráfico

  • 12
    Creación del SVG del gráfico

    Creación del SVG del gráfico

    15:34 min
  • 13
    Creación de las coordenadas en el gráfico

    Creación de las coordenadas en el gráfico

    18:50 min
  • 14
    Creación de la lógica del gráfico

    Creación de la lógica del gráfico

    12:47 min
  • 15
    Creando la interacción con el gráfico

    Creando la interacción con el gráfico

    17:14 min

Modelo

  • 16
    Modelo de datos

    Modelo de datos

    12:40 min
  • 17
    Agregar y quitar

    Agregar y quitar

    10:54 min
  • 18
    Persistencia del modelo

    Persistencia del modelo

    13:29 min
  • 19
    Últimos detalles de nuestra aplicación

    Últimos detalles de nuestra aplicación

    12:26 min

Cierre

  • 20
    Poniendo nuestra aplicación en producción en Netlify

    Poniendo nuestra aplicación en producción en Netlify

    08:42 min
  • 21
    ¿Quieres más cursos de Vue?

    ¿Quieres más cursos de Vue?

    01:27 min
  • Tomar el examen del curso
    • Ameth Ordoñez Erazo

      Ameth Ordoñez Erazo

      student•
      hace 3 años

      Los estilos del Index.vue del Resume:

      <style scoped> main { display: flex; justify-content: center; align-items: center; flex-direction: column; width: 100%; } h1, p { margin: 0; text-align: center; } h1 { margin-top: 14px; color: var(--brand-green); } .graphic { display: flex; justify-content: center; align-items: center; width: 100%; padding: 48px 24px; box-sizing: border-box; } </style>
        Hans González

        Hans González

        student•
        hace 3 años

        Gracias brother

      Lucas Da Rosa

      Lucas Da Rosa

      student•
      hace 3 años

      Mi solución:

      <script> export default { props: { label: { type: String, }, amount: { type: Number, default: null, }, totalAmount: { type: Number, }, date: { type: String, }, }, computed: { amountVisual() { return this.amount !== null ? this.amount : this.totalAmount; }, labelVisual() { if (this.amount == null) { return this.label; } return this.date; }, }, }; </script>
      Fabricio Orrala

      Fabricio Orrala

      student•
      hace 3 años

      Se puede usar Composition API en un archivo y Options API en otro?

        Diana Martinez

        Diana Martinez

        student•
        hace 3 años

        Claro que si

        Josue Cerron Tuesta

        Josue Cerron Tuesta

        student•
        hace 3 años

        Se puede usar ambos en un mismo archivo también. Pero se recomienda usar uno en el proyecto.

      Jaime Eduardo Falla Cardozo

      Jaime Eduardo Falla Cardozo

      student•
      hace 4 años

      Este es mi proyecto

        Felix Torres Javier Antonio

        Felix Torres Javier Antonio

        student•
        hace 3 años

        Agregalo a GitHub Pages

      Cesar González Caballero

      Cesar González Caballero

      student•
      hace 5 meses

      <style scoped>

      main {

      display: flex;

      justify-content: center;

      align-items: center;

      flex-direction: column;

      width: 100%;

      }

      h1,

      p {

      margin: 0;

      text-align: center;

      }

      h1 {

      margin-top: 14px;

      color: var(--brand-green);

      }

      .graphic {

      display: flex;

      justify-content: center;

      align-items: center;

      width: 100%;

      padding: 48px 24px;

      box-sizing: border-box;

      }

      </style>

      Wendy Mejia

      Wendy Mejia

      student•
      hace 3 años

      Tengo problemas con eslint que me manda a borrar espacios vacios, me gustaria poder usarlo para evitar errores, pero no a un nivel tan tedioso, como se le puede configurar que solo marque verdaderos errores?

        Diana Martinez

        Diana Martinez

        student•
        hace 3 años

        Puedes aprovechar el comando de eslint + --fix, para que corrija los errores fáciles de resolver automáticamente, o puedes crear y editar el archivo de configuración de eslint y meter toda la configuración a tu gusto, eso lo encuentras en la documentación de eslint. https://eslint.org/docs/latest/use/configure/

      Alexander Flores Rayme

      Alexander Flores Rayme

      student•
      hace un año

      <template>  <main class="resume">    <p>      {{ label }}    </p>    <h2>      {{ amountVisual }}    </h2>  </main></template> <script setup>import { computed } from "vue"; const { amount, label, totalAmount } = defineProps({  amount: Number,  totalAmount: Number,  label: String,}); const amountVisual = computed(() => {  return amount !== null ? amount : totalAmount;});</script>

      Nathali Anzola

      Nathali Anzola

      student•
      hace 2 años

      Hola!! les comparto mi solución<template>  <main>    <p>{{ labelVisual }}</p>    <h2>{{ amountVisual }}</h2>  </main></template> <script>export default {  props: {    label: { type: String, required: true },    date: { type: String, default: null },    amount: { type: Number, default: null },    totalAmount: { type: Number },  },  computed: {    amountVisual() {      return this.amount !== null ? this.amount : this.totalAmount;    },    labelVisual() {      return this.date || this.label;    },  },}; </script>```js <template>

      <main> <p>{{ labelVisual }}</p> <h2>{{ amountVisual }}</h2> </main> </template> <script> export default { props: { label: { type: String, required: true }, date: { type: String, default: null }, amount: { type: Number, default: null }, totalAmount: { type: Number }, }, computed: { amountVisual() { return this.amount !== null ? this.amount : this.totalAmount; }, labelVisual() { return this.date || this.label; }, }, }; </script>
      Cesidio Antonio Di Benedetto Carri

      Cesidio Antonio Di Benedetto Carri

      student•
      hace 2 años

      Para hacerlo un poco mas real, cree una arreglo que tiene fechas y montos y cree una propiedad computada que devuelve el total del arreglo.

      Dejo el arreglo por si alguien mas lo quiere usar

      const data = [  {    date: "1/8/2024",    amount: 20823.79,  },  {    date: "1/24/2024",    amount: 3152.06,  },  {    date: "2/26/2023",    amount: 4430.17,  },  {    date: "7/21/2023",    amount: 15369.65,  },  {    date: "9/24/2023",    amount: 6618.09,  },  {    date: "2/7/2023",    amount: 5312.18,  },  {    date: "3/11/2023",    amount: 9195.41,  },  {    date: "11/28/2023",    amount: 17559.02,  },  {    date: "5/22/2023",    amount: 20117.18,  },  {    date: "1/16/2024",    amount: 13961.1,  },  {    date: "11/26/2023",    amount: 3652.74,  },  {    date: "8/13/2023",    amount: 18187.65,  },  {    date: "10/28/2023",    amount: 6987.19,  },  {    date: "1/12/2024",    amount: 3119.4,  },  {    date: "11/21/2023",    amount: 7542.17,  },  {    date: "3/12/2023",    amount: 17814.23,  },  {    date: "9/12/2023",    amount: 12095.57,  },  {    date: "4/27/2023",    amount: 4641.93,  },  {    date: "3/3/2023",    amount: 12634.8,  },  {    date: "9/29/2023",    amount: 17143.73,  },  {    date: "10/12/2023",    amount: 1522.53,  },  {    date: "5/6/2023",    amount: 13567.38,  },  {    date: "1/4/2024",    amount: 2977.87,  },  {    date: "3/18/2023",    amount: 7131.69,  },  {    date: "11/21/2023",    amount: 11780.8,  },  {    date: "1/18/2024",    amount: 11815.86,  },  {    date: "11/26/2023",    amount: 22926.26,  },  {    date: "9/2/2023",    amount: 7594.23,  },  {    date: "10/11/2023",    amount: 4630.2,  },  {    date: "3/13/2023",    amount: 20781.3,  },  {    date: "6/6/2023",    amount: 11390.69,  },  {    date: "4/13/2023",    amount: 16338.37,  },  {    date: "2/28/2023",    amount: 17881.87,  },  {    date: "10/11/2023",    amount: 2331.36,  },  {    date: "6/15/2023",    amount: 11103.48,  },  {    date: "11/9/2023",    amount: 2599.09,  },  {    date: "1/28/2023",    amount: 23738.82,  },  {    date: "6/19/2023",    amount: 8021.65,  },  {    date: "3/12/2023",    amount: 5604.67,  },  {    date: "3/8/2023",    amount: 21311.96,  },  {    date: "2/2/2023",    amount: 1816.74,  },  {    date: "12/23/2023",    amount: 5404.06,  },  {    date: "11/28/2023",    amount: 7744.4,  },  {    date: "4/25/2023",    amount: 10608.9,  },  {    date: "4/17/2023",    amount: 21815.45,  },  {    date: "7/5/2023",    amount: 11746.43,  },  {    date: "7/19/2023",    amount: 19824.12,  },  {    date: "8/22/2023",    amount: 19977.67,  },  {    date: "11/5/2023",    amount: 7344.03,  },  {    date: "2/17/2023",    amount: 13347.68,  },  {    date: "10/9/2023",    amount: 4904.94,  },  {    date: "6/17/2023",    amount: 11664.09,  },  {    date: "10/17/2023",    amount: 12247.04,  },  {    date: "5/10/2023",    amount: 14293.81,  },  {    date: "7/25/2023",    amount: 7425.03,  },  {    date: "6/27/2023",    amount: 4129.25,  },  {    date: "7/15/2023",    amount: 16421.45,  },  {    date: "10/23/2023",    amount: 21738.46,  },  {    date: "7/6/2023",    amount: 5455.79,  },  {    date: "10/11/2023",    amount: 17494.79,  },  {    date: "5/12/2023",    amount: 24565.4,  },  {    date: "6/17/2023",    amount: 22787.62,  },  {    date: "12/18/2023",    amount: 6659.55,  },  {    date: "4/11/2023",    amount: 10978.4,  },  {    date: "7/14/2023",    amount: 23773.24,  },  {    date: "4/14/2023",    amount: 8688.24,  },  {    date: "3/20/2023",    amount: 11118.29,  },  {    date: "2/24/2023",    amount: 19238.98,  },  {    date: "9/4/2023",    amount: 15077.51,  },  {    date: "9/9/2023",    amount: 9251.18,  },  {    date: "12/27/2023",    amount: 9307.45,  },  {    date: "10/17/2023",    amount: 5121.13,  },  {    date: "10/30/2023",    amount: 15649.65,  },  {    date: "8/11/2023",    amount: 11574.35,  },  {    date: "11/5/2023",    amount: 21995.88,  },  {    date: "1/30/2023",    amount: 14133.58,  },  {    date: "7/21/2023",    amount: 17170.08,  },  {    date: "4/5/2023",    amount: 13438.48,  },  {    date: "11/3/2023",    amount: 3522.37,  },  {    date: "8/3/2023",    amount: 17210.06,  },  {    date: "8/31/2023",    amount: 12097.81,  },  {    date: "5/7/2023",    amount: 18118.22,  },  {    date: "3/15/2023",    amount: 9370.82,  },  {    date: "8/29/2023",    amount: 13671.87,  },  {    date: "1/22/2024",    amount: 2526.03,  },  {    date: "11/16/2023",    amount: 13959.17,  },  {    date: "7/18/2023",    amount: 13273.48,  },  {    date: "9/24/2023",    amount: 19931.42,  },  {    date: "10/21/2023",    amount: 8111.76,  },  {    date: "12/30/2023",    amount: 23845.41,  },  {    date: "9/9/2023",    amount: 5140.1,  },  {    date: "4/13/2023",    amount: 10185.53,  },  {    date: "5/27/2023",    amount: 10980.17,  },  {    date: "12/20/2023",    amount: 13038.14,  },  {    date: "7/12/2023",    amount: 23479.35,  },  {    date: "6/28/2023",    amount: 5058.69,  },  {    date: "4/2/2023",    amount: 23941.86,  },  {    date: "2/8/2023",    amount: 16924.1,  },  {    date: "5/14/2023",    amount: 4597.63,  },  {    date: "11/12/2023",    amount: 13485.06,  },];

      export default data;

      Jose Alejandro Pantoja Giraldo

      Jose Alejandro Pantoja Giraldo

      student•
      hace 3 años

      Mi solucion:

      labelVisual() { return this.amount !== null ? "2023-02-22" : this.label; },
      Yefreilee Danny Samuel Parra

      Yefreilee Danny Samuel Parra

      student•
      hace 3 años

      En el amount en Home, le coloque como parametro :amount="null" y me funciono perfectamente, lo que me gustaria saber si es correcto que lo haga asi, o si por lo contrario deberia hacerle una variable y returnar el valor de null? Saludos!

        Luis Cano

        Luis Cano

        student•
        hace 3 años

        Si puedes asignar directamente null al prop de tu componente :amount=“null”, pero es mejor pasarle una variable :amount=“amount” ya que luego puedes poner un watcher al prop si quieres "escuchar" un cambio en el componente padre.

      Miguel Angel Reyes Moreno

      Miguel Angel Reyes Moreno

      student•
      hace 3 años

      Esto hice para una fecha:

      Index.vue:

      <template> <main> <p>{{ selectedDate }}</p> <h2>{{ amountVisual }}</h2> </main> </template> <script> export default { props: { label: { type: String, required: true, }, dateLabel: { type: String, default: null, }, totalAmount: { type: Number, required: true, }, amount: { type: Number, default: null, }, }, computed: { amountVisual() { return this.amount !== null ? this.amount : this.totalAmount; }, selectedDate() { return this.dateLabel !== null ? this.dateLabel : this.label; }, }, }; </script> <style scoped> main { display: flex; justify-content: center; align-items: center; flex-direction: column; width: 100%; } h1, p { margin: 0; text-align: center; } h1 { margin-top: 14px; color: var(--brand-green); } .graphic { display: flex; justify-content: center; align-items: center; width: 100%; padding: 48px 24px; box-sizing: border-box; } </style>

      Home.vue:

      <template> <Layout> <template #header> <Header></Header> </template> <template #resume> <Resume :label="'Ahorro total'" :totalAmount="50000" :amount="amount" :dateLabel="dateLabel" /> </template> <template #movements> <Movements /> </template> </Layout> </template> <script> import Header from "./Header.vue"; import Layout from "./Layout.vue"; import Movements from "./Movements.vue"; import Resume from "./Resume/Index.vue"; export default { components: { Header, Layout, Movements, Resume, }, data() { return { amount: null, dateLabel: "22/10/2022", }; }, }; </script>
        Juan Guillermo Perez Cardozo

        Juan Guillermo Perez Cardozo

        student•
        hace 3 años

        me parece una buena forma de lograr el reto

      Kenneth Leonel Cruz Ordoñez

      Kenneth Leonel Cruz Ordoñez

      student•
      hace 4 años

      Index.vue

      //se agrega función computada y se utiliza dicha función en el template labelVisual(){ const timestamp = (new Date).toLocaleString('en-US'); const label = 'Ahorro total'; return this.label !== null ? label : `${label}: ${timestamp}`; },
      //En la función data, se agrega la variable 'label' y se envía como parametro de 'label' en el template `Resume` data(){ return { amount: null, label: null, }
      Francisco Javier Cervantes Candelario

      Francisco Javier Cervantes Candelario

      student•
      hace 4 años

      Mi solución al reto:

      Home.vue

      <template> <Layout> <template #header> <Header /> </template> <template #resume> <Resume :label="'Ahorro total'" :date="date" :amount="amount" :total-amount="200000" /> </template> <template #movements> <Movements /> </template> </Layout> </template> <script> import Layout from "./Layout.vue"; import Header from "./Header.vue"; import Resume from "./Resume/Index.vue"; import Movements from "./Movements.vue"; export default { components: { Layout, Header, Resume, Movements, }, data() { return { amount: 100, date: "26 de noviembre del 2022", }; }, }; </script> <style></style>

      Index.vue

      <template> <main> <p v-text="labelShow"></p> <h1 v-text="amountShow"></h2> </main> </template> <script> export default { props: { label: { type: String, }, date: { type: String, default: null, }, amount: { type: Number, default: null, }, totalAmount: { type: Number, }, }, computed: { amountShow() { return this.amount !== null ? this.amount : this.totalAmount; }, labelShow() { return this.date == null ? this.label : this.date; }, }, data() { return {}; }, }; </script> <style scoped> main { display: flex; justify-content: center; align-items: center; flex-direction: column; width: 100vh; } h1, p { margin: 0; text-align: center; } h1 { margin-top: 14px; color: var(--brand-green); } </style>
      Alvaro Eduardo Armijos Sarango

      Alvaro Eduardo Armijos Sarango

      student•
      hace 4 años

      Así me quedo la parte del reto:

      Home.vue:

      <template> <Layout> <template #header> <Header /> </template> <template #resume> <Resume :label="label" :date="'06 de Abril 2022'" :total-amount="100000" :amount="amount" /> </template> <template #movements> <Movements /> </template> </Layout> </template> <script> import Layout from "./Layout.vue"; import Header from "./Header.vue"; import Resume from "./Resume/Index.vue"; import Movements from "./Movements.vue"; export default { components: { Layout, Header, Resume, Movements, }, data() { return { amount: null, label: null, }; }, }; </script>

      Index.vue:

      <template> <main> <p>{{ labelVisual }}</p> <h2>{{ amountVisual }}</h2> </main> </template> <script> export default { props: { label: { type: String, default: null, }, date: { type: String, }, totalAmount: { type: Number, }, amount: { type: Number, default: null, }, }, computed: { amountVisual() { return this.amount !== null ? this.amount : this.totalAmount; }, labelVisual() { return this.label !== null ? this.label : this.date; }, }, }; </script> <style scoped> main { display: flex; justify-content: center; align-items: center; flex-direction: column; width: 100%; } h1, p { margin: 0; text-align: center; } h1 { margin-top: 14px; color: var(--brand-green); } .graphic { display: flex; justify-content: center; align-items: center; width: 100%; padding: 48px 24px; box-sizing: border-box; } </style>
      Javier Andrés Moreno Tocarruncho

      Javier Andrés Moreno Tocarruncho

      student•
      hace 4 años

      Va, realicé el reto de esta forma. Cualquier mejora que me sugieran será bienvenida. 😁

      El template Home

      <template> <Layout> <template #header> <Header /> </template> <template #resume> <Resume :label="'Ahorro total'" :specific-date="specificDate" :total-amount="100000" :specific-amount="specificAmount" /> </template> <template #movements> <Movements /> </template> </Layout> </template> <style></style> <script> import Layout from "./LayoutItem.vue"; import Header from "./HeaderItem.vue"; import Resume from "./Resume/IndexResume.vue"; import Movements from "./Movements/IndexMovements.vue"; export default { components: { Layout, Header, Resume, Movements, }, data() { return { specificAmount: null, specificDate: null, }; }, }; </script>

      El template Resume

      <template> <main> <p>{{ labelInfo }}</p> <h2>{{ amountToShow }}</h2> </main> </template> <script> export default { props: { label: { type: String, }, totalAmount: { type: Number, }, specificAmount: { type: Number, default: null, }, specificDate: { type: String, default: null, }, }, computed: { amountToShow() { return this.specificAmount !== null ? this.specificAmount : this.totalAmount; }, labelInfo() { return this.label !== null ? this.label : this.labelInfo; }, }, }; </script> <style scoped> main { display: flex; justify-content: center; align-items: center; flex-direction: column; width: 100%; } h1, p { margin: 0; text-align: center; } h1 { margin-top: 14px; color: var(--brand-green); } .graphic { display: flex; justify-content: center; align-items: center; width: 100%; padding: 48px 24px; box-sizing: border-box; } </style>

    Escuelas

    • Desarrollo Web
      • Fundamentos del Desarrollo Web Profesional
      • Diseño y Desarrollo Frontend
      • Desarrollo Frontend con JavaScript
      • Desarrollo Frontend con Vue.js
      • Desarrollo Frontend con Angular
      • Desarrollo Frontend con React.js
      • Desarrollo Backend con Node.js
      • Desarrollo Backend con Python
      • Desarrollo Backend con Java
      • Desarrollo Backend con PHP
      • Desarrollo Backend con Ruby
      • Bases de Datos para Web
      • Seguridad Web & API
      • Testing Automatizado y QA para Web
      • Arquitecturas Web Modernas y Escalabilidad
      • DevOps y Cloud para Desarrolladores Web
    • English Academy
      • Inglés Básico A1
      • Inglés Básico A2
      • Inglés Intermedio B1
      • Inglés Intermedio Alto B2
      • Inglés Avanzado C1
      • Inglés para Propósitos Específicos
      • Inglés de Negocios
    • Marketing Digital
      • Fundamentos de Marketing Digital
      • Marketing de Contenidos y Redacción Persuasiva
      • SEO y Posicionamiento Web
      • Social Media Marketing y Community Management
      • Publicidad Digital y Paid Media
      • Analítica Digital y Optimización (CRO)
      • Estrategia de Marketing y Growth
      • Marketing de Marca y Comunicación Estratégica
      • Marketing para E-commerce
      • Marketing B2B
      • Inteligencia Artificial Aplicada al Marketing
      • Automatización del Marketing
      • Marca Personal y Marketing Freelance
      • Ventas y Experiencia del Cliente
      • Creación de Contenido para Redes Sociales
    • Inteligencia Artificial y Data Science
      • Fundamentos de Data Science y AI
      • Análisis y Visualización de Datos
      • Machine Learning y Deep Learning
      • Data Engineer
      • Inteligencia Artificial para la Productividad
      • Desarrollo de Aplicaciones con IA
      • AI Software Engineer
    • Ciberseguridad
      • Fundamentos de Ciberseguridad
      • Hacking Ético y Pentesting (Red Team)
      • Análisis de Malware e Ingeniería Forense
      • Seguridad Defensiva y Cumplimiento (Blue Team)
      • Ciberseguridad Estratégica
    • Liderazgo y Habilidades Blandas
      • Fundamentos de Habilidades Profesionales
      • Liderazgo y Gestión de Equipos
      • Comunicación Avanzada y Oratoria
      • Negociación y Resolución de Conflictos
      • Inteligencia Emocional y Autogestión
      • Productividad y Herramientas Digitales
      • Gestión de Proyectos y Metodologías Ágiles
      • Desarrollo de Carrera y Marca Personal
      • Diversidad, Inclusión y Entorno Laboral Saludable
      • Filosofía y Estrategia para Líderes
    • Diseño de Producto y UX
      • Fundamentos de Diseño UX/UI
      • Investigación de Usuarios (UX Research)
      • Arquitectura de Información y Usabilidad
      • Diseño de Interfaces y Prototipado (UI Design)
      • Sistemas de Diseño y DesignOps
      • Redacción UX (UX Writing)
      • Creatividad e Innovación en Diseño
      • Diseño Accesible e Inclusivo
      • Diseño Asistido por Inteligencia Artificial
      • Gestión de Producto y Liderazgo en Diseño
      • Diseño de Interacciones Emergentes (VUI/VR)
      • Desarrollo Web para Diseñadores
      • Diseño y Prototipado No-Code
    • Contenido Audiovisual
      • Fundamentos de Producción Audiovisual
      • Producción de Video para Plataformas Digitales
      • Producción de Audio y Podcast
      • Fotografía y Diseño Gráfico para Contenido Digital
      • Motion Graphics y Animación
      • Contenido Interactivo y Realidad Aumentada
      • Estrategia, Marketing y Monetización de Contenidos
    • Desarrollo Móvil
      • Fundamentos de Desarrollo Móvil
      • Desarrollo Nativo Android con Kotlin
      • Desarrollo Nativo iOS con Swift
      • Desarrollo Multiplataforma con React Native
      • Desarrollo Multiplataforma con Flutter
      • Arquitectura y Patrones de Diseño Móvil
      • Integración de APIs y Persistencia Móvil
      • Testing y Despliegue en Móvil
      • Diseño UX/UI para Móviles
    • Diseño Gráfico y Arte Digital
      • Fundamentos del Diseño Gráfico y Digital
      • Diseño de Identidad Visual y Branding
      • Ilustración Digital y Arte Conceptual
      • Diseño Editorial y de Empaques
      • Motion Graphics y Animación 3D
      • Diseño Gráfico Asistido por Inteligencia Artificial
      • Creatividad e Innovación en Diseño
    • Programación
      • Fundamentos de Programación e Ingeniería de Software
      • Herramientas de IA para el trabajo
      • Matemáticas para Programación
      • Programación con Python
      • Programación con JavaScript
      • Programación con TypeScript
      • Programación Orientada a Objetos con Java
      • Desarrollo con C# y .NET
      • Programación con PHP
      • Programación con Go y Rust
      • Programación Móvil con Swift y Kotlin
      • Programación con C y C++
      • Administración Básica de Servidores Linux
    • Negocios
      • Fundamentos de Negocios y Emprendimiento
      • Estrategia y Crecimiento Empresarial
      • Finanzas Personales y Corporativas
      • Inversión en Mercados Financieros
      • Ventas, CRM y Experiencia del Cliente
      • Operaciones, Logística y E-commerce
      • Gestión de Proyectos y Metodologías Ágiles
      • Aspectos Legales y Cumplimiento
      • Habilidades Directivas y Crecimiento Profesional
      • Diversidad e Inclusión en el Entorno Laboral
      • Herramientas Digitales y Automatización para Negocios
    • Blockchain y Web3
      • Fundamentos de Blockchain y Web3
      • Desarrollo de Smart Contracts y dApps
      • Finanzas Descentralizadas (DeFi)
      • NFTs y Economía de Creadores
      • Seguridad Blockchain
      • Ecosistemas Blockchain Alternativos (No-EVM)
      • Producto, Marketing y Legal en Web3
    • Recursos Humanos
      • Fundamentos y Cultura Organizacional en RRHH
      • Atracción y Selección de Talento
      • Cultura y Employee Experience
      • Gestión y Desarrollo de Talento
      • Desarrollo y Evaluación de Liderazgo
      • Diversidad, Equidad e Inclusión
      • AI y Automatización en Recursos Humanos
      • Tecnología y Automatización en RRHH
    • Finanzas e Inversiones
      • Fundamentos de Finanzas Personales y Corporativas
      • Análisis y Valoración Financiera
      • Inversión y Mercados de Capitales
      • Finanzas Descentralizadas (DeFi) y Criptoactivos
      • Finanzas y Estrategia para Startups
      • Inteligencia Artificial Aplicada a Finanzas
      • Domina Excel
      • Financial Analyst
      • Conseguir trabajo en Finanzas e Inversiones
    • Startups
      • Fundamentos y Validación de Ideas
      • Estrategia de Negocio y Product-Market Fit
      • Desarrollo de Producto y Operaciones Lean
      • Finanzas, Legal y Fundraising
      • Marketing, Ventas y Growth para Startups
      • Cultura, Talento y Liderazgo
      • Finanzas y Operaciones en Ecommerce
      • Startups Web3 y Blockchain
      • Startups con Impacto Social
      • Expansión y Ecosistema Startup
    • Cloud Computing y DevOps
      • Fundamentos de Cloud y DevOps
      • Administración de Servidores Linux
      • Contenerización y Orquestación
      • Infraestructura como Código (IaC) y CI/CD
      • Amazon Web Services
      • Microsoft Azure
      • Serverless y Observabilidad
      • Certificaciones Cloud (Preparación)
      • Plataforma Cloud GCP

    Platzi y comunidad

    • Platzi Business
    • Live Classes
    • Lanzamientos
    • Executive Program
    • Trabaja con nosotros
    • Podcast

    Recursos

    • Manual de Marca

    Soporte

    • Preguntas Frecuentes
    • Contáctanos

    Legal

    • Términos y Condiciones
    • Privacidad
    • Tyc promociones
    Reconocimientos
    Reconocimientos
    Logo reconocimientoTop 40 Mejores EdTech del mundo · 2024
    Logo reconocimientoPrimera Startup Latina admitida en YC · 2014
    Logo reconocimientoPrimera Startup EdTech · 2018
    Logo reconocimientoCEO Ganador Medalla por la Educación T4 & HP · 2024
    Logo reconocimientoCEO Mejor Emprendedor del año · 2024
    De LATAM conpara el mundo
    YoutubeInstagramLinkedInTikTokFacebookX (Twitter)Threads