<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: AlexGR</title>
    <description>The latest articles on DEV Community by AlexGR (@alabex_).</description>
    <link>https://dev.to/alabex_</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F721671%2F4740fb9f-0ee4-42cf-bec6-f18a5183f985.jpg</url>
      <title>DEV Community: AlexGR</title>
      <link>https://dev.to/alabex_</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/alabex_"/>
    <language>en</language>
    <item>
      <title>XP-R — Technotes: Slowing Down to Scale: Building Context as a Force Multiplier</title>
      <dc:creator>AlexGR</dc:creator>
      <pubDate>Thu, 12 Mar 2026 22:16:30 +0000</pubDate>
      <link>https://dev.to/alabex_/xp-r-technotes-slowing-down-to-scale-building-context-as-a-force-multiplier-4mof</link>
      <guid>https://dev.to/alabex_/xp-r-technotes-slowing-down-to-scale-building-context-as-a-force-multiplier-4mof</guid>
      <description>&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Aviso:&lt;/strong&gt; La mayoría de las actualizaciones estarán en inglés, pero iré publicando también entradas resumen en español cada cierto tiempo.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;This post complements the previous entry (&lt;a href="https://dev.to/alabex_/xp-r-slowing-down-to-scale-building-context-as-a-force-multiplier-55gk"&gt;XP-R — Slowing Down to Scale: Building Context as a Force Multiplier&lt;/a&gt;).&lt;/p&gt;

&lt;h3&gt;
  
  
  Decoupling Identity from the Game
&lt;/h3&gt;

&lt;p&gt;I’ve separated the "Human" (Auth/Security) from the "Avatar" (In-game entity). &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;The Logic:&lt;/strong&gt; &lt;code&gt;identity&lt;/code&gt; handles the account; &lt;code&gt;characters&lt;/code&gt; handles the persona. &lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;The Payoff:&lt;/strong&gt; A clean User model and a future-proof path for multi-character support without touching the auth core.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  The Workspace Pattern (Multi-tenant)
&lt;/h3&gt;

&lt;p&gt;Instead of building custom logic for Orgs, Alliances, or Communities, I’ve unified them under a &lt;strong&gt;Workspace&lt;/strong&gt; model. &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;The Goal:&lt;/strong&gt; Build features like DKP or Calendars &lt;em&gt;once&lt;/em&gt;. &lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;The Result:&lt;/strong&gt; The system is agnostic; it doesn't care if you are a massive fleet or a small squad, the tools just work.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Namespacing &amp;amp; Fleet SSOT
&lt;/h3&gt;

&lt;p&gt;I’m organizing features into &lt;code&gt;public_features&lt;/code&gt; and &lt;code&gt;private_features&lt;/code&gt;. It’s a clean split between global platform value and premium group tools. &lt;/p&gt;

&lt;p&gt;Additionally, I’ve locked down the &lt;strong&gt;Fleet logic&lt;/strong&gt;: Ships are managed in a Single Source of Truth. Other modules can &lt;em&gt;link&lt;/em&gt; to ships, but they can't &lt;em&gt;create&lt;/em&gt; them. Consistency is non-negotiable.&lt;/p&gt;

&lt;h3&gt;
  
  
  The xpr Modular Monolith
&lt;/h3&gt;

&lt;p&gt;The backend is structured to keep domains isolated but reachable:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Core &amp;amp; Workspaces:&lt;/strong&gt; The infrastructure and tenant logic.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Meetings:&lt;/strong&gt; The dynamic engine for event lifecycles.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Realtime &amp;amp; Gateway:&lt;/strong&gt; The entry points for the frontend (&lt;strong&gt;xsr&lt;/strong&gt;).&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Clean Connections
&lt;/h3&gt;

&lt;p&gt;To avoid the classic Django circular import nightmare, I’ve mandated using the &lt;strong&gt;App Registry&lt;/strong&gt; for cross-module relations. It keeps dependencies flat and the architecture predictable.&lt;/p&gt;




&lt;p&gt;&lt;strong&gt;Next Step:&lt;/strong&gt; With the architectural context now locked in, I’m moving into the final polish of the database models before the first "real" lines of code are written.&lt;/p&gt;

</description>
      <category>django</category>
      <category>architecture</category>
      <category>backend</category>
      <category>python</category>
    </item>
    <item>
      <title>XP-R — Slowing Down to Scale: Building Context as a Force Multiplier</title>
      <dc:creator>AlexGR</dc:creator>
      <pubDate>Thu, 12 Mar 2026 21:57:22 +0000</pubDate>
      <link>https://dev.to/alabex_/xp-r-slowing-down-to-scale-building-context-as-a-force-multiplier-55gk</link>
      <guid>https://dev.to/alabex_/xp-r-slowing-down-to-scale-building-context-as-a-force-multiplier-55gk</guid>
      <description>&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Aviso:&lt;/strong&gt; La mayoría de las actualizaciones estarán en inglés, pero iré publicando también entradas resumen en español cada cierto tiempo.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;This week, I decided to further push back the urge to start "cranking out code"—a drive fueled by the desire to see something functional—to focus instead on the &lt;strong&gt;database and conceptual structure&lt;/strong&gt; of my project.&lt;/p&gt;

&lt;p&gt;While I haven't finalized the data modeling phase yet, the progress is solid. I have already projected the logic for:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Identity:&lt;/strong&gt; Users, personas, and organizations.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Core:&lt;/strong&gt; Meetings and subgroup systems.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Scalability:&lt;/strong&gt; A design focused on future phases to prevent traumatic refactoring down the road.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  The Weight of Spec-Driven and Context-Driven Dev
&lt;/h3&gt;

&lt;p&gt;After several sessions with the &lt;strong&gt;Gemini 3.1 Pro&lt;/strong&gt; planner, what I initially envisioned as a "quick start" has turned into several days of technical profiling. I’ve immersed myself in specification-driven development, detailing complex workflows and how they integrate with the system's core event logic.&lt;/p&gt;

