Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
75 changes: 61 additions & 14 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,34 +4,39 @@ Open-source testimonial platform built with Rust. Collect, manage, and display s

Self-hosted alternative to Senja, Testimonial.to, and Famewall.

## Features
## Status

- Collect text and video testimonials via customizable forms
- Embeddable widgets (Wall of Love, carousel, cards, popups, and more)
- Import from Twitter/X, Google Reviews, Product Hunt, and other platforms
- Tag, filter, and manage testimonials with an approval workflow
- Analytics dashboard for widget performance
- AI-powered sentiment analysis and video transcription
- Full REST API with JWT authentication
- Self-host with Docker or use Reeverb Cloud
Early development. The foundation is in place — auth, projects, testimonials, tags, and a basic dashboard. See the [roadmap](#roadmap) for what's coming next.

## Stack

| Layer | Technology |
|-------|-----------|
| Backend | [Rapina](https://github.com/arferreira/rapina) (Rust web framework) |
| Frontend | [Leptos](https://leptos.dev) (Rust/WASM, CSR) |
| Database | PostgreSQL via SeaORM |
| Storage | S3-compatible (MinIO, AWS S3, Cloudflare R2) |
| Widgets | Lightweight WASM bundles with Shadow DOM isolation |
| Auth | JWT + OAuth2 (Google, GitHub) |
| Auth | JWT (email/password) |
| Deploy | Docker, Railway |

## What works today

- User registration and login (JWT)
- Projects CRUD
- Testimonials CRUD (text, with nested project routes)
- Tags and testimonial tagging
- Dashboard with project management
- Single binary serves both the API and the WASM dashboard
- Railway deployment with auto-deploy on push to main
- OpenAPI spec generation
- CI pipeline (check, fmt, clippy, test, API checks)

## Quick Start

### Prerequisites

- Rust 1.88+
- PostgreSQL 16+
- Docker (optional, for self-hosting)
- [Trunk](https://trunkrs.dev) (for building the dashboard frontend)

### Development

Expand All @@ -43,7 +48,7 @@ cp .env.example .env
cargo run
```

The server starts at `http://localhost:3000`.
The API starts at `http://localhost:3000`. For frontend development, run `trunk serve` in `crates/dashboard/` (serves on `:8080`, proxies API calls to `:3000`).

### Docker

Expand All @@ -55,6 +60,48 @@ docker compose up -d

All endpoints are documented via OpenAPI. Once running, visit `/__rapina/openapi.json` for the full spec.

## Roadmap

### v0.1 — Foundation (in progress)
- [x] Auth (email/password + JWT)
- [x] Projects CRUD
- [x] Testimonials CRUD
- [x] Tags system
- [x] Dashboard (Leptos CSR)
- [x] Railway deployment
- [ ] Collection forms (public submission pages)
- [ ] CSV import
- [ ] Wall of Love widget + embed system
- [ ] Approval workflow
- [ ] Docker Compose for self-hosting

### v0.2 — Forms & Collection
- [ ] Visual form builder
- [ ] Video testimonial upload (S3)
- [ ] Rating system
- [ ] Email notifications

### v0.3 — Widgets
- [ ] Widget templates (carousel, cards, popup, marquee, badge, minimal)
- [ ] Visual widget customizer
- [ ] Shadow DOM isolation

### v0.4 — Import & Sync
- [ ] Import connectors (Twitter/X, Google Reviews, Product Hunt)
- [ ] CSV import/export
- [ ] Auto-sync engine

### v0.5 — AI & Analytics
- [ ] Sentiment analysis
- [ ] Video transcription
- [ ] Analytics dashboard

### v0.6 — Scale
- [ ] OAuth (Google, GitHub)
- [ ] Multi-user / teams
- [ ] API keys
- [ ] White-label

## Contributing

See [CONTRIBUTING.md](CONTRIBUTING.md) for guidelines.
Expand Down