Eine webbasierte Plattform zur Identifikation und Diskussion faschistischer Medieninhalte. Nutzer können verdächtige Artikel einreichen, kommentieren und in Echtzeit diskutieren.
Find a file
Zenny 93286a1ad6 rem: docs folder
- got in to the wiki
2025-09-11 09:04:26 +02:00
build feat(build): add DEBUG constant with build tags 2025-09-04 09:40:35 +02:00
database feat(database): add user role change functionality 2025-09-08 11:43:26 +02:00
handlers refactor: update module name and import paths throughout codebase 2025-09-04 04:58:13 +02:00
helper feat: add type conversion utilities 2025-09-02 12:21:42 +02:00
static feat: add brand assets and favicon 2025-09-02 12:21:41 +02:00
templates style: format JavaScript code in article modal 2025-09-04 11:18:47 +02:00
vendor del: dependencie for github.com/mattn/go-sqlite3 2025-09-04 11:57:21 +02:00
.gitignore feat: add PostgreSQL database support with Docker 2025-09-02 12:21:42 +02:00
docker-compose.yaml feat: add PostgreSQL database support with Docker 2025-09-02 12:21:42 +02:00
go.mod del: dependencie for github.com/mattn/go-sqlite3 2025-09-04 11:57:21 +02:00
go.sum del: dependencie for github.com/mattn/go-sqlite3 2025-09-04 11:57:21 +02:00
main.go del: dependencie for github.com/mattn/go-sqlite3 2025-09-04 11:57:21 +02:00
README.md docs: add comprehensive project documentation 2025-09-04 04:51:32 +02:00

SpotFascistMedia

Eine webbasierte Plattform zur Identifikation und Diskussion faschistischer Medieninhalte. Nutzer können verdächtige Artikel einreichen, kommentieren und in Echtzeit diskutieren.

Features

  • Artikel-Management: Einreichen, Bearbeiten und Verwalten verdächtiger Medienartikel
  • Echtzeit-Kommentare: WebSocket-basierte Live-Diskussionen zu Artikeln
  • Rollenbasierte Berechtigung: 4-stufiges Rollensystem (User, Premium, Moderator, Admin)
  • Responsive Design: Mobile-freundliche Weboberfläche
  • Multi-Database-Support: SQLite, PostgreSQL und MySQL
  • JWT-Authentifizierung: Sichere, tokenbasierte Anmeldung
  • Paginierung: Effiziente Navigation durch grosse Artikelmengen
  • Admin-Tools: Benutzerverwaltung und Moderation

Schnellstart

Voraussetzungen

  • Go 1.25.1 oder höher
  • Git

Installation

  1. Repository klonen:

    git clone https://quelloffen.ch/zenn/SpotFaschistMedia.git
    cd SpotFaschistMedia
    
  2. Entwicklungsserver starten:

    go run -tags=debug -mod vendor .
    
  3. Browser öffnen:

Build-Kommandos

Entwicklung (Debug-Modus)

go run -tags=debug -mod vendor .

Templates werden vom Dateisystem geladen (Hot Reload)

Production Build

go build -mod vendor -o SpotFascistMedia
./SpotFascistMedia

Templates werden in die Binary eingebettet

Datenbank-Konfiguration

SQLite (Standard)

// Automatisch initialisiert mit ./app.db
err := database.InitDB()

PostgreSQL (Empfohlen für Produktion)

# Docker-Container starten
docker compose up -d

# In der Anwendung verwenden
err := database.InitPostgresDB("postgresql://sfm:sml12345@localhost:5332/sfm")

MySQL

err := database.InitMySQLDB("user:password@tcp(localhost:3306)/dbname?charset=utf8mb4&parseTime=True&loc=Local")

Projektstruktur

SpotFaschistMedia/
├── main.go                 # Haupteinstiegspunkt und Routing
├── database/              # Datenbank-Layer (GORM)
│   ├── database.go        # DB-Initialisierung
│   ├── models.go          # Datenmodelle
│   ├── userrepo.go        # User-Repository
│   ├── articlerepo.go     # Article-Repository
│   └── commentsrepo.go    # Comment-Repository
├── handlers/              # HTTP-Handler
│   ├── dashboard.go       # Dashboard-Views
│   ├── article.go         # Artikel-CRUD
│   ├── comment.go         # Kommentar-System
│   ├── login.go           # Authentifizierung
│   ├── register.go        # Registrierung
│   ├── jwt-middleware.go  # JWT-Middleware
│   └── websocket.go       # WebSocket-Handler
├── templates/             # HTML-Templates
│   ├── views/            # Seiten-Templates
│   └── components/       # Wiederverwendbare Komponenten
├── static/               # Statische Assets
├── helper/               # Hilfsfunktionen
└── vendor/               # Go-Dependencies

