Skip to content

Repository files navigation

TwoMice

Anonymous imageboard-style social media — where identity is earned, not assumed.

Live Site

Language License GitHub Org Team

TwoMice combines the topic-focused discussion of imageboards with a friendship layer that makes identity optional. Everyone is anonymous by default — your profile, username, and post history are invisible until a mutual friend request is accepted by both sides.

Features

Anonymous by default Usernames, profiles, and post histories are hidden from everyone. You're just another voice in the thread.

Earned identity Friendship is mutual — only when both sides accept does either person's identity become visible to the other.

Imageboard structure Boards → Posts → Comments → Replies, with upvotes and downvotes throughout.

Moderation tools Reports, mutes, bans, thread locks, post deletion, and a full moderation log accessible from an admin panel.

Architecture

Six independent Rust microservices, each with its own PostgreSQL database. The React frontend talks only to the API gateway, which validates sessions and routes requests.

graph TD
    Browser["Browser\nReact SPA\n5173 dev / 80 prod"]
    Gateway["Gateway (8080)\naxum — session validation + routing"]
    Auth["Auth (8081)"]
    Post["Post (8082)"]
    Mod["Moderation (8083)"]
    Social["Social (8084)"]
    Feed["Social Feed (8085)"]
    auth-db[(auth-db)]
    post-db[(post-db)]
    mod-db[(moderation-db)]
    social-db[(social-db)]
    feed-db[(social-feed-db)]

    Browser -->|"/api → gateway"| Gateway
    Gateway --> Auth
    Gateway --> Post
    Gateway --> Mod
    Gateway --> Social
    Gateway --> Feed
    Auth --> auth-db
    Post --> post-db
    Mod --> mod-db
    Social --> social-db
    Feed --> feed-db
Loading
Service Port Responsibility
gateway 8080 Single entry point — session validation, token caching, request routing
auth 8081 Accounts, sessions, login/signup/logout
post 8082 Boards, posts, comments, replies, votes
moderation 8083 Reports, moderation actions
social 8084 Friend requests, friendships
social-feed 8085 Board follows, personalized feed

Stack

Rust axum PostgreSQL React TypeScript Vite Docker Caddy

Layer Technology
Backend Rust + axum
Database PostgreSQL — one per service, accessed via sqlx with compile-time checked queries
Frontend React 19 + TypeScript + Vite 7
IDs Snowflake BIGINT (distributed-friendly)
Passwords Argon2id
Deployment Docker Compose + Caddy + GitHub Actions

Development

See DEVELOPMENT.md for setup instructions, running locally, database migrations, and deployment.

About

Monorepo orchestrator for the TwoMice platform. Owns deployment, CI/CD, database migrations, and project-wide documentation.

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages