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
  • 2
    Creación del proyecto

    Creación del proyecto

    08:57
Setup inicial
  • 3
    Splashscreen

    Splashscreen

    13:49
  • 4
    Header y contenido

    Header y contenido

    14:27
  • 5
    Layout

    Layout

    13:12
Vista
  • 6
    Resumen de datos

    Resumen de datos

    10:01
  • 7
    Agregando formato a la moneda

    Agregando formato a la moneda

    08:12
  • 8
    Componente del historial

    Componente del historial

    15:40
  • 9
    Lista del historial

    Lista del historial

    16:56
  • 10
    El botón para agregar

    El botón para agregar

    17:59
  • 11
    Formulario para agregar

    Formulario para agregar

    14:00
Gráfico
  • 12
    Creación del SVG del gráfico

    Creación del SVG del gráfico

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

    Creación de las coordenadas en el gráfico

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

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

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

    Creando la interacción con el gráfico

    17:14
Modelo
  • 16
    Modelo de datos

    Modelo de datos

    12:40
  • 17
    Agregar y quitar

    Agregar y quitar

    10:54
  • 18
    Persistencia del modelo

    Persistencia del modelo

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

    Últimos detalles de nuestra aplicación

    12:26
Cierre
  • 20
    Poniendo nuestra aplicación en producción en Netlify

    Poniendo nuestra aplicación en producción en Netlify

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

    ¿Quieres más cursos de Vue?

    01:27
    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 3 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 4 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