&lt;p&gt;To ensure the planner and future agents operate with precision, I have synthesized all the project knowledge into &lt;strong&gt;four pillars of technical context&lt;/strong&gt;:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt; &lt;strong&gt;Structure and Namespaces:&lt;/strong&gt; Defines the strict topography of the modular monolith. Any new model, service, or feature must fit into this anatomical tree.&lt;/li&gt;
&lt;li&gt; &lt;strong&gt;Architectural Framework:&lt;/strong&gt; The set of strict rules and technical standards governing all Starnet (ABX11) development.&lt;/li&gt;
&lt;li&gt; &lt;strong&gt;Meetings and Dashboard Logic:&lt;/strong&gt; Defines the lifecycle of "meetings" (a key piece of the MVP) and describes dashboard features, including those not slated for immediate implementation.&lt;/li&gt;
&lt;li&gt; &lt;strong&gt;System Architecture:&lt;/strong&gt; The conceptual and detailed business logic that gives meaning to the entire system.&lt;/li&gt;
&lt;/ol&gt;

&lt;h3&gt;
  
  
  Changing My Stance on Agents
&lt;/h3&gt;

&lt;p&gt;My boundaries have evolved. Although I didn't originally plan to use agents, the ability to isolate them restrictively—thanks to a clean Django architecture and extreme context definition—has shifted my perspective.&lt;/p&gt;

&lt;p&gt;In the best-case scenario, this will allow me to massively accelerate development. At the very least, I’ll have an impeccable documentation base to work with AI as a consulting partner that understands every rule of my architecture.&lt;/p&gt;

&lt;h3&gt;
  
  
  The Dilemma: Vertical Development vs. Visibility
&lt;/h3&gt;

&lt;p&gt;I am considering moving forward via &lt;strong&gt;vertical tasks&lt;/strong&gt;: API-First (models and serializers for DRF), followed by backend logic and a functional temporary UI.&lt;/p&gt;

&lt;p&gt;I’m aware this means &lt;strong&gt;delaying the visibility of finished modules&lt;/strong&gt;. Applying the same descriptive rigor to the frontend as I have for the backend takes time, even if it’s just for a testing tool. Nevertheless, I am quite optimistic about the starting point I’ve achieved.&lt;/p&gt;




&lt;p&gt;I’ve included the denser technical details, and &lt;strong&gt;ADRs (Architecture Decision Records)&lt;/strong&gt; in my &lt;strong&gt;TechNotes&lt;/strong&gt; associated with this post to keep this narrative focused on strategy -&amp;gt; &lt;a href="https://dev.to/alabex_/xp-r-technotes-slowing-down-to-scale-building-context-as-a-force-multiplier-4mof"&gt;XP-R — Technotes: Slowing Down to Scale: Building Context as a Force Multiplier&lt;/a&gt;.&lt;/p&gt;

</description>
      <category>architecture</category>
      <category>django</category>
      <category>ai</category>
      <category>sideprojects</category>
    </item>
    <item>
      <title>XP-R — Preparing the Foundations (Tech Notes)</title>
      <dc:creator>AlexGR</dc:creator>
      <pubDate>Fri, 06 Mar 2026 12:33:39 +0000</pubDate>
      <link>https://dev.to/alabex_/xp-r-preparing-the-foundations-tech-notes-2hk7</link>
      <guid>https://dev.to/alabex_/xp-r-preparing-the-foundations-tech-notes-2hk7</guid>
      <description>&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Aviso:&lt;/strong&gt; La mayoría de las actualizaciones estarán en inglés, pero iré publicando también entradas resumen en español cada cierto tiempo.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;This post complements the previous entry (&lt;a href="https://dev.to/alabex_/xp-r-preparing-the-foundations-4105"&gt;XP-R — Preparing the Foundations&lt;/a&gt;), focusing on the technical implementation details behind XP-R’s architecture, module structure, and Identity module setup.&lt;/p&gt;

&lt;h2&gt;
  
  
  Technical Notes
&lt;/h2&gt;

&lt;p&gt;Some additional implementation details that were established during this&lt;br&gt;
phase:&lt;/p&gt;
&lt;h3&gt;
  
  
  Models and module organization
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;  Models are placed inside a &lt;code&gt;models/&lt;/code&gt; package using &lt;strong&gt;pluralized
files&lt;/strong&gt; to group related classes.\&lt;/li&gt;
&lt;li&gt;  This allows multiple related models per file without breaking Django
conventions.\&lt;/li&gt;
&lt;li&gt;  It also helps avoid circular dependencies while keeping the
structure scalable.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;
  
  
  Identity module configuration
&lt;/h3&gt;

&lt;p&gt;&lt;code&gt;default_auto_field = 'django.db.models.BigAutoField'&lt;/code&gt; is explicitly&lt;br&gt;
configured to prevent issues with very large datasets in the future.&lt;/p&gt;
&lt;h3&gt;
  
  
  Nested Django apps
&lt;/h3&gt;

&lt;p&gt;Because apps are inside the &lt;code&gt;modules&lt;/code&gt; directory, a few Django-specific&lt;br&gt;
adjustments are required.&lt;/p&gt;

&lt;p&gt;&lt;code&gt;INSTALLED_APPS&lt;/code&gt; explicitly imports the AppConfig:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="n"&gt;modules&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;identity&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;apps&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;IdentityConfig&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Using only &lt;code&gt;modules.identity&lt;/code&gt; relies on Django's implicit discovery&lt;br&gt;
mechanism, which can sometimes produce confusing behavior in more&lt;br&gt;
complex structures.&lt;/p&gt;

&lt;p&gt;General guidelines used in the project:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  Python imports use the full path: &lt;code&gt;modules.identity...&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;  The &lt;code&gt;name&lt;/code&gt; variable in &lt;code&gt;apps.py&lt;/code&gt; also uses the full path:
&lt;code&gt;modules.identity&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;  Database references and Django metadata use the short label:
&lt;code&gt;identity&lt;/code&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;
  
  
  Shared model utilities
