Ctrl K
ComunidadGuías…

index.html

Rama main · réplica de lectura del repositorio original.

Archivo original ↗Preguntar a KiBot
<!doctype html>
<html lang="en">
  <head>
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <meta name="description" content="Good Phorum (GP Forum) is a general-purpose discussion forum written in Perl. The P in Phorum stands for Perl.">
    <meta name="theme-color" content="#111412">
    <meta property="og:title" content="Good Phorum">
    <meta property="og:description" content="Good Phorum: a general-purpose discussion forum, with a P for Perl.">
    <meta property="og:type" content="website">
    <meta property="og:image" content="assets/img/gpforum-hero.png">
    <title>Good Phorum - Independent Community Infrastructure</title>
    <link rel="icon" href="assets/img/gpforum-mark.svg" type="image/svg+xml">
    <link rel="manifest" href="site.webmanifest">
    <link rel="stylesheet" href="assets/css/site.css">
  </head>
  <body>
    <a class="skip-link" href="#main">Skip to content</a>

    <header class="site-header" data-header>
      <a class="brand" href="#top" aria-label="Good Phorum home">
        <img class="brand-mark" src="assets/img/gpforum-mark.svg" alt="" aria-hidden="true">
        <span class="brand-name">Good Phorum</span>
      </a>
      <nav class="site-nav" aria-label="Primary navigation">
        <a href="#platform">Platform</a>
        <a href="#architecture">Architecture</a>
        <a href="#governance">Governance</a>
        <a href="#roadmap">Roadmap</a>
      </nav>
      <a class="nav-action" href="docs/README.md">Read the documentation</a>
    </header>

    <main id="main">
      <section class="hero" id="top" aria-labelledby="hero-title">
        <img class="hero-image" src="assets/img/gpforum-hero.png" alt="A grounded operations room for an independent community platform, with subtle discussion networks and infrastructure dashboards.">
        <div class="hero-shade" aria-hidden="true"></div>
        <div class="hero-content">
          <p class="eyebrow">Independent community infrastructure</p>
          <h1 id="hero-title">Good Phorum</h1>
          <p class="hero-copy">
            GP stands for Good Phorum. The P in Phorum stands for Perl.
            A general-purpose, Perl-native forum platform for communities that need durable discussion,
            explicit governance, serious moderation, and infrastructure that can be operated for years.
          </p>
          <div class="hero-actions" aria-label="Primary actions">
            <a class="button button-primary" href="#architecture">Explore the architecture</a>
            <a class="button button-secondary" href="https://github.com/gipidevdor/GPForum">Source on GitHub</a>
          </div>
          <dl class="hero-metrics" aria-label="Platform principles">
            <div>
              <dt>Perl</dt>
              <dd>application runtime</dd>
            </div>
            <div>
              <dt>BSD-3</dt>
              <dd>licensed foundation</dd>
            </div>
            <div>
              <dt>Perl</dt>
              <dd>native by design</dd>
            </div>
          </dl>
        </div>
      </section>

      <section class="proof-band" aria-label="Core positioning">
        <div class="proof-inner">
          <span>PostgreSQL authoritative</span>
          <span>Mojolicious SSR</span>
          <span>Minion workers</span>
          <span>PostgreSQL FTS</span>
          <span>Redis optional</span>
        </div>
      </section>

      <section class="section split-section" id="platform">
        <div class="section-kicker">Platform</div>
        <div class="section-heading">
          <h2>Built for communities that outlive trends.</h2>
          <p>
            Good Phorum treats a forum as civic software: conversations, policy,
            moderation, search, events, and operations are all first-class parts
            of the system.
          </p>
        </div>
        <div class="feature-grid">
          <article class="feature-card">
            <h3>Durable discussion</h3>
            <p>Spaces, categories, threads, posts, revisions, archival, and search are modeled as long-lived community assets.</p>
          </article>
          <article class="feature-card">
            <h3>Operational moderation</h3>
            <p>Reports, scoped staff authority, reversible actions, audit logs, and policy versioning keep governance visible.</p>
          </article>
          <article class="feature-card">
            <h3>Independent stack</h3>
            <p>Modern Perl, Mojolicious, DBIx::Class, PostgreSQL full-text search, Minion, and a Redis-optional coordination model.</p>
          </article>
        </div>
      </section>

      <section class="section architecture-section" id="architecture">
        <div class="section-kicker">Architecture</div>
        <div class="section-heading">
          <h2>A modular monolith with distributed instincts.</h2>
          <p>
            The design favors explicit boundaries, stateless app nodes, event tables,
            asynchronous projections, observable workers, and cache layers that can be rebuilt.
          </p>
        </div>
        <div class="architecture-map" aria-label="Good Phorum architecture layers">
          <div class="layer layer-edge">
            <span>Edge</span>
            <strong>Nginx or HAProxy</strong>
          </div>
          <div class="layer layer-app">
            <span>Application</span>
            <strong>Mojolicious nodes</strong>
          </div>
          <div class="layer layer-domain">
            <span>Domain</span>
            <strong>Identity, discussion, moderation, authorization</strong>
          </div>
          <div class="layer layer-data">
            <span>Persistence</span>
            <strong>PostgreSQL, event log, audit log</strong>
          </div>
          <div class="layer layer-derived">
            <span>Derived systems</span>
            <strong>Minion, PostgreSQL FTS, local caches, realtime</strong>
          </div>
        </div>
      </section>

      <section class="section governance-section" id="governance">
        <div class="section-kicker">Governance</div>
        <div class="governance-layout">
          <div>
            <h2>The rules are part of the product.</h2>
            <p>
              Good Phorum does not bury moderation inside ad hoc admin screens. Policy,
              trust, role scope, auditability, appeals, content lifecycle, and privacy
              rights are documented as architecture.
            </p>
          </div>
          <div class="principle-list">
            <article>
              <span>01</span>
              <h3>Deny by default</h3>
              <p>Authorization evaluates actor, action, target, scope, resource state, and user state.</p>
            </article>
            <article>
              <span>02</span>
              <h3>Events tell the truth</h3>
              <p>Durable domain events drive projections, notifications, replay, and audit investigation.</p>
            </article>
            <article>
              <span>03</span>
              <h3>Privacy is operational</h3>
              <p>Retention, deletion, export, consent, search visibility, and breach readiness are explicit.</p>
            </article>
          </div>
        </div>
      </section>

      <section class="section roadmap-section" id="roadmap">
        <div class="section-kicker">Roadmap</div>
        <div class="section-heading">
          <h2>A running forum, with room to grow.</h2>
          <p>
            The forum HTTP MVP is running. What remains is the hardening that turns a working system into one you can trust with a community.
          </p>
        </div>
        <ol class="roadmap">
          <li>
            <span>Shipped</span>
            <strong>Identity</strong>
            <p>Registration, login, server-side sessions, revocation, CSRF, and password and email lifecycle tokens.</p>
          </li>
          <li>
            <span>Shipped</span>
            <strong>Core forum</strong>
            <p>Categories, threads, replies, revisions, keyset pagination, search, and safe server-rendered composition.</p>
          </li>
          <li>
            <span>Shipped</span>
            <strong>Moderation</strong>
            <p>Scoped roles, reports, reversible actions, suspensions, and audit review for staff.</p>
          </li>
          <li>
            <span>Next</span>
            <strong>Private beta</strong>
            <p>Mail delivery, staging drills, database-backed failure tests, and load tests on representative hardware.</p>
          </li>
        </ol>
      </section>

      <section class="final-cta" aria-labelledby="final-title">
        <div>
          <p class="eyebrow">Open source, BSD-3-Clause</p>
          <h2 id="final-title">Read the code. Run the gates.</h2>
          <p>
            Clone the repository, install dependencies with Carton, and run <code>make check</code>: syntax, tests, Perl::Critic, perltidy, and the architecture contract.
          </p>
        </div>
        <a class="button button-primary" href="https://github.com/gipidevdor/GPForum">View on GitHub</a>
      </section>
    </main>

    <footer class="site-footer">
      <div>
        <strong>Good Phorum</strong>
        <span>Independent community infrastructure, licensed BSD-3.</span>
      </div>
      <div class="footer-links">
        <a href="LICENSE">License</a>
        <a href="README.md">Documentation</a>
        <a href="GOVERNANCE.md">Governance</a>
      </div>
    </footer>

    <script src="assets/js/site.js"></script>
  </body>
</html>