likwid/frontend/src/pages/about.astro
Marco Allegretti de6cc2de7a frontend: modify 26 files
Verified changes:
- modify frontend/astro.config.mjs
- modify frontend/src/components/AdminNav.astro
- modify frontend/src/components/voting/DelegationGraph.astro
- modify frontend/src/layouts/Layout.astro
- modify frontend/src/layouts/PublicLayout.astro
- modify frontend/src/lib/api.ts
- modify frontend/src/pages/about.astro
- modify frontend/src/pages/admin/approvals.astro
- modify frontend/src/pages/admin/invitations.astro
- modify frontend/src/pages/admin/plugins.astro
- modify frontend/src/pages/admin/roles.astro
- modify frontend/src/pages/admin/settings.astro
- modify frontend/src/pages/admin/voting.astro
- modify frontend/src/pages/communities.astro
- modify frontend/src/pages/communities/[slug]/index.astro
- modify frontend/src/pages/communities/[slug]/proposals/new.astro
- modify frontend/src/pages/communities/[slug]/settings.astro
- modify frontend/src/pages/communities/[slug]/voting-config.astro
- modify frontend/src/pages/delegations.astro
- modify frontend/src/pages/docs.astro
- modify frontend/src/pages/features.astro
- modify frontend/src/pages/index.astro
- modify frontend/src/pages/manifesto.astro
- modify frontend/src/pages/proposals/[id].astro
- modify frontend/src/pages/settings.astro
- modify frontend/src/pages/setup.astro

Diffstat:
- 26 files changed, 424 insertions(+), 126 deletions(-)
2026-01-29 00:47:14 +01:00

462 lines
13 KiB
Text
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