&lt;/h3&gt;

&lt;p&gt;A base abstract model called &lt;strong&gt;TimeStampedModel&lt;/strong&gt; was introduced in the&lt;br&gt;
Core module, providing:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  &lt;code&gt;created_at&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;  &lt;code&gt;updated_at&lt;/code&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This keeps models consistent across the project while avoiding repeated&lt;br&gt;
boilerplate.&lt;/p&gt;
&lt;h3&gt;
  
  
  API serialization strategy
&lt;/h3&gt;

&lt;p&gt;The first serializer implemented was &lt;code&gt;UserSerializer&lt;/code&gt; in the Identity&lt;br&gt;
module.&lt;/p&gt;

&lt;p&gt;The project follows two rules for API design:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  incremental database IDs are &lt;strong&gt;never exposed&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;  only &lt;strong&gt;UUID-based identifiers&lt;/strong&gt; are used externally&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Serializers are organized per module inside a &lt;code&gt;serializers/&lt;/code&gt; directory,&lt;br&gt;
using pluralized filenames such as:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;user_serializers.py
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This prevents monolithic serializer files and helps keep the API layer&lt;br&gt;
modular as the platform grows.&lt;/p&gt;

</description>
      <category>django</category>
      <category>architecture</category>
      <category>sideprojects</category>
      <category>devlog</category>
    </item>
    <item>
      <title>XP-R — Preparing the Foundations</title>
      <dc:creator>AlexGR</dc:creator>
      <pubDate>Fri, 06 Mar 2026 12:29:43 +0000</pubDate>
      <link>https://dev.to/alabex_/xp-r-preparing-the-foundations-4105</link>
      <guid>https://dev.to/alabex_/xp-r-preparing-the-foundations-4105</guid>
      <description>&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Aviso:&lt;/strong&gt; La mayoría de las actualizaciones estarán en inglés, pero iré publicando también entradas resumen en español cada cierto tiempo.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;The last few work sessions on &lt;strong&gt;XP-R&lt;/strong&gt; were mostly about preparing the&lt;br&gt;
project's internal structure before real feature development begins.&lt;/p&gt;

&lt;p&gt;A significant amount of time went into thinking through the architecture&lt;br&gt;
before even installing Django. The goal was to make sure the backend&lt;br&gt;
structure would work not only for the web platform, but also for future&lt;br&gt;
components like the overlay, realtime features, and external&lt;br&gt;
integrations such as a Discord bot.&lt;/p&gt;

&lt;p&gt;It may look slow from the outside, but investing time here helps avoid&lt;br&gt;
structural problems later.&lt;/p&gt;


&lt;h2&gt;
  
  
  Documenting Decisions
&lt;/h2&gt;

&lt;p&gt;I also decided to start documenting architectural decisions using&lt;br&gt;
&lt;strong&gt;Obsidian&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;The idea is not to maintain extremely detailed technical documentation,&lt;br&gt;
but to keep track of:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  architectural decisions (ADRs)\&lt;/li&gt;
&lt;li&gt;  design reasoning\&lt;/li&gt;
&lt;li&gt;  ideas and future considerations&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Basically, enough context so that if I step away from the project for a&lt;br&gt;
while --- or if someone joins later --- the structure and reasoning&lt;br&gt;
behind the system are still clear.&lt;/p&gt;


&lt;h2&gt;
  
  
  AI Tools and Development Workflow
&lt;/h2&gt;

&lt;p&gt;After some research, I finally installed &lt;strong&gt;Antigravity&lt;/strong&gt; to experiment&lt;br&gt;
with its planning capabilities, mainly using the planner with &lt;strong&gt;Gemini&lt;br&gt;
3.1 Pro&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;For now, I’ve decided not to adopt an agent-first workflow. Early stages of a project are usually the most fragile from an architectural perspective, and introducing autonomous agents too soon can easily create unnecessary complexity before the foundations are properly structured, though I might be mistaken.&lt;/p&gt;

&lt;p&gt;The only exception is a security-focused agent that accompanies the development process, helping review potential vulnerabilities and risky patterns as the system evolves.&lt;/p&gt;

&lt;p&gt;One interesting observation during these tests is that many AI tools&lt;br&gt;
tend to apply &lt;strong&gt;generic OOP patterns to Django&lt;/strong&gt;, ignoring how the&lt;br&gt;
framework actually works internally. The &lt;strong&gt;Gemini 3.1 Pro (High)&lt;/strong&gt;&lt;br&gt;
responses were noticeably closer to real Django practices, which made it&lt;br&gt;
more useful as a reference during architectural decisions.&lt;/p&gt;


&lt;h2&gt;
  
  
  Infrastructure Adjustments
&lt;/h2&gt;

&lt;p&gt;I originally planned to start with &lt;strong&gt;Docker&lt;/strong&gt;, but I'm working on a&lt;br&gt;
&lt;strong&gt;cloud PC&lt;/strong&gt;, and this environment doesn't allow virtualization, so that&lt;br&gt;
idea was postponed for now.&lt;/p&gt;

&lt;p&gt;Instead, the current stack looks like this:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  PostgreSQL from the start (no SQLite phase)\&lt;/li&gt;
&lt;li&gt;  Redis in the cloud via &lt;strong&gt;Upstash&lt;/strong&gt; (the same problem as with
Docker)\&lt;/li&gt;
&lt;li&gt;  ASGI configured, with &lt;strong&gt;Django Channels&lt;/strong&gt; ready&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;So even though the platform is still early, the backend is already&lt;br&gt;
prepared for &lt;strong&gt;realtime features&lt;/strong&gt;.&lt;/p&gt;


&lt;h2&gt;
  
  
  Project Structure
&lt;/h2&gt;

