Ctrl K
ComunidadGuías…

README.md

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

Archivo original ↗Preguntar a KiBot
![Multiforum Logo](./docs/assets/multiforum-header.png)

[![codecov](https://codecov.io/gh/gennit-project/multiforum-nuxt/branch/main/graph/badge.svg)](https://codecov.io/gh/gennit-project/multiforum-nuxt)

## Try it locally

Start a usable local instance, including Neo4j, the backend, the frontend, and
an automatically provisioned administrator:

```bash
docker compose up
```

Then open [http://localhost:3000](http://localhost:3000) and sign in with the
default local password `multiforum-local-admin`. No Auth0, cloud storage, maps,
email provider, or manual Cypher bootstrap is required. See the
[local self-hosting quick-start](./docs/self-hosting-quickstart.md) before
customizing credentials or exposing any service beyond your machine.

## About

Multiforum is a community platform that lets people create and manage topic-based forums with multiple content types:

- Discussions — upvotable posts with threaded comments
- Events — with calendar views and map-based discovery
- Wikis — collaborative docs with revision history
- Downloads — file sharing with custom filters per forum

Key differentiators:

- Cross-posting lets content be shared across multiple forums
- Map integration for location-based event discovery
- Personal libraries for organizing favorites and collections
- Granular moderation at both channel and server levels

Docs: https://docs.multiforum.net/
Website: https://www.multiforum.net/
Hosted Demo: https://www.topical.space/

## How it fits together

Multiforum is split across two repositories:

- **This repository** — the Vue/Nuxt frontend (and its Nitro server layer for SSR and auth).
- **[gennit-project/multiforum-backend](https://github.com/gennit-project/multiforum-backend)** — the GraphQL API and Neo4j data layer.

The frontend talks to the backend exclusively through GraphQL.

> **Backend architecture:** the data model, GraphQL schema, and resolver design
> are documented in depth in the backend's
> [architecture overview](https://github.com/gennit-project/multiforum-backend/blob/main/docs/architecture.md)
> and the references linked from it. This README and the
> [frontend architecture doc](./docs/architecture-and-auth.md) cover the frontend
> and the cross-tier auth flow; for anything about how data is stored, related,
> and queried, start with the backend docs.

## Technology choices — and why

These are the main technologies and, more importantly, _why_ they fit a
cross-posting, deeply-interconnected community platform. If you have never used
them, the short version of each explains what problem it solves here.

### Nuxt (server-side-rendered Vue)

Nuxt is a framework on top of [Vue](https://vuejs.org/) that adds
**server-side rendering (SSR)** — the first version of a page is built on the
server and sent as ready-to-read HTML, then "hydrated" into a live app in the
browser. That matters here for three reasons:

- **Discoverability/SEO.** Forum posts, events, and wikis are public content
  people share and search for. SSR means crawlers and link previews see the
  real content, not an empty shell waiting for JavaScript.
- **Fast first paint.** Users see content immediately instead of a spinner,
  which matters on a content-heavy, link-driven site.
- **Hydration-safe auth.** SSR lets us render the correct logged-in/logged-out
  UI on the server using lightweight auth-hint cookies, avoiding the "flash of
  wrong UI" that plagues purely client-side auth. (See
  [Architecture and authentication](./docs/architecture-and-auth.md).)

Nuxt's file-based routing also maps cleanly onto the many nested routes a forum
app needs (`/forums/[forumId]/discussions/[discussionId]`, etc.).

### Neo4j (graph database, in the backend)

Multiforum's data is fundamentally a **graph**, not a stack of independent
tables. A single discussion can be cross-posted into many forums; comments nest
arbitrarily deep; users connect to forums through roles; moderation issues link
content, actions, and suspensions together. In a relational database, "show me
every forum this download appears in" or "walk this comment thread" turns into a
pile of join tables and recursive queries.

[Neo4j](https://neo4j.com/) stores data as nodes and relationships directly, so
those traversals — _follow the edges between connected things_ — are natural and
efficient. The shape of the database mirrors the shape of the product.

### GraphQL + Apollo Client

Because the data is a graph, the API is too. [GraphQL](https://graphql.org/)
lets the frontend ask for exactly the connected data a screen needs — a
discussion _with_ its channels, author, and comment counts — in a single
request shaped like the result. [Apollo Client](https://www.apollographql.com/docs/react/)
adds a normalized cache so repeated views of the same entity stay consistent and
fast without manual bookkeeping.

### Auth0

[Auth0](https://auth0.com/) is a managed authentication provider. Rather than
building and securing our own login, password reset, and social/single-sign-on
flows, we delegate that to Auth0 and focus on the product. It pairs with the
SSR auth-hint strategy above to keep login state correct across server and
client.

### Supporting libraries

- **Pinia** — small, typed store for UI state that several components share
  (theme, modals, navigation) without prop-drilling.
- **Tailwind CSS** — utility-first styling with first-class dark-mode support,
  which keeps the large component library visually consistent.
- **Google Maps** — powers location-based event discovery and clustering.
- **Vitest + Vue Test Utils** for unit tests and **Playwright** (with mocked
  GraphQL) for end-to-end flows — fast feedback locally and in CI.

## Developer docs

Start here:

- [Local self-hosting quick-start](./docs/self-hosting-quickstart.md)
- [Production Compose foundation](./docs/self-hosting-production.md)
- [Official frontend container image](./docs/frontend-container-image.md)
- [Development setup](./docs/development-setup.md)
- [AWS single-VM Terraform example](./deploy/terraform/aws-single-vm/README.md)
- [Contributing guide](./CONTRIBUTING.md)
- [Developer workflow and standards](./CLAUDE.md)

Architecture:

- [Frontend architecture and authentication](./docs/architecture-and-auth.md)
- [Moderation architecture](./docs/moderation-architecture.md)
- [Performance](./docs/performance.md)
- **Backend architecture:** see the [backend architecture overview](https://github.com/gennit-project/multiforum-backend/blob/main/docs/architecture.md)

Feature areas and plans:

- [Feature roadmap](./docs/feature-roadmap.md)
- [Moderation plan](./docs/moderation-plan.md)
- [Notifications plan](./docs/notifications-plan.md)
- [Plugins: implemented](./docs/plugins-implemented.md) · [roadmap](./docs/plugins-roadmap.md) · [implementation plan](./docs/plugins-implementation-plan.md) · [bot/betabot plan](./docs/plugins-bot-betabot-plan.md)
- [Maps: developer docs](./docs/map-developer-docs.md) · [clustering guide](./docs/map-clustering-guide.md)
- [Automated test plan](./docs/automated-test-plan.md)

All developer docs are indexed in [docs/README.md](./docs/README.md).

Hosted documentation: [docs.multiforum.net](https://docs.multiforum.net).

## Screenshots

- [Screenshots gallery](./docs/screenshots.md)
- [Feature updates (2025)](./docs/feature-updates.md)

## Status

This project is in active development.