sojorn/admin
2026-02-16 10:20:06 -06:00
..
src Fix upload authentication - add authorization header 2026-02-16 10:20:06 -06:00
.gitignore security: sanitized baseline for public release 2026-02-15 00:33:24 -06:00
deploy_server.sh security: sanitized baseline for public release 2026-02-15 00:33:24 -06:00
fix_service.sh security: sanitized baseline for public release 2026-02-15 00:33:24 -06:00
next.config.js security: sanitized baseline for public release 2026-02-15 00:33:24 -06:00
package-lock.json security: sanitized baseline for public release 2026-02-15 00:33:24 -06:00
package.json security: sanitized baseline for public release 2026-02-15 00:33:24 -06:00
postcss.config.js security: sanitized baseline for public release 2026-02-15 00:33:24 -06:00
README.md security: sanitized baseline for public release 2026-02-15 00:33:24 -06:00
setup_nginx.sh security: sanitized baseline for public release 2026-02-15 00:33:24 -06:00
setup_port3002.sh security: sanitized baseline for public release 2026-02-15 00:33:24 -06:00
setup_server.sh security: sanitized baseline for public release 2026-02-15 00:33:24 -06:00
sojorn-admin.nginx security: sanitized baseline for public release 2026-02-15 00:33:24 -06:00
tailwind.config.ts security: sanitized baseline for public release 2026-02-15 00:33:24 -06:00
tsconfig.json security: sanitized baseline for public release 2026-02-15 00:33:24 -06:00

Sojorn Admin Panel

Secure administration frontend for the Sojorn social network platform.

Features

  • Dashboard — Real-time platform stats, user/post growth charts, quick actions
  • User Management — Search, view, suspend, ban, verify, change roles, reset strikes
  • Post Management — Browse, search, flag, remove, restore, view details
  • AI Moderation Queue — Review AI-flagged content (OpenAI + Google Vision), approve/dismiss/remove/ban
  • Appeal System — Full appeal workflow: review violations, approve/reject appeals, restore content
  • Reports — Community reports management with action/dismiss workflow
  • Algorithm Settings — Configure feed ranking weights and AI moderation thresholds
  • Categories — Create, edit, manage content categories
  • System Health — Database status, connection pool monitoring, audit log

Tech Stack

  • Framework: Next.js 14 (App Router)
  • Language: TypeScript
  • Styling: TailwindCSS
  • Charts: Recharts
  • Icons: Lucide React
  • Backend: Go (Gin) REST API at api.sojorn.net

Setup

# Install dependencies
npm install

# Configure API endpoint
cp .env.local.example .env.local
# Edit NEXT_PUBLIC_API_URL if needed

# Run development server
npm run dev

The admin panel runs on port 3001 by default.

Environment Variables

Variable Default Description
NEXT_PUBLIC_API_URL https://api.sojorn.net Backend API base URL

Authentication

The admin panel uses the same JWT authentication as the main app. Users must have role = 'admin' in the profiles table to access admin endpoints.

Setting up an admin user

-- On the VPS, connect to sojorn database
UPDATE profiles SET role = 'admin' WHERE handle = 'your_handle';

Backend API Routes

All admin endpoints are under /api/v1/admin/ and require:

  1. Valid JWT token (Bearer auth)
  2. User profile with role = 'admin'
Method Endpoint Description
GET /admin/dashboard Platform stats
GET /admin/growth User/post growth data
GET /admin/users List users (search, filter)
GET /admin/users/:id User detail
PATCH /admin/users/:id/status Change user status
PATCH /admin/users/:id/role Change user role
PATCH /admin/users/:id/verification Toggle verification
POST /admin/users/:id/reset-strikes Reset strikes
GET /admin/posts List posts
GET /admin/posts/:id Post detail
PATCH /admin/posts/:id/status Change post status
DELETE /admin/posts/:id Delete post
GET /admin/moderation Moderation queue
PATCH /admin/moderation/:id/review Review flagged content
GET /admin/appeals List appeals
PATCH /admin/appeals/:id/review Review appeal
GET /admin/reports List reports
PATCH /admin/reports/:id Update report status
GET /admin/algorithm Get algorithm config
PUT /admin/algorithm Update algorithm config
GET /admin/categories List categories
POST /admin/categories Create category
PATCH /admin/categories/:id Update category
GET /admin/health System health check
GET /admin/audit-log Audit log

Deployment

# Build for production
npm run build

# Start production server
npm start

For production, serve behind Nginx with SSL. Add a server block for admin.sojorn.net:

server {
    listen 443 ssl http2;
    server_name admin.sojorn.net;

    ssl_certificate /etc/letsencrypt/live/admin.sojorn.net/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/admin.sojorn.net/privkey.pem;

    location / {
        proxy_pass http://localhost:3001;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection 'upgrade';
        proxy_set_header Host $host;
        proxy_cache_bypass $http_upgrade;
    }
}

Moderation Flow

Content Created → AI Analysis (OpenAI/Google Vision)
    ↓
Score > threshold → Auto-flag → Moderation Queue
    ↓
Admin reviews → Approve / Dismiss / Remove Content / Ban User
    ↓
If removed → User sees violation → Can file appeal
    ↓
Admin reviews appeal → Approve (restore) / Reject (uphold)