&lt;p&gt;The Django project follows a &lt;strong&gt;modular monolith structure&lt;/strong&gt;, grouping&lt;br&gt;
apps inside a &lt;code&gt;modules&lt;/code&gt; directory.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;modules/
  identity/
    models/
    services/
    selectors/
    admin/
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Each module encapsulates its own domain and separates &lt;strong&gt;data models,&lt;br&gt;
business logic, and read logic&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;The motivation behind this structure is simple:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  High cohesion by domain\&lt;/li&gt;
&lt;li&gt;  Low coupling between modules\&lt;/li&gt;
&lt;li&gt;  Clear separation between models, logic, and read operations\&lt;/li&gt;
&lt;li&gt;  Preparation for organic growth of the modular monolith\&lt;/li&gt;
&lt;li&gt;  Possible future fragmentation into independent services\&lt;/li&gt;
&lt;li&gt;  Better mental clarity when thinking about the system at scale&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This approach keeps the project maintainable as it grows, while still&lt;br&gt;
leaving room for future architectural evolution if needed.&lt;/p&gt;


&lt;h2&gt;
  
  
  Identity Module
&lt;/h2&gt;

&lt;p&gt;The first module implemented is &lt;strong&gt;Identity&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;A custom user model was created &lt;strong&gt;before running any migrations&lt;/strong&gt;,&lt;br&gt;
including a &lt;strong&gt;UUID-based identifier&lt;/strong&gt; that can be used consistently&lt;br&gt;
across APIs, realtime channels, and potential future services.&lt;/p&gt;

&lt;p&gt;To simplify realtime interactions, the user model also exposes a small&lt;br&gt;
helper property used to standardize the user's realtime channel group:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="nd"&gt;@property&lt;/span&gt;
&lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;realtime_group_name&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;self&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
    &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="sa"&gt;f&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;user_&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;self&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;user_id&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This avoids rebuilding the group name in multiple places across the&lt;br&gt;
codebase and keeps the realtime layer cleaner.&lt;/p&gt;

&lt;p&gt;The API layer also follows a simple rule from the beginning:&lt;br&gt;
&lt;strong&gt;incremental database IDs are never exposed --- only UUIDs&lt;/strong&gt;.&lt;/p&gt;




&lt;h2&gt;
  
  
  Overlay Architecture Considerations
&lt;/h2&gt;

&lt;p&gt;One architectural question that remains open relates to the &lt;strong&gt;overlay&lt;br&gt;
application&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;The web platform will likely continue using &lt;strong&gt;Angular&lt;/strong&gt;, which works&lt;br&gt;
well for complex dashboards and administrative interfaces. However,&lt;br&gt;
overlays introduce very different constraints, especially when running&lt;br&gt;
alongside a game like &lt;strong&gt;Star Citizen&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Angular's runtime behavior, including aspects of its &lt;strong&gt;garbage&lt;br&gt;
collector, bundle and heavier runtime&lt;/strong&gt;, could potentially introduce&lt;br&gt;
performance risks in that environment.&lt;/p&gt;

&lt;p&gt;Because of that, I'm evaluating whether the overlay might instead use&lt;br&gt;
something lighter like &lt;strong&gt;Svelte&lt;/strong&gt;, while Angular remains responsible for&lt;br&gt;
the web platform and dashboards.&lt;/p&gt;

&lt;p&gt;This would mean running &lt;strong&gt;two frontend frameworks&lt;/strong&gt;, which obviously&lt;br&gt;
adds complexity, so the decision isn't final yet.&lt;/p&gt;

&lt;p&gt;The desktop layer itself will most likely rely on &lt;strong&gt;Tauri&lt;/strong&gt;, which seems&lt;br&gt;
well suited for building a lightweight overlay-style application.&lt;br&gt;
However, a few key capabilities still need to be verified, such as:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  transparent windows\&lt;/li&gt;
&lt;li&gt;  click-through behavior when needed\&lt;/li&gt;
&lt;li&gt;  capturing input when required&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;In the near future I plan to build &lt;strong&gt;small prototype overlays&lt;/strong&gt; that&lt;br&gt;
simulate realistic UI load and realtime updates in order to test&lt;br&gt;
performance under stress.&lt;/p&gt;




&lt;h2&gt;
  
  
  Current State
&lt;/h2&gt;

&lt;p&gt;At this point the project has its basic foundation in place:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  PostgreSQL database configured\&lt;/li&gt;
&lt;li&gt;  Redis cloud integration\&lt;/li&gt;
&lt;li&gt;  ASGI and Channels prepared\&lt;/li&gt;
&lt;li&gt;  Modular project structure\&lt;/li&gt;
&lt;li&gt;  Identity module started&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Not a lot of visible features yet, but the &lt;strong&gt;structural groundwork is&lt;br&gt;
now ready&lt;/strong&gt;, which should make the next development steps much smoother.&lt;/p&gt;




&lt;h2&gt;
  
  
  More Technical Notes
&lt;/h2&gt;

&lt;p&gt;Some of the deeper technical details behind this setup are documented in a separate companion post -&amp;gt; &lt;a href="https://dev.to/alabex_/xp-r-preparing-the-foundations-tech-notes-2hk7"&gt;XP-R — Preparing the Foundations (Tech Notes)&lt;/a&gt;.&lt;/p&gt;

</description>
      <category>django</category>
      <category>sideprojects</category>
      <category>architecture</category>
      <category>devlog</category>
    </item>
    <item>
      <title>XP-R — Day 1: Core Alpha 1</title>
      <dc:creator>AlexGR</dc:creator>
      <pubDate>Wed, 25 Feb 2026 16:47:01 +0000</pubDate>
      <link>https://dev.to/alabex_/xp-r-day-1-core-alpha-1-53c2</link>
      <guid>https://dev.to/alabex_/xp-r-day-1-core-alpha-1-53c2</guid>
      <description>&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Aviso:&lt;/strong&gt; La mayoría de las actualizaciones estarán en inglés, pero iré publicando también entradas resumen en español cada cierto tiempo.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Today was the first real day of work on XP-R.&lt;/p&gt;

