Lobster is a simple tool I built to solve a common problem: sharing passwords or secrets between devices without leaving a trace. Think of it as AirDrop for the browser, but it works on everything.
I wanted something faster and more private than sending links to myself in Telegram "Saved Messages" or via email.
- You send a secret to the backend.
- Lobster gives you a unique UUID link.
- You open that link on another device (phone, laptop, whatever).
- The secret is shown and immediately deleted from the server's memory.
- RAM only: No databases. If the server restarts, everything is gone.
- One-time only: Once the link is opened, it’s destroyed. No "back" button, no history.
- Privacy first: Best used when deployed locally or in your private network.
- Clean code: I used Golang with a layered architecture (Handler -> Service -> Repository) and Dependency Injection.
- Language: Go (Golang)
- Containerization: Docker
- Concurrency: Thread-safe
sync.Mutexfor memory management.
# Build the image
docker build -t lobster .
# Start the container
docker run -p 8080:8080 lobsterIf you have Go installed:
go run cmd/main.goThe server will start at http://localhost:8080.
Send your password as JSON:
curl -X POST http://localhost:8080/api/links \
-H "Content-Type: application/json" \
-d '{"password": "your-secret-string-here"}'Response: {"id": "your-uuid-here"}
Just hit the endpoint with the ID. Remember: it only works once!
curl http://localhost:8080/api/links/YOUR_UUID_HEREResponse: {"password": "your-secret-string-here"}
I tried to keep things organized:
- cmd/ — Entry point.
- internal/handler/ — HTTP logic.
- internal/service/ — Business logic & Interfaces (DI).
- internal/repository/ — In-memory storage.
- utils/ — JSON response helpers.
Feel free to open an issue or a PR if you have ideas on how to make this even better!