비밀 메시지를 위한 특별한 밸런타인 러브 카드
Source: Dev.to
LSB 스테가노그래피를 사용하여 발렌타인 카드 이미지에 비밀 메시지를 숨기는 Spring Boot 웹 애플리케이션.
아름다운 발렌타인 이미지를 보내면 그 안에 숨겨진 사랑 메시지가 비밀리에 포함됩니다. 앱을 가진 사람만이 이를 해독할 수 있습니다 – 현대를 위한 디지털 보이지 않는 잉크와 같습니다.
Modes
| Mode | Description |
|---|---|
| Read Mode | 발렌타인 카드 이미지를 업로드 → 숨겨진 메시지를 확인 (존재한다면) |
| Create Mode | 비밀 메시지를 작성 → 배경 이미지 선택 → 메시지가 스테가노그래피로 삽입된 발렌타인 카드를 다운로드 |
앱은 Least Significant Bit (LSB) steganography를 사용합니다 – 이미지 픽셀의 각 RGB 색상 채널의 마지막 비트를 미묘하게 변경하여 메시지를 인코딩합니다. 이러한 변화는 인간의 눈에 보이지 않지만 알고리즘으로 해독할 수 있습니다.
Tech stack
- Java 1.8
- Spring Boot 2.7.18
- Thymeleaf 템플릿 (JavaScript 프레임워크 없음)
- 반응형 하트‑형 레이아웃을 갖춘 Vanilla CSS (≈ 70 % 뷰포트, 모바일 친화적)
- Maven 단일‑JAR 배포 (
java -jar준비)
Philosophy: 간단히 시작하라. 작동하는 소프트웨어를 배포하라. 나중에 확장하라.
이 프로젝트는 과도하게 야심찬 7계층 멀티‑모듈 아키텍처로 시작했지만, 깔끔한 단일‑JAR 설계로 빠르게 전환한 뒤 제품을 몇 시간 만에 배포했으며, 며칠이 걸리지 않았습니다.
Build & Run
# Build
mvn clean package
# Run
java -jar target/valentine-love-heart-cards-0.0.1-SNAPSHOT.jar
브라우저를 열고 다음 주소로 이동하세요:
http://localhost:8080
Application Pages
Home (Read Mode)
- 중앙에 활 모양 버튼이 있는 하트‑형 UI.
- 활을 클릭 → 발렌타인 카드 이미지를 업로드.
- 앱이 숨겨진 메시지를 해독하여 표시합니다.
Create Page
- 메시지 입력을 위한 텍스트 영역이 있는 하트‑형 UI.
- 배경 이미지 선택 (PNG/BMP/GIF).
- “Create Card” 클릭 → 삽입된 메시지가 포함된 발렌타인 카드를 다운로드.
- 이미지를 공유하면 수신자가 업로드하여 비밀 메시지를 확인합니다.
View Page
- 업로드 후 해독된 메시지를 표시합니다.
- 가능한 상태: 메시지 발견, 메시지 없음, 오류, 빈.
(스크린샷은 여기서 하트 레이아웃, 활 버튼, 메시지 표시, 그리고 생성 폼을 보여줄 것입니다.)
Project Documentation (the “Agents” approach)
저는 Agents.md 문서를 만들어 시작했습니다 – 정의된 간결한 “계약서”는 다음과 같습니다:
- ✅ 기술 스택: Java 1.8, Spring Boot 2.7.18, 프론트엔드 프레임워크 없음.
- ✅ 아키텍처 규칙: 레이어 의존성, 모듈 구조.
- ✅ 금지 기술: TypeScript, Angular, React, npm 등.
- ✅ 테스트 철학: 별도 테스트 모듈, 프로덕션 JAR에 테스트 코드 없음.
이 단일 파일 덕분에 GitHub Copilot이 코드 생성기에서 자율적인 시니어 개발자로 변했습니다. 모든 세션에 Agents.md를 첨부했으며, Copilot은 세부 관리 없이 올바른 아키텍처 결정을 내렸습니다.
Documentation Flow
- PLAN.md – 단계별 실행 로드맵.
- README.md – 프로젝트 개요 + 빠른 시작.