&lt;p&gt;The day started with some &lt;strong&gt;analysis and reflection&lt;/strong&gt;: evaluating the project’s viability, identifying potential risks and challenges, and reconsidering what the platform can realistically achieve. It was a necessary step to clarify the scope and ensure the work ahead is focused and sustainable.&lt;/p&gt;

&lt;p&gt;Once I had that context, I reactivated my presence here on dev.to, reacquainted myself with the workspace, and &lt;strong&gt;reconditioned ClickUp&lt;/strong&gt; to manage tasks and workflow properly. Clear segmentation, no floating notes, a process that makes the day-to-day visible and trackable.&lt;/p&gt;




&lt;h2&gt;
  
  
  Preparing the Data Layer
&lt;/h2&gt;

&lt;p&gt;The first practical step was &lt;strong&gt;modeling the initial database structure&lt;/strong&gt; with dbdiagram. This structure covers the immediate needs of Core Alpha 1 while remaining compatible with features planned for later stages. It includes support for:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;User creation and account linking
&lt;/li&gt;
&lt;li&gt;Character management
&lt;/li&gt;
&lt;li&gt;Organization membership flows
&lt;/li&gt;
&lt;li&gt;Multiple activity types per organization
&lt;/li&gt;
&lt;li&gt;Participation and lifecycle tracking
&lt;/li&gt;
&lt;li&gt;Configurable progression points (DKP-like mechanics)
&lt;/li&gt;
&lt;li&gt;Assignment of points after activity completion
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Working through this with dbdiagram allowed me to &lt;strong&gt;iterate quickly and validate relationships&lt;/strong&gt; without committing to premature implementation decisions.  &lt;/p&gt;




&lt;h2&gt;
  
  
  Considering AI and Agents
&lt;/h2&gt;

&lt;p&gt;I also spent some time evaluating tools for development: whether to start using &lt;strong&gt;Google Antigravity&lt;/strong&gt;, &lt;strong&gt;Cursor with Claude Code&lt;/strong&gt;, or continue with &lt;strong&gt;VSCode&lt;/strong&gt;.  &lt;/p&gt;

&lt;p&gt;I’m aware of the value of agent-based AI systems and I’ve used them in other projects at more mature stages, but for this early phase I want to avoid &lt;strong&gt;possible overengineering or unnecessary complexity&lt;/strong&gt;.  &lt;/p&gt;

&lt;p&gt;I will still use AI extensively for tasks like modeling, iteration, and validation, and its role will grow as the project evolves. For now, XP-R will &lt;strong&gt;not be “Agents First”&lt;/strong&gt;, keeping the focus on clarity, speed, and building solid foundations.&lt;/p&gt;




&lt;p&gt;A small but productive first day: clarifying the project’s boundaries, preparing the workspace, laying down the &lt;strong&gt;initial backend foundations&lt;/strong&gt;, and deciding how AI will integrate without overcomplicating the early phase.&lt;/p&gt;

</description>
      <category>softwaredevelopment</category>
      <category>mvp</category>
      <category>productmanagement</category>
      <category>ai</category>
    </item>
    <item>
      <title>Welcome to XPanel Reforged (XP-R)</title>
      <dc:creator>AlexGR</dc:creator>
      <pubDate>Wed, 25 Feb 2026 16:26:04 +0000</pubDate>
      <link>https://dev.to/alabex_/welcome-to-xpanel-reforged-xp-r-21lb</link>
      <guid>https://dev.to/alabex_/welcome-to-xpanel-reforged-xp-r-21lb</guid>
      <description>&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Aviso:&lt;/strong&gt; La mayoría de las actualizaciones estarán en inglés, pero iré publicando también entradas resumen en español cada cierto tiempo.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;As I mentioned in my &lt;a href="https://dev.to/alabex_/xpanel-reforged-starting-again-but-not-from-scratch-4pgf"&gt;first post&lt;/a&gt;, I’m back on dev.to after a few years, and returning to a project I had to pause: XPanel. That post shared a bit of the context.&lt;/p&gt;

&lt;p&gt;Since this is a clean restart, the project now has a new name:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;XPanel Reforged&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
—or &lt;strong&gt;XP-R&lt;/strong&gt; for short.&lt;/p&gt;

&lt;p&gt;Same core idea. But approached with better clarity, execution, and sequencing.  &lt;/p&gt;




&lt;h3&gt;
  
  
  What XP-R Is
&lt;/h3&gt;

&lt;p&gt;XP-R is a platform for a multiplayer game communities — a central hub where organizations and players can coordinate, track progression, and experiment with social and gamified features. Think of the solutions communities often implement themselves through Discord, spreadsheets, WordPress sites, or other tools — XP-R aims to unify and simplify that in one place.  &lt;/p&gt;

&lt;p&gt;Even individual players will find value: the hub allows experimentation with these features without belonging to a structured community, providing a personal space to engage, track, and explore.  &lt;/p&gt;

&lt;p&gt;The platform will include &lt;strong&gt;gamification elements&lt;/strong&gt;, activity tracking, and systems designed to support collaboration, progression, and recognition — but always in a way that serves actual user behavior, not just as arbitrary mechanics.  &lt;/p&gt;




&lt;h3&gt;
  
  
  How This Version Differs
&lt;/h3&gt;

&lt;p&gt;Over the years, my perspective has evolved. I have a clearer view of what the platform actually needs, how users behave — solo players, small groups, large organizations — and what should exist in the first functional version versus what can wait. XP-R isn’t exactly what I imagined years ago; it’s the product of experience, reflection, and iterative thinking.  &lt;/p&gt;

&lt;p&gt;This is why XPanel Reforged exists. Not a rewrite. A repositioning. Same core idea, but approached with clarity and better execution.  &lt;/p&gt;

&lt;p&gt;I’m thinking in terms of &lt;strong&gt;MVP-first&lt;/strong&gt;, &lt;strong&gt;behavioral validation&lt;/strong&gt;, and &lt;strong&gt;long-term maintainability&lt;/strong&gt;. Features aren’t added because they’re cool — they’re added because they move the product forward in a meaningful way.  &lt;/p&gt;

