<?xml version="1.0" encoding="utf-8"?><?xml-stylesheet type="text/xsl" href="atom.xsl"?>
<feed xmlns="http://www.w3.org/2005/Atom">
    <id>https://proyectohhss2025-unad.github.io/blog</id>
    <title>Vibra Wiki Blog</title>
    <updated>2026-03-02T00:00:00.000Z</updated>
    <generator>https://github.com/jpmonette/feed</generator>
    <link rel="alternate" href="https://proyectohhss2025-unad.github.io/blog"/>
    <subtitle>Vibra Wiki Blog</subtitle>
    <icon>https://proyectohhss2025-unad.github.io/img/favicon.ico</icon>
    <entry>
        <title type="html"><![CDATA[Inside Vibra's MongoDB Architecture]]></title>
        <id>https://proyectohhss2025-unad.github.io/blog/activities-vibra-post</id>
        <link href="https://proyectohhss2025-unad.github.io/blog/activities-vibra-post"/>
        <updated>2026-03-02T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[The backbone of any robust application is its data model. In this post, we'll explore the MongoDB database architecture that powers the Vibra platform, examining how we've structured our data to support educational activities, user management, and organizational needs.]]></summary>
        <content type="html"><![CDATA[<p>The backbone of any robust application is its data model. In this post, we'll explore the MongoDB database architecture that powers the Vibra platform, examining how we've structured our data to support educational activities, user management, and organizational needs.</p>
<div class="theme-admonition theme-admonition-tip admonition_xJq3 alert alert--success"><div class="admonitionHeading_Gvgb"><span class="admonitionIcon_Rf37"><svg viewBox="0 0 12 16"><path fill-rule="evenodd" d="M6.5 0C3.48 0 1 2.19 1 5c0 .92.55 2.25 1 3 1.34 2.25 1.78 2.78 2 4v1h5v-1c.22-1.22.66-1.75 2-4 .45-.75 1-2.08 1-3 0-2.81-2.48-5-5.5-5zm3.64 7.48c-.25.44-.47.8-.67 1.11-.86 1.41-1.25 2.06-1.45 3.23-.02.05-.02.11-.02.17H5c0-.06 0-.13-.02-.17-.2-1.17-.59-1.83-1.45-3.23-.2-.31-.42-.67-.67-1.11C2.44 6.78 2 5.65 2 5c0-2.2 2.02-4 4.5-4 1.22 0 2.36.42 3.22 1.19C10.55 2.94 11 3.94 11 5c0 .66-.44 1.78-.86 2.48zM4 14h5c-.23 1.14-1.3 2-2.5 2s-2.27-.86-2.5-2z"></path></svg></span>tip</div><div class="admonitionContent_BuS1"><p>MongoDB's document-oriented approach gives us the flexibility to evolve our data model as Vibra's requirements grow, while maintaining performance at scale.</p></div></div>
<!-- -->
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="domain-driven-database-design">Domain-Driven Database Design<a href="https://proyectohhss2025-unad.github.io/blog/activities-vibra-post#domain-driven-database-design" class="hash-link" aria-label="Direct link to Domain-Driven Database Design" title="Direct link to Domain-Driven Database Design" translate="no">​</a></h2>
<p>Vibra's database architecture follows domain-driven design principles, organizing collections into logical domains that reflect the business capabilities of the application:</p>
<ul>
<li class=""><strong>User Management</strong>: Handling authentication, authorization, and user profiles</li>
<li class=""><strong>Activities and Learning</strong>: Managing educational content and user interactions</li>
<li class=""><strong>Notifications</strong>: Supporting real-time user communication</li>
<li class=""><strong>Permissions and Access Control</strong>: Implementing fine-grained security</li>
<li class=""><strong>Organizations</strong>: Managing institutional hierarchies</li>
<li class=""><strong>System Configuration</strong>: Controlling application behavior</li>
<li class=""><strong>Audit and Reporting</strong>: Tracking system usage and generating insights</li>
</ul>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="key-collections-and-relationships">Key Collections and Relationships<a href="https://proyectohhss2025-unad.github.io/blog/activities-vibra-post#key-collections-and-relationships" class="hash-link" aria-label="Direct link to Key Collections and Relationships" title="Direct link to Key Collections and Relationships" translate="no">​</a></h2>
<p>Let's explore some of the most important collections in our database and how they relate to each other:</p>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="activities-domain">Activities Domain<a href="https://proyectohhss2025-unad.github.io/blog/activities-vibra-post#activities-domain" class="hash-link" aria-label="Direct link to Activities Domain" title="Direct link to Activities Domain" translate="no">​</a></h3>
<p>The Activities collection is central to Vibra's educational functionality:</p>
<div class="language-js codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-js codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><div class="token-line" style="color:#393A34"><span class="token comment" style="color:#999988;font-style:italic">// Example Activity document</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token string-property property" style="color:#36acaa">"_id"</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token function maybe-class-name" style="color:#d73a49">ObjectId</span><span class="token punctuation" style="color:#393A34">(</span><span class="token string" style="color:#e3116c">"60d21b4667d0d8992e610c85"</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token string-property property" style="color:#36acaa">"id"</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"act-emotional-awareness-1"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token string-property property" style="color:#36acaa">"emotions"</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"joy,surprise"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token string-property property" style="color:#36acaa">"title"</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"Emotional Awareness Exercise"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token string-property property" style="color:#36acaa">"resources"</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">[</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">      </span><span class="token string-property property" style="color:#36acaa">"type"</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"video"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">      </span><span class="token string-property property" style="color:#36acaa">"url"</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"https://resources.vibra.co/videos/emotional-awareness.mp4"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">      </span><span class="token string-property property" style="color:#36acaa">"duration"</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">180</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">      </span><span class="token string-property property" style="color:#36acaa">"metadata"</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">        </span><span class="token string-property property" style="color:#36acaa">"author"</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"Dr. Emma Rodriguez"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">        </span><span class="token string-property property" style="color:#36acaa">"language"</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"es"</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">      </span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token punctuation" style="color:#393A34">]</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token string-property property" style="color:#36acaa">"questions"</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">[</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">      </span><span class="token string-property property" style="color:#36acaa">"id"</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"q1"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">      </span><span class="token string-property property" style="color:#36acaa">"questionText"</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"How did you feel after watching the video?"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">      </span><span class="token string-property property" style="color:#36acaa">"type"</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"multiple-choice"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">      </span><span class="token string-property property" style="color:#36acaa">"options"</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">[</span><span class="token string" style="color:#e3116c">"Happy"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"Confused"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"Inspired"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"Neutral"</span><span class="token punctuation" style="color:#393A34">]</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">      </span><span class="token string-property property" style="color:#36acaa">"correctAnswer"</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token keyword null nil" style="color:#00009f">null</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">      </span><span class="token string-property property" style="color:#36acaa">"points"</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">5</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token punctuation" style="color:#393A34">]</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token string-property property" style="color:#36acaa">"difficulty"</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">2</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token string-property property" style="color:#36acaa">"isActive"</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token boolean" style="color:#36acaa">true</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token string-property property" style="color:#36acaa">"schedule"</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token string-property property" style="color:#36acaa">"date"</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token function maybe-class-name" style="color:#d73a49">ISODate</span><span class="token punctuation" style="color:#393A34">(</span><span class="token string" style="color:#e3116c">"2025-12-06T00:00:00Z"</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token string-property property" style="color:#36acaa">"weekNumber"</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">24</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token string-property property" style="color:#36acaa">"year"</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">2025</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token punctuation" style="color:#393A34">}</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token string-property property" style="color:#36acaa">"createdAt"</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token function maybe-class-name" style="color:#d73a49">ISODate</span><span class="token punctuation" style="color:#393A34">(</span><span class="token string" style="color:#e3116c">"2025-12-06T14:30:00Z"</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">}</span><br></div></code></pre></div></div>
<p>Activities are linked to Emotions, which categorize the emotional learning objectives:</p>
<div class="language-js codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-js codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><div class="token-line" style="color:#393A34"><span class="token comment" style="color:#999988;font-style:italic">// Example Emotion document</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token string-property property" style="color:#36acaa">"_id"</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token function maybe-class-name" style="color:#d73a49">ObjectId</span><span class="token punctuation" style="color:#393A34">(</span><span class="token string" style="color:#e3116c">"60d21b4667d0d8992e610c86"</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token string-property property" style="color:#36acaa">"id"</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"joy"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token string-property property" style="color:#36acaa">"name"</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"Joy"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token string-property property" style="color:#36acaa">"orientationNote"</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"Focus on positive experiences and gratitude"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token string-property property" style="color:#36acaa">"description"</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"A feeling of great pleasure and happiness"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token string-property property" style="color:#36acaa">"icono"</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"joy-icon.svg"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token string-property property" style="color:#36acaa">"percentNote"</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">85</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">}</span><br></div></code></pre></div></div>
<p>When users complete activities, their responses are stored in the UserResponses collection:</p>
<div class="language-js codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-js codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><div class="token-line" style="color:#393A34"><span class="token comment" style="color:#999988;font-style:italic">// Example UserResponse document</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token string-property property" style="color:#36acaa">"_id"</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token function maybe-class-name" style="color:#d73a49">ObjectId</span><span class="token punctuation" style="color:#393A34">(</span><span class="token string" style="color:#e3116c">"60d21b4667d0d8992e610c87"</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token string-property property" style="color:#36acaa">"user"</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"user123"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token string-property property" style="color:#36acaa">"activity"</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"act-emotional-awareness-1"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token string-property property" style="color:#36acaa">"responses"</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">[</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">      </span><span class="token string-property property" style="color:#36acaa">"questionId"</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"q1"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">      </span><span class="token string-property property" style="color:#36acaa">"answer"</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"Inspired"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">      </span><span class="token string-property property" style="color:#36acaa">"isCorrect"</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token keyword null nil" style="color:#00009f">null</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">      </span><span class="token string-property property" style="color:#36acaa">"responseTime"</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">12</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token punctuation" style="color:#393A34">]</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token string-property property" style="color:#36acaa">"score"</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">5</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token string-property property" style="color:#36acaa">"startTime"</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token function maybe-class-name" style="color:#d73a49">ISODate</span><span class="token punctuation" style="color:#393A34">(</span><span class="token string" style="color:#e3116c">"2025-12-06T10:15:00Z"</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token string-property property" style="color:#36acaa">"endTime"</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token function maybe-class-name" style="color:#d73a49">ISODate</span><span class="token punctuation" style="color:#393A34">(</span><span class="token string" style="color:#e3116c">"2025-12-06T10:18:30Z"</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token string-property property" style="color:#36acaa">"timeSpent"</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">210</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token string-property property" style="color:#36acaa">"createdAt"</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token function maybe-class-name" style="color:#d73a49">ISODate</span><span class="token punctuation" style="color:#393A34">(</span><span class="token string" style="color:#e3116c">"2025-12-06T10:18:30Z"</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token string-property property" style="color:#36acaa">"updatedAt"</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token function maybe-class-name" style="color:#d73a49">ISODate</span><span class="token punctuation" style="color:#393A34">(</span><span class="token string" style="color:#e3116c">"2025-12-06T10:18:30Z"</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">}</span><br></div></code></pre></div></div>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="user-management-domain">User Management Domain<a href="https://proyectohhss2025-unad.github.io/blog/activities-vibra-post#user-management-domain" class="hash-link" aria-label="Direct link to User Management Domain" title="Direct link to User Management Domain" translate="no">​</a></h3>
<p>The Users collection stores comprehensive information about system users:</p>
<div class="language-js codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-js codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><div class="token-line" style="color:#393A34"><span class="token comment" style="color:#999988;font-style:italic">// Example User document</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token string-property property" style="color:#36acaa">"_id"</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token function maybe-class-name" style="color:#d73a49">ObjectId</span><span class="token punctuation" style="color:#393A34">(</span><span class="token string" style="color:#e3116c">"60d21b4667d0d8992e610c88"</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token string-property property" style="color:#36acaa">"name"</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"Maria Garcia"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token string-property property" style="color:#36acaa">"documentType"</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token function maybe-class-name" style="color:#d73a49">ObjectId</span><span class="token punctuation" style="color:#393A34">(</span><span class="token string" style="color:#e3116c">"60d21b4667d0d8992e610c89"</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token string-property property" style="color:#36acaa">"documentNumber"</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"1098765432"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token string-property property" style="color:#36acaa">"email"</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"maria.garcia@example.com"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token string-property property" style="color:#36acaa">"username"</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"maria.garcia"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token string-property property" style="color:#36acaa">"password"</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"$2a$10$hKDVYxLefVHV/vtuPhWD3OigtRyOykRLDdUAp80Z1crSoS1lFqaFS"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token string-property property" style="color:#36acaa">"role"</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token function maybe-class-name" style="color:#d73a49">ObjectId</span><span class="token punctuation" style="color:#393A34">(</span><span class="token string" style="color:#e3116c">"60d21b4667d0d8992e610c8a"</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token string-property property" style="color:#36acaa">"company"</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token function maybe-class-name" style="color:#d73a49">ObjectId</span><span class="token punctuation" style="color:#393A34">(</span><span class="token string" style="color:#e3116c">"60d21b4667d0d8992e610c8b"</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token string-property property" style="color:#36acaa">"isActive"</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token boolean" style="color:#36acaa">true</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token string-property property" style="color:#36acaa">"createdAt"</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token function maybe-class-name" style="color:#d73a49">ISODate</span><span class="token punctuation" style="color:#393A34">(</span><span class="token string" style="color:#e3116c">"2025-12-06T08:30:00Z"</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">}</span><br></div></code></pre></div></div>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="smart-database-design-patterns">Smart Database Design Patterns<a href="https://proyectohhss2025-unad.github.io/blog/activities-vibra-post#smart-database-design-patterns" class="hash-link" aria-label="Direct link to Smart Database Design Patterns" title="Direct link to Smart Database Design Patterns" translate="no">​</a></h2>
<p>Our MongoDB implementation leverages several design patterns that enhance maintainability and performance:</p>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="1-embedded-documents-for-related-data">1. Embedded Documents for Related Data<a href="https://proyectohhss2025-unad.github.io/blog/activities-vibra-post#1-embedded-documents-for-related-data" class="hash-link" aria-label="Direct link to 1. Embedded Documents for Related Data" title="Direct link to 1. Embedded Documents for Related Data" translate="no">​</a></h3>
<p>We use embedded documents for closely related data that is always accessed together. For example, Activity documents embed Resources and Questions, optimizing read performance by reducing the need for joins.</p>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="2-references-for-shared-data">2. References for Shared Data<a href="https://proyectohhss2025-unad.github.io/blog/activities-vibra-post#2-references-for-shared-data" class="hash-link" aria-label="Direct link to 2. References for Shared Data" title="Direct link to 2. References for Shared Data" translate="no">​</a></h3>
<p>For data that is shared across multiple documents (like Users referenced by UserResponses), we use references to maintain data integrity and avoid duplication.</p>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="3-soft-deletion-pattern">3. Soft Deletion Pattern<a href="https://proyectohhss2025-unad.github.io/blog/activities-vibra-post#3-soft-deletion-pattern" class="hash-link" aria-label="Direct link to 3. Soft Deletion Pattern" title="Direct link to 3. Soft Deletion Pattern" translate="no">​</a></h3>
<p>Instead of permanently removing data, most collections implement soft deletion with <code>deleted</code> and <code>deletedAt</code> fields, preserving data for auditing while removing it from active use.</p>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="4-comprehensive-audit-trails">4. Comprehensive Audit Trails<a href="https://proyectohhss2025-unad.github.io/blog/activities-vibra-post#4-comprehensive-audit-trails" class="hash-link" aria-label="Direct link to 4. Comprehensive Audit Trails" title="Direct link to 4. Comprehensive Audit Trails" translate="no">​</a></h3>
<p>Most collections include creation and modification timestamps and user references, enabling detailed tracking of data changes over time.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="visualization-of-key-relationships">Visualization of Key Relationships<a href="https://proyectohhss2025-unad.github.io/blog/activities-vibra-post#visualization-of-key-relationships" class="hash-link" aria-label="Direct link to Visualization of Key Relationships" title="Direct link to Visualization of Key Relationships" translate="no">​</a></h2>
<p>The diagram below illustrates the core relationships in our database:</p>
<div class="language-mermaid codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-mermaid codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><div class="token-line" style="color:#393A34"><span class="token plain">graph TD</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">    Users --&gt; Roles</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">    Users --&gt; Companies</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">    Activities --&gt; Emotions</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">    UserResponses --&gt; Users</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">    UserResponses --&gt; Activities</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">    Notifications --&gt; NotificationTypes</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">    Permissions --&gt; PermissionCategories</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">    UserPermissions --&gt; Users</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">    UserPermissions --&gt; Permissions</span><br></div></code></pre></div></div>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="performance-considerations">Performance Considerations<a href="https://proyectohhss2025-unad.github.io/blog/activities-vibra-post#performance-considerations" class="hash-link" aria-label="Direct link to Performance Considerations" title="Direct link to Performance Considerations" translate="no">​</a></h2>
<p>To ensure optimal performance, we've implemented several strategies:</p>
<ol>
<li class=""><strong>Strategic Indexing</strong>: We've created indexes on frequently queried fields to speed up searches</li>
<li class=""><strong>Data Denormalization</strong>: Where appropriate, we denormalize data to reduce the need for complex joins</li>
<li class=""><strong>Pagination</strong>: For large collections, we implement pagination to limit result sizes</li>
<li class=""><strong>Compound Indexes</strong>: For queries that filter on multiple fields, we use compound indexes</li>
</ol>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="conclusion">Conclusion<a href="https://proyectohhss2025-unad.github.io/blog/activities-vibra-post#conclusion" class="hash-link" aria-label="Direct link to Conclusion" title="Direct link to Conclusion" translate="no">​</a></h2>
<p>Vibra's MongoDB architecture demonstrates how a well-designed database schema can support complex application requirements while maintaining flexibility and performance. By organizing collections into logical domains and implementing smart design patterns, we've created a data foundation that can evolve with the application's needs.</p>
<p>In future posts, we'll explore how our front-end components interact with this database structure and how we've implemented real-time features using MongoDB change streams.</p>
<div class="alert alert--info" style="margin-top:2rem"><p><strong>Want to learn more?</strong> Check out our <a href="https://proyectohhss2025-unad.github.io/docs/aplicaciones/model-schema-db">detailed database schema documentation</a> for a comprehensive reference.</p></div>]]></content>
        <author>
            <name>Yovany Suárez Silva</name>
            <uri>https://desobsesor.github.io/portfolio-web/</uri>
        </author>
        <category label="MongoDB" term="MongoDB"/>
        <category label="Database" term="Database"/>
        <category label="Architecture" term="Architecture"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[Welcome tu vibra app]]></title>
        <id>https://proyectohhss2025-unad.github.io/blog/welcome</id>
        <link href="https://proyectohhss2025-unad.github.io/blog/welcome"/>
        <updated>2026-03-02T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[A app academic app for student who want to share their thoughts and experiences with others students.]]></summary>
        <content type="html"><![CDATA[<p><strong>Vibra</strong> is an academic app for students who want to validate and share their thoughts and experiences with other students.</p>]]></content>
        <author>
            <name>Yovany Suárez Silva</name>
            <uri>https://desobsesor.github.io/portfolio-web/</uri>
        </author>
        <category label="Vibra app" term="Vibra app"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[MongoDB in Cluster Cloud with Migration Process]]></title>
        <id>https://proyectohhss2025-unad.github.io/blog/mongodb-in-cluster-cloud-with-migration-process</id>
        <link href="https://proyectohhss2025-unad.github.io/blog/mongodb-in-cluster-cloud-with-migration-process"/>
        <updated>2026-03-02T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[One of the most repetitive processes is migrating relational and non-relational databases from our on-premises environment to a cloud environment.]]></summary>
        <content type="html"><![CDATA[<p><img src="https://proyectohhss2025-unad.github.io/img/mongodb.png" alt="mongodb" width="80%" height="100%"></p>
<div class="theme-admonition theme-admonition-tip admonition_xJq3 alert alert--success"><div class="admonitionHeading_Gvgb"><span class="admonitionIcon_Rf37"><svg viewBox="0 0 12 16"><path fill-rule="evenodd" d="M6.5 0C3.48 0 1 2.19 1 5c0 .92.55 2.25 1 3 1.34 2.25 1.78 2.78 2 4v1h5v-1c.22-1.22.66-1.75 2-4 .45-.75 1-2.08 1-3 0-2.81-2.48-5-5.5-5zm3.64 7.48c-.25.44-.47.8-.67 1.11-.86 1.41-1.25 2.06-1.45 3.23-.02.05-.02.11-.02.17H5c0-.06 0-.13-.02-.17-.2-1.17-.59-1.83-1.45-3.23-.2-.31-.42-.67-.67-1.11C2.44 6.78 2 5.65 2 5c0-2.2 2.02-4 4.5-4 1.22 0 2.36.42 3.22 1.19C10.55 2.94 11 3.94 11 5c0 .66-.44 1.78-.86 2.48zM4 14h5c-.23 1.14-1.3 2-2.5 2s-2.27-.86-2.5-2z"></path></svg></span>tip</div><div class="admonitionContent_BuS1"><p>Vibra stores its information in non-relational, document- and collection-oriented databases. It has deployed its databases in MongoDB in the cloud, in a service known as Atlas.</p></div></div>
<p>🚀 <strong>Step-by-Step Guide: Migrating MongoDB from Local to Atlas</strong></p>
<p>One of the most repetitive processes is migrating relational and non-relational databases from our on-premises environment to a cloud environment. This short post explains how to configure Atlas, create a backup, and restore a database in a basic migration process.</p>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="1️⃣-prepare-mongodb-atlas">1️⃣ Prepare MongoDB Atlas<a href="https://proyectohhss2025-unad.github.io/blog/mongodb-in-cluster-cloud-with-migration-process#1%EF%B8%8F%E2%83%A3-prepare-mongodb-atlas" class="hash-link" aria-label="Direct link to 1️⃣ Prepare MongoDB Atlas" title="Direct link to 1️⃣ Prepare MongoDB Atlas" translate="no">​</a></h3>
<p>✅ <strong>Create a Cluster</strong>: If you haven't already, head over to MongoDB Atlas and set up a free cluster (M0). Follow this <a href="https://proyectohhss2025-unad.github.io/blog/mongodb-in-cluster-cloud-with-migration-process#" class="">guide</a> for detailed instructions.
✅ <strong>User Configuration</strong>: Set up a user with read/write permissions (e.g., migrator).
✅ <strong>Network Access</strong>: Add your current IP (or use 0.0.0.0/0 temporarily) in Network Access.</p>
<p><strong>Get the Atlas Connection String</strong>:</p>
<p></p><p>✅ Navigate to your cluster in <a href="https://cloud.mongodb.com/" target="_blank" rel="noopener noreferrer" class="">https://cloud.mongodb.com/</a> and click "Connect".</p><p></p>
<p></p><p>✅ Choose "Connect your application".</p><p></p>
<p></p><p>✅ Copy the Connection String (e.g., <code>mongodb+srv://user:password@clusterxxx.mongodb.net/</code>).</p><p></p>
<p><strong>MongoDB on MongoDB Atlas (Free)</strong></p>
<div class="theme-admonition theme-admonition-tip admonition_xJq3 alert alert--success"><div class="admonitionHeading_Gvgb"><span class="admonitionIcon_Rf37"><svg viewBox="0 0 12 16"><path fill-rule="evenodd" d="M6.5 0C3.48 0 1 2.19 1 5c0 .92.55 2.25 1 3 1.34 2.25 1.78 2.78 2 4v1h5v-1c.22-1.22.66-1.75 2-4 .45-.75 1-2.08 1-3 0-2.81-2.48-5-5.5-5zm3.64 7.48c-.25.44-.47.8-.67 1.11-.86 1.41-1.25 2.06-1.45 3.23-.02.05-.02.11-.02.17H5c0-.06 0-.13-.02-.17-.2-1.17-.59-1.83-1.45-3.23-.2-.31-.42-.67-.67-1.11C2.44 6.78 2 5.65 2 5c0-2.2 2.02-4 4.5-4 1.22 0 2.36.42 3.22 1.19C10.55 2.94 11 3.94 11 5c0 .66-.44 1.78-.86 2.48zM4 14h5c-.23 1.14-1.3 2-2.5 2s-2.27-.86-2.5-2z"></path></svg></span>tip</div><div class="admonitionContent_BuS1"><p>MongoDB Atlas is a cloud service that allows you to deploy, manage, and scale MongoDB databases without having to manually configure servers. It's ideal for beginners because it offers a free tier with sufficient resources for small or test projects.</p></div></div>
<p>📌 MongoDB Atlas</p>
<p></p><p>✅ Free to start: 512 MB of storage (enough for development).</p><p></p>
<p></p><p>✅ Managed: You don't need to install MongoDB on your computer.</p><p></p>
<p></p><p>✅ Scalable: You can upgrade as your application grows.</p><p></p>
<p></p><p>✅ Secure: Includes authentication, encryption, and automatic backups.</p><p></p>
<p></p><p>✅ Global: You can choose your server region for best performance.</p><p></p>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="2️⃣-export-local-data-with-mongodump">2️⃣ Export Local Data with <code>mongodump</code><a href="https://proyectohhss2025-unad.github.io/blog/mongodb-in-cluster-cloud-with-migration-process#2%EF%B8%8F%E2%83%A3-export-local-data-with-mongodump" class="hash-link" aria-label="Direct link to 2️⃣-export-local-data-with-mongodump" title="Direct link to 2️⃣-export-local-data-with-mongodump" translate="no">​</a></h3>
<p>✅ <strong>Backup Data Locally</strong>:
run the following command:</p>
<div class="language-bash codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-bash codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><div class="token-line" style="color:#393A34"><span class="token plain">  mongodump --host localhost --port 27017 --db vibra-db --out C://Users/USER/Personal/mongodb_backups_vibra_2025</span><br></div></code></pre></div></div>
<p>✅ <strong>Restore Data to Cloud</strong>:
run the following command:</p>
<div class="language-bash codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-bash codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><div class="token-line" style="color:#393A34"><span class="token plain">  mongorestore --uri="mongodb+srv://username:Password@cluster0xxx.xxxx.mongodb.net/" C://Users/USER/Personal/mongodb_backups_vibra_2025/</span><br></div></code></pre></div></div>
<p><strong>Vibra</strong> is an academic app for students who want to validate and share their thoughts and experiences with other students.</p>]]></content>
        <author>
            <name>Yovany Suárez Silva</name>
            <uri>https://desobsesor.github.io/portfolio-web/</uri>
        </author>
        <category label="Vibra app" term="Vibra app"/>
        <category label="MongoDB" term="MongoDB"/>
        <category label="Cloud" term="Cloud"/>
        <category label="Migration" term="Migration"/>
    </entry>
</feed>