Special Valentine love cards for secret messaging
Source: Dev.to
A Spring Boot web application that hides secret messages inside Valentine‑card images using LSB steganography.
Send someone a beautiful Valentine image that secretly contains a hidden love message. Only someone with the app can decode it – it’s like digital invisible ink for the modern age.
Modes
| Mode | Description |
|---|---|
| Read Mode | Upload a Valentine‑card image → see the hidden message (if one exists) |
| Create Mode | Write your secret message → select a background image → download a Valentine card with your message steganographically embedded |
The app uses Least Significant Bit (LSB) steganography – it encodes your message by subtly modifying the last bit of each RGB colour channel in the image pixels. The changes are invisible to the human eye but can be decoded by the algorithm.
Tech stack
- Java 1.8
- Spring Boot 2.7.18
- Thymeleaf templates (no JavaScript frameworks)
- Vanilla CSS with a responsive heart‑shaped layout (≈ 70 % viewport, mobile‑friendly)
- Maven single‑JAR deployment (
java -jarready)
Philosophy: Start simple. Ship working software. Scale later.
This project began as an over‑ambitious 7‑layer multi‑module architecture, but after a quick pivot to a clean, single‑JAR design the product shipped in hours, not days.
Build & Run
# Build
mvn clean package
# Run
java -jar target/valentine-love-heart-cards-0.0.1-SNAPSHOT.jar
Open your browser and navigate to:
http://localhost:8080
Application Pages
Home (Read Mode)
- Heart‑shaped UI with a bow button at the centre.
- Click the bow → upload a Valentine‑card image.
- The app decodes any hidden message and displays it.
Create Page
- Heart‑shaped UI with a textarea for message input.
- Select a background image (PNG/BMP/GIF).
- Click “Create Card” → download a Valentine card with the embedded message.
- Share the image; the recipient uploads it to reveal your secret message.
View Page
- Shows the decoded message after upload.
- Possible states: message found, no message, error, empty.
(Screenshots would go here showing the heart layout, bow button, message display, and create form.)
Project Documentation (the “Agents” approach)
I began by creating an Agents.md document – a concise “contract” that defined:
- ✅ Tech stack: Java 1.8, Spring Boot 2.7.18, NO front‑end frameworks.
- ✅ Architecture rules: layer dependencies, module structure.
- ✅ Prohibited technologies: TypeScript, Angular, React, npm, etc.
- ✅ Testing philosophy: separate test modules, no test code in the production JAR.
This single file turned GitHub Copilot from a code generator into an autonomous senior developer. I attached Agents.md to every session, and Copilot made correct architectural decisions without micromanagement.
Documentation Flow
- PLAN.md – phased execution roadmap.
- README.md – project overview + quick start.