&lt;p&gt;XP-R is the foundation for the journey ahead — a flexible, structured, and human-centered platform that can grow and adapt as both players and communities evolve.&lt;/p&gt;

</description>
      <category>startup</category>
      <category>mvp</category>
      <category>softwaredevelopment</category>
      <category>productmanagement</category>
    </item>
    <item>
      <title>XPanel Reforged – Starting Again, But Not From Scratch</title>
      <dc:creator>AlexGR</dc:creator>
      <pubDate>Wed, 25 Feb 2026 15:51:26 +0000</pubDate>
      <link>https://dev.to/alabex_/xpanel-reforged-starting-again-but-not-from-scratch-4pgf</link>
      <guid>https://dev.to/alabex_/xpanel-reforged-starting-again-but-not-from-scratch-4pgf</guid>
      <description>&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;Aviso: La mayoría de las actualizaciones estarán en inglés, pero iré publicando también entradas resumen en español cada cierto tiempo.&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Hey dev.to 👋&lt;br&gt;
It’s been a few years.&lt;/p&gt;

&lt;p&gt;I’ve been around, building, experimenting, shipping things… but I haven’t written here in a long time. And honestly, I’ve missed it.&lt;/p&gt;

&lt;p&gt;So today I’m coming back with something that feels both familiar and completely new.&lt;/p&gt;

&lt;h3&gt;
  
  
  The Project That Never Fully Left
&lt;/h3&gt;

&lt;p&gt;A while ago I started building &lt;strong&gt;XPanel&lt;/strong&gt; — a social platform designed around a multiplayer game community. It was ambitious: organizations, progression systems, structured activities, reputation, internal coordination… all the things communities try to manage with spreadsheets, Discord threads and a bit of chaos.&lt;/p&gt;

&lt;p&gt;The stack back then included:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Django&lt;/li&gt;
&lt;li&gt;Django REST Framework&lt;/li&gt;
&lt;li&gt;Docker&lt;/li&gt;
&lt;li&gt;Angular&lt;/li&gt;
&lt;li&gt;Redis&lt;/li&gt;
&lt;li&gt;and a handful of other supporting services&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;At the time, I was still getting comfortable with several of those technologies. The architecture worked, but it wasn’t solid. Continuing from that codebase today would mean complex migrations, structural refactors, technical debt carried forward and compromises I’d rather not accept.&lt;/p&gt;

&lt;p&gt;On top of that, my understanding of player dynamics — solo players, small groups, large organizations — was still limited. I was building features based on assumptions.&lt;/p&gt;

&lt;p&gt;Fast forward to today:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;I have significantly more experience with the stack.&lt;/li&gt;
&lt;li&gt;I understand community behavior much better.&lt;/li&gt;
&lt;li&gt;The game ecosystem itself has evolved — some features I once considered critical are no longer necessary, while others have become far more valuable.&lt;/li&gt;
&lt;li&gt;My vision of &lt;em&gt;what actually needs to be built&lt;/em&gt; is much sharper.&lt;/li&gt;
&lt;li&gt;And, of course, we now live in the era of AI-assisted development, which dramatically changes execution speed and iteration cycles.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;So instead of patching the past…&lt;/p&gt;

&lt;p&gt;I’m restarting.&lt;/p&gt;

&lt;p&gt;So, welcome back. Let’s build this properly. 😊&lt;/p&gt;

</description>
      <category>softwaredevelopment</category>
      <category>productmanager</category>
      <category>mvp</category>
      <category>architecture</category>
    </item>
    <item>
      <title>XPanel #8: Activities 5/*</title>
      <dc:creator>AlexGR</dc:creator>
      <pubDate>Sat, 30 Oct 2021 15:55:05 +0000</pubDate>
      <link>https://dev.to/alabex_/xpanel-8-activities-5-km1</link>
      <guid>https://dev.to/alabex_/xpanel-8-activities-5-km1</guid>
      <description>&lt;p&gt;PostHolder&lt;/p&gt;

</description>
    </item>
    <item>
      <title>XPanel #7: Activities 4/*</title>
      <dc:creator>AlexGR</dc:creator>
      <pubDate>Sat, 30 Oct 2021 15:54:24 +0000</pubDate>
      <link>https://dev.to/alabex_/xpanel-6-activities-4-4a8b</link>
      <guid>https://dev.to/alabex_/xpanel-6-activities-4-4a8b</guid>
      <description>&lt;p&gt;PostHolder&lt;/p&gt;

</description>
    </item>
    <item>
      <title>XPanel #6: Activities 3/*</title>
      <dc:creator>AlexGR</dc:creator>
      <pubDate>Sat, 30 Oct 2021 15:49:46 +0000</pubDate>
      <link>https://dev.to/alabex_/xpanel-6-activities-3-206a</link>
      <guid>https://dev.to/alabex_/xpanel-6-activities-3-206a</guid>
      <description>&lt;p&gt;&lt;a href="https://dev.to/alabex_/wrong-english-disclaimer-2daa"&gt;Wrong English Disclaimer&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Ok... this is a PostHolder xDDDD&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Maybe&lt;/strong&gt; I will write with detail all the steps I done this days in the future, but it were hard and it were looot of them.. and I had to handle a lot of things related with the proyect and non related (my life things)..  &lt;/p&gt;

&lt;p&gt;Simplify..&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Full finish the template system.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Thinking about all possible templates for phase 1 activities and all the requirements (roles and assets) and add all of this to the plataform by the admin system.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;I was more than 2 days working in the match making algorithm, this should be a only one post talking about it&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Finishing the whole activities module, this is a good point, the most important and hard part was done :)&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;I was other 2 days learning about docker and implementing it to my project.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Migrating from sqlite3 to postgres, adding celeris, flower, redis, learning about Django REST Framework and how to I should implement,.. &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;How to implement a OAuth Token to auth the api client and the different methods.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Solving problems with a looooooot of star citizen relevant persons and fixing possible problems what I think I probably have in the growth time of the plataform, again I should write one single post talking about this, was a lot of time and relevant choices.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Trying choose a frontend framework and a css framework... after a loot of time I choosed Angular and probably Material Design.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Anyway.. I should wrote all this process, doesnt care if I was really bussy this days.. my bad.&lt;/p&gt;

