Ferro is a high-performance, full-stack social networking platform built with a modular Rust backend, a native Android client using Jetpack Compose, and a modern Next.js web application.
- Ephemeral Stories: 24-hour auto-expiring media stories with real-time viewer analytics, author-restricted viewer lists, and unread indicator rings.
- Direct Messaging (DM): Real-time 1:1 private conversations featuring unread counters, message snippets, and read receipt checkmarks.
- Interactive Feed and Posts: Dual feed modes (Following and Explore), live voting polls with real-time percentages, quote posts, multi-media attachments, nested comments, and optimistic bookmarking and liking.
- Discovery and Search: Full-text post content search, trending hashtags, and creator recommendations with instant follow actions.
- Security and User Profiles: Two-factor authentication (2FA TOTP), handle-based user queries, customizable banners, avatars, bios, and follower statistics.
| Component | Layer | Technologies |
|---|---|---|
| Serve | Backend API | Rust 2024, Axum 0.8, async-graphql 7.2, SQLx 0.9, Tokio, Tower-HTTP, Argon2, JWT, DataLoader |
| Vision | Web Client | Next.js 15 (App Router), React 19, TypeScript 5, Custom CSS Design System, Lucide Icons |
| Infrastructure | Database & Runtime | SQLite (Default for local development), PostgreSQL 16 Alpine, Podman / Docker Compose |
Ferro/
├── Serve/ # Rust GraphQL Backend API
│ ├── Cargo.toml
│ ├── podman-compose.yml # Containerized PostgreSQL service
│ ├── compose.prod.yml # Production Compose setup
│ ├── migrations/ # SQLx database schema migrations
│ ├── tests/ # Integration tests
│ └── src/
│ ├── application/ # Application and business services
│ ├── domain/ # Entities, domain models, and error definitions
│ ├── graphql/ # GraphQL schema, queries, mutations, and resolvers
│ ├── infrastructure/ # Database pools, DataLoaders, security, and configuration
│ └── routes/ # Axum route handlers and health endpoints
│
└── Vision/ # Next.js 15 Web Application
├── package.json
├── next.config.ts
└── src/
├── app/ # Next.js App Router pages and global design system
├── components/ # UI components and modals
└── lib/ # Auth context, Toast context, GraphQL client, types
- Rust: 1.80+ (Rust 2024 edition)
- Node.js: 20.x or later with npm
- Android Studio: Ladybug / Meerkat or compatible with Android SDK 35
- Container Engine (Optional): Podman or Docker
From the Serve directory:
# Start backend using SQLite (default)
cargo run --bin serve- GraphQL Endpoint:
http://localhost:8080/graphql - GraphiQL Playground:
http://localhost:8080/graphiql
To populate the database with seed data for testing:
cargo run --bin seedFrom the Vision directory:
# Install dependencies
npm install
# Start development server
npm run devOpen http://localhost:3000 in your web browser.
A native Android client using Jetpack Compose and MVI / Clean Architecture is planned. When available:
- Open
Vision/Androidin Android Studio. - Sync the project with Gradle files.
- Run on an Android Emulator (connected via
http://10.0.2.2:8080/graphql).
This project is licensed under the MIT License. See the LICENSE file for details.