Rollensystem

Rolle ID Berechtigung
User 1 Artikel lesen, eigene Artikel/Kommentare erstellen
Premium User 2 Zusätzliche Premium-Features
Moderator 3 Alle Artikel/Kommentare moderieren
Administrator 4 Vollzugriff, Benutzerverwaltung

API-Endpunkte

HTML-Routen

  • GET /dashboard - Artikel-Übersicht
  • GET /article/{id} - Artikel-Detailansicht
  • GET /login - Anmeldeformular
  • POST /login - Anmeldung verarbeiten
  • GET /register - Registrierungsformular
  • POST /register - Registrierung verarbeiten

JSON-API

  • GET /api/article/{id} - Artikel-Daten (JSON)
  • POST /api/article - Neuen Artikel erstellen
  • PUT /api/article/{id} - Artikel bearbeiten
  • DELETE /api/article/{id} - Artikel löschen
  • POST /api/comment - Kommentar hinzufügen
  • PUT /api/comment/{id} - Kommentar bearbeiten
  • DELETE /api/comment/{id} - Kommentar löschen

WebSocket

  • WS /ws?article_id={id} - Echtzeit-Updates für Artikel

Konfiguration

Umgebungsvariablen

# Datenbank-Typ (optional, Standard: sqlite)
DB_TYPE=postgres

# PostgreSQL-Verbindung
DATABASE_URL=postgresql://user:password@localhost:5432/dbname

# SQLite-Pfad (optional, Standard: ./app.db)
SQLITE_PATH=./custom.db

# Server-Port (optional, Standard: :8080)
PORT=:3000

Docker-Setup

# PostgreSQL-Container starten
docker compose up -d

# Logs anzeigen
docker compose logs -f

# Container stoppen
docker compose down

Tests

# Tests ausführen
go test ./...

# Mit Verbose-Output
go test -v ./...

# Coverage-Report
go test -cover ./...

Deployment

Binär-Deployment

# Production-Binary erstellen
go build -mod vendor -o SpotFascistMedia

# Auf Server kopieren und ausführen
./SpotFascistMedia

Docker-Deployment

# Dockerfile erstellen (Beispiel)
FROM golang:1.25-alpine AS builder
WORKDIR /app
COPY . .
RUN go build -mod vendor -o SpotFascistMedia

FROM alpine:latest
RUN apk --no-cache add ca-certificates
WORKDIR /root/
COPY --from=builder /app/SpotFascistMedia .
COPY --from=builder /app/static ./static
CMD ["./SpotFascistMedia"]

Entwicklung

Lokale Entwicklung

# Repository forken und klonen
git clone https://quelloffen.ch/zenn/SpotFaschistMedia.git

# Development-Server mit Hot Reload
go run -tags=debug -mod vendor .

# Code-Änderungen werden automatisch geladen

Code-Konventionen

  • Go-Standards befolgen (go fmt, go vet)
  • GORM für Datenbankoperationen
  • Standard-Library HTTP-Router
  • JWT für Authentifizierung
  • WebSockets für Echtzeit-Features

Database-Migrations

// Neue Modelle zur Migration hinzufügen
err := DB.AutoMigrate(&NewModel{})

// Manuelle Migrationen für komplexe Änderungen
DB.Migrator().AddColumn(&User{}, "NewField")

Beitragen

  1. Fork das Repository
  2. Erstelle einen Feature-Branch (git checkout -b feature/amazing-feature)
  3. Committe deine Änderungen (git commit -m 'Add some amazing feature')
  4. Push zum Branch (git push origin feature/amazing-feature)
  5. Öffne einen Pull Request

Support

Sicherheitshinweis

Diese Anwendung dient ausschliesslich defensiven Sicherheitszwecken zur Identifikation und Analyse problematischer Medieninhalte. Missbrauch für schädliche Zwecke ist nicht gestattet.


Entwickelt mit ❤️ für eine bessere Medienlandschaft