&lt;p&gt;Whatever.. I'm going to start learning Angular right now,.. wish me luck :) &lt;/p&gt;

</description>
    </item>
    <item>
      <title>XPanel #5: Activities 2/*</title>
      <dc:creator>AlexGR</dc:creator>
      <pubDate>Thu, 21 Oct 2021 08:05:10 +0000</pubDate>
      <link>https://dev.to/alabex_/xpanel-5-activities-2-2j2f</link>
      <guid>https://dev.to/alabex_/xpanel-5-activities-2-2j2f</guid>
      <description>&lt;p&gt;&lt;a href="https://dev.to/alabex_/wrong-english-disclaimer-2daa"&gt;Wrong English Disclaimer&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;ajdpfojaspdfojajpadf&lt;/p&gt;

&lt;p&gt;I should finish my last post before..&lt;/p&gt;

&lt;p&gt;I'm going to resume a lot all what I was doing..&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;I need more players advising me about ingame details, at least while I'm with activities module... this is important.. so I decided start one of my old ideas:
&lt;strong&gt;The Star Council&lt;/strong&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This have to be a group of compromissed players who will decide the ingame details of the plataform features..  to evite me take choices by myself, or other single person by hisself..&lt;/p&gt;

&lt;p&gt;So..&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;I told some players about that and it was hard to xplain without visual support...  lets create a logo and a picture to try explain correctly the concept:&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--mH0naE75--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/lxu5uq92hbwkvt11eeiw.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--mH0naE75--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/lxu5uq92hbwkvt11eeiw.png" alt="XPanel-StarCouncil-Logo"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--mu-KbWwa--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/1zhjtld32wsi6ip8cjwk.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--mu-KbWwa--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/1zhjtld32wsi6ip8cjwk.png" alt="XPanel-StarCouncil-Joinus"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;(Wrote in spanish cause I was going to show it only to spanish people in first moment)&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Ok, with the visual support I ask other relevant players or organizations leads to try start form this Star Council group, I really need help for the activity templates choices.. ..but.. no good resoults.. I'm having more help when I stream in Software Dev Twitch category than from Star Citizen players... they are friendly and love my idea but preffer still play than help :) &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;However two players was interested and they will try help me when they can,.. is not bad..&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;I start create the Google Docs table to visual show the game activities in phase 1 and wich I need detailed info from players to implement in the backend logic..&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--zKFP0JYx--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/f5stzwdv5clcte8m8hx5.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--zKFP0JYx--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/f5stzwdv5clcte8m8hx5.png" alt="XPanel-Phase1-Activities-Concept"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;This activities grid was BAD, in the first moment I thought for example: &lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Mining activity has miners + pilot (from mining area) and posibility of explorer or escourt (from their respective areas) to complete the party.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;This changed the day before I created cause I understand its complicated implement acitivies who need different roles of different areas and where players has to PAY to other players for their services, and ofc they will need a "renounce explorer" and "renounce escourt" ...   so much complicated for the users in the first phase of the plataform, and 20 activities was a lot.. so..&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--w4_SQvYl--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/hwxj2hz0m6footg76hoa.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--w4_SQvYl--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/hwxj2hz0m6footg76hoa.png" alt="XPanel-Phase1-Activities-Concept-Good"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I set only the simply and main activities without complement with players of other areas...    and I decided in the phase 1.X implement the &lt;strong&gt;Contrats&lt;/strong&gt; section where players could offer their services, and then I can prepare it for groups or organizations too...  this could be a big independent feature in the future..  and so much simple for first phase of plataform.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Ok, the problem continue, we had the activities of the game areas choosen, leeeeeeeets go prepare the templates...  I continue the Google Docs with the detailed data and try start form it with one player help, but ..  until the day im writing this post (2 days later) we had only mining activities details.. -.-'&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;After some changes and some different setups the table was like that:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--pOmVXceS--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/6kvi6xeoutugmk0nill0.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--pOmVXceS--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/6kvi6xeoutugmk0nill0.png" alt="XPanel-Phase1-Mining-Templates"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;As you can see, like I explained in my last post, there are different Game Areas &amp;gt; Every Game Area has different Activities (What player choose to play) &amp;gt; Every Activity has different templates (What backend use to try start activity) &amp;gt; Every template has his requiriments, and his required assets as group, and his related roles, wich they had his required assets too.&lt;/p&gt;

&lt;p&gt;So the point in backend logic will be every time one player start queue is ask him the assets related to the activities he choosed and check how many roles can he play with this assets, after that, check if there are any template full of roles looking from the first player in queue and if we have available temlpate, then check if the players in it has enought assets to really start the template.&lt;/p&gt;

&lt;p&gt;Everything of this checking language filter, time to play and taking players together if they queue up in group, this features are not implemented yet.&lt;/p&gt;

&lt;p&gt;I'm resuming a looooooot all the process cause I had to include in DB the required_assets tables, solve the initial problem and think how to ask the assets to users with the simply form to still run like "Click and Go" concept what I want in plataform..  &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Obviously I create some html with activities list, temporally check buttons to chose it and a simply text inputs to all assets to test the functions, after a lot of work it was working..&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--TZsK8s6c--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/5i551xcaomnldlv6h6zd.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--TZsK8s6c--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/5i551xcaomnldlv6h6zd.png" alt="XPanel-ActivitiesModule-Process"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;I had to implement a system to send to front the (ActivityID + Asset + Minimum + Maximum) for every asset in every active activity to let a future JS script verify the choices and ask about only the needed assets to user before sent form.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;I implement the logic to check if with this assets the user has viable roles in backend and create the activity queue record and save all the posible roles and his assets list (it was not implemented in models yet)&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;To make this viable I had to implement a first concept of characters list in characters app to let user select his active char between the chars he has claimed..&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--n5c3DDi8--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/9kb6rmh7h9zharxyfy1u.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--n5c3DDi8--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/9kb6rmh7h9zharxyfy1u.png" alt="Xpanel-CharactersList-Process"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;It was bad implemented, cause I wanted include the whole active_character object in sessions like user,.. and I didnt find the correct way cause it only let me JSON friendly add.. maybe I should save every data in different request.sessions[X] var, but I really didnt want it, and save one request.sessions[active_character_id] and call it in every view to then get it from DB is useless af..  I decided just implement my function to get active character and call it from the begin of eeeeeeeeeeevery view...&lt;br&gt;&lt;br&gt;
 ..this is BAD, I know, the correct solution probably was using a Middleware ??¿¿&lt;/p&gt;

