Skip to content

Platzi Swag HLD

Dante Calderón edited this page Feb 4, 2021 · 1 revision

Este microservicio se relacion con los siguientes microservicios:

  • **Users**

🔠Definiciones y acrónimos

🏞️ Overview: Problema a Resolver

Proveer un microservicio que permita que permita un usuario postear fotos sobre los productos comprados en la tienda Platzi Store.

Mas especificamente este microservicio provee:

  • Crear/Actualizar/Eliminar Posts
  • Listar Posts a base de filtros
  • Dar Like a Posts

Out of Scope

  • Cache
  • Analytics
  • Multi-size imagenes (por ahora solo guardaremos la imagen original)

📚 Stack

  • Node
  • Nestjs(framework)
  • Typescript
  • MongoDB (Database)

🏦 Arquitectura

Este servicio provee una REST API.

💾 Modelo de datos

Post Schema

{
	"_id": "600c8f1ca4cdc243ff0159f4", // identifier
	"description": "Comparte tu estilo con la comunidad",
	"image": { // same image, with multiple sizes
		"original": "https://image.png",
		"sm": "https://image-sm.png",
		..more sizes
	},
	"location": {
		"type": "Point", // enum [Point],
		"name": "Bogota, Colombia",
		"coordinates": [-2312.0, -123.32],
	},
	"linkedProducts": [ // Productos etiquetados
		"600c87fa4c23109a31483ac3",
		"600c8803234ddf57242ac68a"
	],
	"tags": [ // tags que son sacados de la descripcion(los que viene en forma de hashtags)
		"PlatziSwag",
		"Camisas",
		"Hoddies"
	]
	"commentsEnabled": true,
	"comments": [ // referencia a los comentarios (MS Comentarios)
		"600bb5e135f100c23bc21b3f", 
		"600bb5e87f8de9b7c4192d05"
	]
	"createdBy": { // data del usuario que creo el post, estos datos vienen del microservicio Usuarios
		"id": "83d33945-e7e9-4eb7-b8d1-ecf24c1e7774",
		"name": "John Doe",
		"avatar": "https://small.png",
	},
	"likedBy": [ // ids de los usuario que le dieron like al post
		"4e0da41c-40c7-427b-bf8d-431509518e8a",
		"8eccf60a-fc1f-48a5-b0eb-ec12338f8e3b",
	]
	"createdAt": "2021-01-23T03:17:35.530Z",
	"updatedAt": "2021-01-23T03:17:35.530Z",
}

🕸️Dependencias con otros Microservices

Esta microservicio esta acoplado a los siguientes microservicios:

  • Users necesita los siguientes datos para el campo createdBy.

    {
    	"id": "83d33945-e7e9-4eb7-b8d1-ecf24c1e7774",
    	"name": "John Doe",
    	"avatar": "https://small.png",
    }

    💡 Esto probablemente podria venir en el token del usuario.

💸Costs