Eine webbasierte Plattform zur Identifikation und Diskussion faschistischer Medieninhalte. Nutzer können verdächtige Artikel einreichen, kommentieren und in Echtzeit diskutieren.
|
||
---|---|---|
build | ||
database | ||
handlers | ||
helper | ||
static | ||
templates | ||
vendor | ||
.gitignore | ||
docker-compose.yaml | ||
go.mod | ||
go.sum | ||
main.go | ||
README.md |
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
-
Repository klonen:
git clone https://quelloffen.ch/zenn/SpotFaschistMedia.git cd SpotFaschistMedia
-
Entwicklungsserver starten:
go run -tags=debug -mod vendor .
-
Browser öffnen:
- Öffne http://127.0.0.1:8080
- Standard-Admin-Login:
admin
/admin123
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-ÜbersichtGET /article/{id}
- Artikel-DetailansichtGET /login
- AnmeldeformularPOST /login
- Anmeldung verarbeitenGET /register
- RegistrierungsformularPOST /register
- Registrierung verarbeiten
JSON-API
GET /api/article/{id}
- Artikel-Daten (JSON)POST /api/article
- Neuen Artikel erstellenPUT /api/article/{id}
- Artikel bearbeitenDELETE /api/article/{id}
- Artikel löschenPOST /api/comment
- Kommentar hinzufügenPUT /api/comment/{id}
- Kommentar bearbeitenDELETE /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
- Fork das Repository
- Erstelle einen Feature-Branch (
git checkout -b feature/amazing-feature
) - Committe deine Änderungen (
git commit -m 'Add some amazing feature'
) - Push zum Branch (
git push origin feature/amazing-feature
) - Öffne einen Pull Request
Support
- Issues: GitHub Issues
- Diskussionen: GitHub Discussions
- Email: zenn@quelloffen.ch
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