ShareText
Minimal encrypted text sharing platform built with Next.js for securely exchanging temporary content through private links without authentication.

ShareText was designed around a very simple idea: sending text securely through temporary links without requiring accounts, onboarding, or unnecessary friction. The experience was intentionally minimal so users could create and share content instantly.
What made the project technically interesting was the encryption model. Sensitive content was encrypted directly inside the browser before being uploaded, meaning the server only ever handled encrypted payloads rather than readable user data.
If password protection was enabled, decryption also happened entirely on the client side after the recipient opened the shared link. The backend acted purely as a storage layer and never had access to plaintext content.
The project also became an opportunity to deeply explore Next.js architecture patterns. Using Server Actions instead of traditional API routes dramatically simplified the data flow and created a surprisingly clean developer experience without manually writing fetch requests throughout the application.
Temporary text sharing through unique links
Optional password-protected encrypted content
Automatic expiration and cleanup flow
Client-side encryption and decryption
Authentication-free minimal user experience
Server Actions based architecture without manual fetch calls
Client-Side Encryption Flow
Sensitive content was encrypted directly inside the browser before ever reaching the server. The backend only stored encrypted payloads, ensuring the platform owner could never read the shared content.
Next.js Server Functions Architecture
The project heavily explored modern Next.js patterns using Server Actions instead of traditional REST APIs. Data mutations and retrieval happened through framework-native server functions without manually writing fetch layers.
Minimal Temporary Storage System
The backend was intentionally kept lightweight. Shared content could optionally expire after a specified duration, automatically removing inaccessible data while preserving a fast and minimal workflow.
Implementing reliable client-side encryption and password-based decryption flows.
Designing secure content sharing without exposing plaintext data to the backend.
Managing cryptographic operations while preserving a simple user experience.
Learning and structuring larger-scale Next.js server-side architecture patterns.