Vamos a destripar un poco la red profesional por excelencia, LinkedIn. A ver si con ello vemos parte de sus entresijos, que seguro podremos reutilizar en algún proyecto futuro.
Echando una visual general, además de quedarnos claro de que se trata de una red social orientada al mundo laboral, podemos distinguir los siguientes módulos:
- Feed: Es el muro de noticias.
- Contacts: La parte de contactos, donde haremos crecer nuestra red profesional.
- Jobs: La parte referente al empleo, ofertas y postulaciones.
- Profile: Nuestro perfil, nuestra carta de presentación al mundo.
Casos de uso 🧍
Basándonos en una versión reducida del proyecto, podemos entender que lo que los usuarios van a querer es crear, leer, actualizar o eliminar (CRUD) los distintos elementos que tenemos en los módulos a tratar.
Clases y entidades 🧩
Haciendo una primera aproximación, podemos encontrar las siguientes entidades o clases.
Módulo contact.
User: Serán los usuarios de la aplicación.
Existe una relación entre dos entidades «User», que llamaremos «Contact», pudiendo tener esta relación su propio estado (aceptado/rechazado o pendiente)

Módulo feed.
Feed: Representa al muro de noticias de la aplicación.
Este es el tipo de entidad que en ocasiones te planteas si debe de existir como entidad o simplemente es una «pantallla» de representación de datos. En principio vamos a dejarla, estando asociada 1 a 1 con los usuarios.
Publication: Será una publicación de usuario en el feed. Aunque un feed está claro que consta de 0 ó más publicaciones, una publicación no es única para un feed, ya que piensa que tu publicación aparecerá en feeds de distintos usuarios.
Si te fijas, va tomando fuerza eliminar el elemento feed, y que las publicaciones estén directamente relacionadas con los usuarios. Convirtiendo el «feed» en una simple forma de representación de datos.
Comment: Serán los comentarios que se pueden hacer a nivel de publicación, sea nuestra o no.
Con esto pasamos de una primera aproximación:
A esta segunda.
Módulo Jobs.
El módulo de Trabajo, lo vamos a resumir en que el usuario puede «aplicar» a tantos trabajos como quiera. Donde cada trabajo (job) pertenece a una empresa, pudiendo tener cada empresa tantos trabajos publicados como necesiten.
Módulo Profile.
Tal y como vimos en los casos de uso, el módulo de Profile lo vamos a dividir en la gestión de 3 entidades principales: Education (educación), Experience (experiencia profesional), y Skills (habilidades)
Sequencia de una petición de contacto 🤜🏻 🤛🏻
Veamos uno de los procesos que suelen ser recurrentes en el uso de esta red social, y es el caso de pedir petición de contacto a otra persona.
Cuando enviamos una petición de contacto a otra persona, puede o bien aceptarla, en cuyo caso ambos ya seréis «contactos», y rechazarla en cuyo caso, te quedas con las ganas 😭.
PD: Que me perdonen los chicos de LinkedIn 🙏🏻 por este análisis tan simplista de su aplicación, pero me he centrado en la funcionalidad principal para poder analizarla y así poder aplicar ingeniería inversa al producto.