---
import PublicLayout from '../layouts/PublicLayout.astro';
---
<PublicLayout title="About" description="Learn about Likwid, a modular governance engine for distributed organizations, open source communities, and civic movements.">
<article class="about-page">
<header class="page-header">
<h1>About Likwid</h1>
<p class="lead">
Likwid is a modular governance engine designed for organizations that need
structured, transparent, and auditable decision-making processes.
</p>
</header>
<section class="content-section">
<h2>What Problem Does Likwid Solve?</h2>
<p>
Most organizations—whether open source projects, political movements, or member associations—struggle
with collective decision-making. They often rely on informal processes, ad-hoc polls, or tools designed
for other purposes (forums, chat platforms, issue trackers).
</p>
<p>
These approaches fail in predictable ways:
</p>
<ul class="problem-list">
<li><strong>Lack of structure</strong> — Discussions drift without resolution. Decisions are made implicitly or by whoever speaks loudest.</li>
<li><strong>No audit trail</strong> — When moderation happens, there's no record of why. Shadow banning and hidden decisions erode trust.</li>
<li><strong>Limited voting methods</strong> — Simple majority voting fails for complex decisions with multiple options or competing priorities.</li>
<li><strong>Participation barriers</strong> — Members who can't attend synchronous meetings or follow high-volume discussions are effectively excluded.</li>
</ul>
<p>
Likwid addresses these problems by providing governance as infrastructure: a system that structures
deliberation, enforces transparency, and supports sophisticated decision-making methods.
</p>
</section>
<section class="content-section">
<h2>What Likwid Is</h2>
<div class="is-grid">
<div class="is-item">
<h4>A Governance Engine</h4>
<p>Likwid provides the core infrastructure for collective decision-making: proposals, deliberation, voting, and implementation tracking.</p>
</div>
<div class="is-item">
<h4>Modular by Design</h4>
<p>Every component is a plugin. Communities choose their voting methods, delegation rules, moderation policies, and integrations.</p>
</div>
<div class="is-item">
<h4>Transparent by Default</h4>
<p>All moderation actions are logged with reasons. There is no shadow banning. Audit trails are cryptographically verifiable.</p>
</div>
<div class="is-item">
<h4>Self-Hostable</h4>
<p>Organizations control their own data. Likwid runs on your infrastructure with no vendor lock-in.</p>
</div>
</div>
</section>
<section class="content-section">
<h2>What Likwid Is Not</h2>
<div class="isnot-grid">
<div class="isnot-item">
<h4>Not a Social Network</h4>
<p>Likwid is not designed for casual conversation, content sharing, or social interactions. It's governance infrastructure.</p>
</div>
<div class="isnot-item">
<h4>Not a Simple Poll Tool</h4>
<p>While Likwid supports voting, it's designed for complex decisions with deliberation phases, multiple options, and sophisticated tallying methods.</p>
</div>
<div class="isnot-item">
<h4>Not a Forum</h4>
<p>Discussions in Likwid are structured and goal-oriented. They're part of a decision process, not open-ended conversation.</p>
</div>
<div class="isnot-item">
<h4>Not a CRM or Membership System</h4>
<p>Likwid handles governance, not member management, donations, or communications. It integrates with those systems.</p>
</div>
</div>
</section>
<section class="content-section">
<h2>Who Is Likwid For?</h2>
<div class="audience-section">
<div class="audience-block">
<h4>Open Source & FLOSS Communities</h4>
<p>
Projects that need to make technical and organizational decisions collectively.
Maintainers, contributors, and users participating in governance alongside code contribution.
Integration with development workflows (GitLab, Forgejo, Gitea) and documentation systems.
</p>
</div>
<div class="audience-block">
<h4>Associations & NGOs</h4>
<p>
Member-driven organizations requiring formal decision processes.
Annual general meetings, board decisions, and policy changes with proper record-keeping.
Transparent moderation for community standards enforcement.
</p>
</div>
<div class="audience-block">
<h4>Political Movements & Parties</h4>
<p>
Grassroots organizations, civic lists, and political parties.
Delegate assemblies, policy development, and candidate selection.
Liquid democracy features for modern participatory politics.
</p>
</div>
<div class="audience-block">
<h4>Federated & Distributed Organizations</h4>
<p>
Networks of chapters, working groups, or autonomous units.
Coordination across geographic or functional boundaries.
Federation features for inter-community governance.
</p>
</div>
</div>
</section>
<section class="content-section">
<h2>Core Principles</h2>
<div class="principles-grid">
<div class="principle">
<h4>Transparency Over Convenience</h4>
<p>Every moderation action is logged with a reason. Audit trails are public. There are no hidden decisions or shadow bans.</p>
</div>
<div class="principle">
<h4>Privacy Where It Matters</h4>
<p>Civic identities (who you are in discussions) and voting identities (how you voted) are separated. Participate openly while voting privately.</p>
</div>
<div class="principle">
<h4>Process Over Features</h4>
<p>Governance is a process, not a feature list. Likwid structures deliberation with clear phases: inform, discuss, decide.</p>
</div>
<div class="principle">
<h4>Flexibility Over Prescription</h4>
<p>Organizations differ. Likwid's plugin architecture lets communities configure governance to match their needs and culture.</p>
</div>
</div>
</section>
<section class="content-section">
<h2>Technical Foundation</h2>
<p>
Likwid is free and open source software (EUPL-1.2), built with modern, auditable technology:
</p>
<div class="tech-table">
<div class="tech-row">
<span class="tech-label">Backend</span>
<span class="tech-value">Rust (Axum framework)</span>
</div>
<div class="tech-row">
<span class="tech-label">Frontend</span>
<span class="tech-value">Astro + TypeScript</span>
</div>
<div class="tech-row">
<span class="tech-label">Database</span>
<span class="tech-value">PostgreSQL</span>
</div>
<div class="tech-row">
<span class="tech-label">Containers</span>
<span class="tech-value">Podman / Docker</span>
</div>
<div class="tech-row">
<span class="tech-label">License</span>
<span class="tech-value">EUPL-1.2</span>
</div>
</div>
<p class="tech-note">
The choice of Rust provides memory safety and performance. PostgreSQL ensures data integrity
for critical governance records. The EUPL-1.2 license guarantees that improvements to Likwid
remain available to the community.
</p>
</section>
<section class="content-section cta-section">
<h2>Learn More</h2>
<p>
Explore Likwid's capabilities, understand our vision, or see the system in action.
</p>
<div class="cta-grid">
<a href="/features" class="cta-card">
<h4>Features</h4>
<p>Detailed explanation of voting methods, delegation, and moderation tools.</p>
</a>
<a href="/manifesto" class="cta-card">
<h4>Manifesto</h4>
<p>The technical and political vision behind Likwid's design.</p>
</a>
<a href="/demo" class="cta-card">
<h4>Demo</h4>
<p>Explore a live instance with pre-populated governance history.</p>
</a>
</div>
</section>
</article>
</PublicLayout>
<style>
.about-page {
max-width: 900px;
margin: 0 auto;
padding: 2rem;
}
.page-header {
text-align: center;
padding: 3rem 0 4rem;
border-bottom: 1px solid var(--color-border);
margin-bottom: 3rem;
}
.page-header h1 {
font-size: 2.5rem;
font-weight: 700;
margin-bottom: 1rem;
}
.lead {
font-size: 1.25rem;
color: var(--color-text-muted);
max-width: 700px;
margin: 0 auto;
line-height: 1.6;
}
.content-section {
padding: 2.5rem 0;
border-bottom: 1px solid var(--color-border);
}
.content-section:last-child {
border-bottom: none;
}
.content-section h2 {
font-size: 1.75rem;
font-weight: 600;
margin-bottom: 1.5rem;
}
.content-section p {
color: var(--color-text);
line-height: 1.7;
margin-bottom: 1rem;
}
.problem-list {
list-style: none;
padding: 0;
margin: 1.5rem 0;
}
.problem-list li {
padding: 0.75rem 0 0.75rem 1.5rem;
position: relative;
color: var(--color-text);
line-height: 1.6;
}
.problem-list li::before {
content: "×";
position: absolute;
left: 0;
color: var(--color-error);
font-weight: 600;
}
.problem-list li strong {
color: var(--color-text);
}
/* Is/IsNot grids */
.is-grid, .isnot-grid {
display: grid;
grid-template-columns: repeat(2, 1fr);
gap: 1.5rem;
margin-top: 1.5rem;
}
@media (max-width: 640px) {
.is-grid, .isnot-grid {
grid-template-columns: 1fr;
}
}
.is-item, .isnot-item {
padding: 1.5rem;
background: var(--color-surface);
border: 1px solid var(--color-border);
border-radius: var(--radius-md);
}
.is-item {
border-left: 3px solid var(--color-success);
}
.isnot-item {
border-left: 3px solid var(--color-neutral);
}
.is-item h4, .isnot-item h4 {
font-size: 1rem;
margin-bottom: 0.5rem;
}
.is-item p, .isnot-item p {
color: var(--color-text-muted);
font-size: 0.9375rem;
margin: 0;
}
/* Audience section */
.audience-section {
display: grid;
gap: 1.5rem;
margin-top: 1.5rem;
}
.audience-block {
padding: 1.5rem;
background: var(--color-surface);
border: 1px solid var(--color-border);
border-radius: var(--radius-md);
}
.audience-block h4 {
font-size: 1.125rem;
color: var(--color-primary);
margin-bottom: 0.75rem;
}
.audience-block p {
color: var(--color-text-muted);
font-size: 0.9375rem;
margin: 0;
line-height: 1.6;
}
/* Principles grid */
.principles-grid {
display: grid;
grid-template-columns: repeat(2, 1fr);
gap: 1.5rem;
margin-top: 1.5rem;
}
@media (max-width: 640px) {
.principles-grid {
grid-template-columns: 1fr;
}
}
.principle {
padding: 1.5rem;
border-left: 3px solid var(--color-primary);
background: var(--color-bg-alt);
}
.principle h4 {
font-size: 1rem;
margin-bottom: 0.5rem;
}
.principle p {
color: var(--color-text-muted);
font-size: 0.9375rem;
margin: 0;
}
/* Tech table */
.tech-table {
background: var(--color-surface);
border: 1px solid var(--color-border);
border-radius: var(--radius-md);
overflow: hidden;
margin: 1.5rem 0;
}
.tech-row {
display: flex;
border-bottom: 1px solid var(--color-border);
}
.tech-row:last-child {
border-bottom: none;
}
.tech-label {
width: 140px;
padding: 1rem;
background: var(--color-bg-alt);
font-weight: 500;
font-size: 0.875rem;
color: var(--color-text-muted);
}
.tech-value {
flex: 1;
padding: 1rem;
font-size: 0.9375rem;
}
.tech-note {
color: var(--color-text-muted);
font-size: 0.9375rem;
font-style: italic;
}
/* CTA section */
.cta-section {
text-align: center;
}
.cta-section h2 {
margin-bottom: 0.75rem;
}
.cta-section > p {
color: var(--color-text-muted);
margin-bottom: 2rem;
}
.cta-grid {
display: grid;
grid-template-columns: repeat(3, 1fr);
gap: 1.5rem;
text-align: left;
}
@media (max-width: 768px) {
.cta-grid {
grid-template-columns: 1fr;
}
}
.cta-card {
display: block;
padding: 1.5rem;
background: var(--color-surface);
border: 1px solid var(--color-border);
border-radius: var(--radius-md);
text-decoration: none;
transition: all var(--motion-fast) var(--easing-standard);
}
.cta-card:hover {
border-color: var(--color-primary);
transform: translateY(-2px);
}
.cta-card h4 {
font-size: 1.125rem;
color: var(--color-text);
margin-bottom: 0.5rem;
}
.cta-card p {
color: var(--color-text-muted);
font-size: 0.875rem;
margin: 0;
}
</style>