[5.1 Prototype] Private Messages - FEUP-MEIC-DS-2025-26/madeinportugal.store GitHub Wiki

[!NOTE] Build instructions and community guidelines are available in the repository.

Vision / Objective

Private Messages aims to enable private, encrypted communication between users. With this approach, the two parties involved can access their messages, allowing them to discuss product details, ask questions, and negotiate securely — free from external access or interference.

Unfeasibility of End-to-End Encryption and its consequences

It leverages encryption-in-transit (via TLS) and encryption at rest (via ChaCha20Poly1305) to best protect user data, given that end-to-end encryption isn't possible in browsers (no local storage).

API

Check the openapi.yaml for all the details. Most endpoints require a cookie (auth_user) for authentication and identity, which can be obtained with the /api/chat/login endpoint.

Architecture and Technologies

DS  Architecture drawio

Tool/Tecnology Role/Category Use in the prototype
Rust with Actix and sqlx crates Backend and middleware server Entry point, API, logic and communication
NextJS with export enabled Frontend Interface and call API
SQLite Database Saving messages and cache users
Jumpseller API API/External service Get the users in the platform
Docker Reproducible deployment Specify production image
GitHub Actions CI/CD Build and push Docker image
Terraform IaC Deploy Google Cloud services
Google Cloud Infrastructure Save Docker Image, deploy Docker Image, and communicate with other microservices