&lt;p&gt;Idk but I have not enought time to networking + designs + thinks in logic + thinks in gameplay details + learn python/django big and little things + dev the backend.... so, this works for now,.. &lt;/p&gt;

&lt;p&gt;sigh...&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;I didnt wrote it in correct time point, but I was like one day fighting vs the manytomany relations in django admin autogenerated forms, a few hours until I discover the StackedInline, and mooore or less I get a correct way to create templates without turn me crazy :)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--WWKRF_tG--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/ug4uujjubycmn1h0lc57.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--WWKRF_tG--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/ug4uujjubycmn1h0lc57.png" alt="XPanel-ActivityTemplatesAdmin-Process"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Obviously I did a lot of more things, like 5 hours talking with different players getting super good feedback but zero help, etc..&lt;/p&gt;

&lt;p&gt;I hope today I finish the activity module.. we will see..&lt;/p&gt;

&lt;p&gt;Sorry for my awesome bad english and write style if you arrived here xD&lt;/p&gt;

&lt;p&gt;Cya!&lt;/p&gt;

</description>
    </item>
    <item>
      <title>XPanel #4: Activities 1/*</title>
      <dc:creator>AlexGR</dc:creator>
      <pubDate>Sun, 17 Oct 2021 08:13:29 +0000</pubDate>
      <link>https://dev.to/alabex_/xpanel-4-activities-14h</link>
      <guid>https://dev.to/alabex_/xpanel-4-activities-14h</guid>
      <description>&lt;p&gt;&lt;a href="https://dev.to/alabex_/wrong-english-disclaimer-2daa"&gt;Wrong English Disclaimer&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Well..&lt;/p&gt;

&lt;p&gt;Lets finish this fast xD&lt;/p&gt;

&lt;p&gt;In this last two days I did..&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Implement the models related with the automated activities system&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;I did something wrong the first day but fixed it the second, so I will show the result of the two days work xD&lt;/p&gt;

&lt;p&gt;The first point was understand: &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;The game has multiple areas, for example mining, delivery, piracy, medical, etc.. so I temporally set a refered list in code, important think this is not xpanel activities list. I added a color list too.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--Ofvc8Fz7--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/4fn9ooh5ghw9f4ili8do.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--Ofvc8Fz7--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/4fn9ooh5ghw9f4ili8do.png" alt="Image description"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Every "Game Area" in the game can have multiple "main activities", this is the different activities to choose in XPanel, and this main activities will be group by their game area.&lt;/li&gt;
&lt;/ul&gt;

&lt;blockquote&gt;
&lt;p&gt;The Mining Area can have Mining with ROC activity and Mining in MOLE activity&lt;br&gt;
The Trading Area can have Convoy activity and Cooperative Expedition activity&lt;br&gt;
This four activities will group by their areas, with the game areas colors.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;** There are multiple "ActivityTemplates" for every "Main Activity", to let start the activity with different setups of players.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;The Area Mining, has the Mining with ROC Activity&lt;br&gt;
The Mining with ROC activity has multiple temlplates to start:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Minimum 3 players and group must have One ROC and one cargo ship with ROC capacity&lt;/li&gt;
&lt;li&gt;Minimum 3 players and group must have One ROC-DS and one cargo ship with ROC-DS capacity&lt;/li&gt;
&lt;/ul&gt;
&lt;/blockquote&gt;

&lt;p&gt;(To make this correctly work there are other aspects too)&lt;/p&gt;

&lt;p&gt;So..&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;I implemented the models refered to the automated activities creation.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;The models related to the automated activities queue system.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;The model related to the data containers in different languages&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;I created new app named JIRE (Epic name) with the objetive of serve global information (Fixed in code or in DB) to all the others apps and operate with it if needed.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;I implemented the admin forms of the info containers in different languages.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Learn how to include other models related fields correctly.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;STOP!&lt;/p&gt;

&lt;p&gt;There was something that will not work!&lt;/p&gt;

&lt;p&gt;I went to contrast my ideas about the activities with other players in other discords and I was a few hours talking about possibles activities and the requiriments I will have to save in the db,... it was a real problem... I will have to include assets_list for every character??? This is expensive work for every user...   and.. Have I got to include assets requiriments system for every template? This is work for me, but easy for users...  I have to think more about it..&lt;/p&gt;

&lt;p&gt;I spend a lot of time after my conversations thinking how to optimize the new requiriments in db about the requiriments for every role in templates and for the whole template..&lt;/p&gt;

&lt;p&gt;Meanwhile all of this I tolk with one relevant streamer and he did a global poll about the most wanted roles in their viewers..&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--VxTNL7cR--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/ozkcj3ptif8g9wkh3vav.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--VxTNL7cR--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/ozkcj3ptif8g9wkh3vav.png" alt="XPanel-StarCitizen-Roles-Poll"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Ok, the most complicated game area to think activities for...   its the most voted: Trading :) (I love this area too by the way)&lt;/p&gt;

&lt;p&gt;I contact with two more content creators to talk about the progress of this activities system.&lt;/p&gt;

&lt;p&gt;This post was really long and really bad wrote... CBA, I continue later, lets go dev!&lt;/p&gt;

</description>
    </item>
  </channel>
</rss>
