Skip to content

Misterscan/Retro-Forum-Template

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

4 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Retro Forum

A retro-styled discussion forum application designed to mimic the look and feel of early 2010s bulletin boards while utilizing modern CSS frameworks.

retro-forum

Features

Core Functionality

  • User Authentication: Complete registration and login system with session management.
  • Thread Management: Users can create new threads, view discussions, and post replies.
  • Post Editing & History: Authors can edit posts, with a full version history maintained for transparency.
  • AI-Powered Tagging: Threads automatically receive relevant tags generated by Gemini AI.
  • AI Moderation: Real-time content analysis using Gemini 2.5 Flash Lite to prevent toxicity and harassment.
  • Search: Built-in search functionality to find threads by keywords.
  • Custom Error Handling: Fully themed, user-aware error pages for 404 (Not Found), 429 (Rate Limited), and 500 (Internal Server Error) to maintain immersion.
  • Real-time Updates: Integrated WebSockets for instant post delivery, notification alerts, and live reaction updates.
  • Password Recovery: Secure email-based password reset system using timed tokens.

User Customization

  • Profiles: Users can customize their location, occupation, interests, and set an external avatar URL.
  • Signatures: Support for text-based signatures that appear below every post.
  • Theme Switcher: Users can toggle between three distinct color themes via their profile settings:
    • Default Blue: The classic retro look.
    • Red Alert: A high-contrast red theme.
    • Matrix Green: A terminal-inspired green theme.
    • Dark Mode: This one is a bit easier on the eyes. Theme preferences are persisted using LocalStorage.
  • Status Updates: Users can post short status updates to their profiles, visible in the global activity feed.

Social & Interaction

  • Reputation System: Users can award reputation points to helpful posts.
  • @Mention System: Real-time autocomplete search for usernames when typing @. Mentions are automatically highlighted and linked to user profiles.
  • Private Messaging: Secure person-to-person messaging system with an integrated inbox.
  • Notifications: System alerts for thread replies, mentions, reputation gains, and new private messages.
  • BBCode Support: Rich text formatting including images, YouTube embeds, and custom smilies managed by administrators.
  • Rate Limiting: Protection against spam and brute-force attacks via SlowAPI.
  • Friend System: Send, accept, or decline friend requests to build a community network.
  • Reactions: React to posts with multiple emojis, updated in real-time across all connected clients.
  • Shoutbox: A real-time global chat for established members (requires 25+ posts).
  • Muting: Users can mute others to hide their content and prevent unwanted interactions.

Bot Personas & Automation

  • Deterministic Commands: Interact with system bots via mentions:
    • @SystemBot (System): Provides system telemetry, pings, and technical support links.
    • @SupportBot (Support): Offers navigation help, user profile stats, real-time weather reports (via NWS/wttr.in), and an interactive riddle game with smart hint generation and normalized answer matching.
    • @ArchiveBot (Archive): Fetches latest news, random threads, and performs deep searches using DuckDuckGo integration.
  • Admin Bot Console: An administrative interface to trigger AI-generated posts using Gemini 3 Flash Preview, allowing for persona-driven announcements and welcomes.

Administrative Tools

  • Dashboard: Overview of site statistics (users, threads, posts, reports).
  • Forum Management: Create, delete, and organize forums and subforums.
  • Moderation Queue: Review and resolve user-submitted reports.
  • Smiley Management: Upload and manage custom BBCode smilies.
  • Bot Controls: Reset bot rate limits and manage automated posting cadence.
  • Seed Interactions (Optional): To populate the forum with AI-generated users, threads, and realistic conversation trees:
    python seed_interactions.py
    To wipe the seeded accounts and their associated posts:
    python cleanup_seed.py

Tech Stack

  • Backend: FastAPI (Python)
  • Database: SQLAlchemy (Async) with support for PostgreSQL and SQLite.
  • AI Service: Google Gemini API (Generative AI SDK).
  • Styling: TailwindCSS (via CDN) + Custom CSS Variables for theming.
  • Templating: Jinja2.
  • Frontend Logic: Vanilla JavaScript for theme switching and confirmation dialogs.
  • Real-time: WebSockets for bi-directional communication.

Project Structure

  • templates/
    • layout.html: Base template containing the header, navigation, footer, and theme definitions.
    • index.html: Main forum view listing threads and categories.
    • thread.html: Individual thread view showing posts and the quick reply box.
    • profile.html: User settings page including the theme selector.
    • login.html / register.html: Authentication pages.
    • search.html: Search results display.
    • memberlist.html: Table view of all registered users.

Setup

  1. Install Dependencies:

    pip install -r requirements.txt
  2. Environment Variables: Create a .env file and configure the following variables:

    • GEMINI_API_KEY: Your Google Gemini API key.
    • DATABASE_URL: Database connection string (defaults to SQLite).
    • SESSION_SECRET_KEY: Secret key for session security.
    • SECRET_KEY: General application secret key used for tokens.
    • SMTP_HOST, SMTP_PORT, SMTP_USER, SMTP_PASSWORD: SMTP configuration for emails.
    • SENDER_EMAIL: The email address used to send system notifications.
    • APP_URL: The base URL of the application (e.g., https://your-forum.railway.app).
    • BOT_MAX_POSTS_PER_WEEK: Quota for AI-generated bot posts.
    • BOT_POST_COOLDOWN_SECONDS: Minimum time between AI bot posts.
    • BOT_SYSTEM_ENABLED: Kill switch for the AI bot generation system.
  3. Seed the support bots:

    python run_seed.py
  4. Run the Application:

    uvicorn main:app --reload

    The first startup automatically seeds a set of default forum categories if your database is empty, so the index isn't blank during local development.

About

Create your own 2010s style forum with this template!

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors