May is a special month in Korea — packed with occasions to reach out to the people we love.
Children’s Day (May 5), Parents’ Day (May 8), Teachers’ Day (May 15), Couples’ Day (May 21)… it’s no accident the whole month is called Family Month. Flower shops overflow with carnations, and KakaoTalk fills up with heartfelt digital cards. Sending a digital greeting card has become second nature.
But I want to ask a simple question.
“Are those May greetings actually reaching everyone?”

Photo: Author / Unsplash
People Who Can’t Send a Card#
There are plenty of digital card services out there — beautiful templates, fancy fonts, cute stickers. The screens look great. But for some people, those beautiful screens are either impossible to see or impossible to use.
Screen Reader Users with Visual Impairments#
People with visual impairments navigate the web using screen readers (text-to-speech programs). When a button has no accessible name, the screen reader just says “button.” When an image has no alt text, it says “image.” (In reality, the output is often even harder to parse than that.)
Open most card-making services with a screen reader and you’ll hear something like this:
“Button. Image. Button. Button. Image. Image. Button.”
There’s no way to tell what any of it means. You can’t even pick a template, let alone create a card.
People Who Can’t Use a Mouse#
Parkinson’s disease, muscular disorders, tremors from aging — for many people, clicking and dragging a mouse is genuinely difficult. Everything should be operable by keyboard alone. But most card services are designed around mouse interactions. Tab key navigation might produce no visible focus indicator, or certain controls can only be used by dragging. (Learn more about why keyboard accessibility matters)
People with Color Vision Deficiency#
Red carnation background, white text on top. It looks lovely — but for someone with color vision deficiency, the background and text might be nearly indistinguishable. Insufficient color contrast makes content unreadable. (Read more about color accessibility)
Older Adults Struggling with Small Text and Complex UI#
For people less familiar with digital devices, a cluttered interface is itself a barrier. Tiny text, buttons that don’t look like buttons, error messages that don’t explain what went wrong — the very people who would most love to receive a card from their children may find it hardest to send one back.
For a card-making service, that’s a small act. But for some people, the door to that act is locked.

Photo: Author / Unsplash
So I Built Daon Card#
I’ve spent years researching web accessibility — finding issues, filing improvement requests, and working to fix them directly. Again and again.
While testing a card service ahead of Family Month this year, I had a thought:
“I could just build one myself.”
(Immediately followed by: “Oh. There’s more to this than I thought.” Classic developer moment.)
That’s how Daon Card (daoncard.com) came to be.
“다온 (Daon)” is a native Korean word meaning “may all good things come.” The name carries the hope that warm greetings can reach every single person — not just some of them.
It’s completely free. No sign-up required. (If you’d like, signing in with a Google account lets you manage your cards in one place.)

Photo: Author / Unsplash
What Daon Card Offers#
7 Card Templates#
Templates made for each occasion in Family Month.
| Template | Occasion |
|---|---|
| Parents’ Day 🌹 | May 8 |
| Children’s Day 🎈 | May 5 |
| Teachers’ Day 📚 | May 15 |
| Couples’ Day 💑 | May 21 |
| Family Day 🏡 | All of May |
| Birthday 🎂 | Any time |
| Default 💌 | Open-ended |
3 Ways to Add an Image#
- Upload your own — Add a family photo or a cherished memory
- Choose a default image — Pick from illustrations provided with each template
- Text only — Sometimes words are all you need
Multiple Sharing Options#
Once your card is ready, you can share it several ways:
- KakaoTalk direct share
- Email delivery
- Copy link (paste into any message or chat)
- Web Share (opens your phone’s native share sheet)
Tech Stack & System Architecture#
For those curious about what’s running under the hood.
Tech Stack#
| Role | Technology |
|---|---|
| Framework | Next.js 14 (App Router) + TypeScript |
| UI | Tailwind CSS + shadcn/ui |
| Database | Supabase (PostgreSQL + image storage) |
| Service management | Upstash Redis |
| Deployment | Vercel |
The entire service runs on free tiers — Supabase, Upstash, and Vercel all cover the load without a paid plan. It’s a side project, though I wouldn’t mind upgrading if usage grows.
System Architecture#
flowchart LR
User(["👤 User"])
subgraph Client["Client"]
Editor["Card Editor\n/create"]
Viewer["Card Viewer\n/card/id"]
end
subgraph Vercel["Next.js API (Vercel)"]
API_Cards["POST /api/cards\nCreate card"]
API_Send["POST /api/send\nSend email"]
end
subgraph External["External Services"]
Supabase[("Supabase\nDB + Storage")]
Upstash[("Upstash\nRedis")]
end
User --> Editor
User --> Viewer
Editor --> API_Cards
API_Cards --> Upstash
API_Cards --> Supabase
Viewer --> Supabase
Editor --> API_Send
API_Send --> Supabase
How Card Creation Works Internally#
Here’s the sequence of what actually happens when you create and share a card.
sequenceDiagram
actor U as User
participant E as Card Editor
participant A as API Server
participant R as Rate Limiter
participant DB as Supabase
U->>E: Choose template + write message
U->>E: Upload photo (optional)
Note over E: Compressed to WebP in browser
E->>A: POST /api/cards
A->>R: Internal processing
R-->>A: Allowed (internal validation passed)
A->>DB: Save card + upload image
DB-->>A: Return unique slug
A-->>E: Card link ready
E-->>U: Show share panel
If you upload a photo, it’s compressed to WebP in the browser before reaching the server — smaller file size, faster upload. Card data is saved in Supabase and assigned a unique slug (e.g. abc123). Anyone with that link can open the card.
How Accessibility Works in Daon Card#
Accessibility — with a garnish of care.

Yes, accessibility.
Daon Card is built to WCAG 2.2 AA standards. Here’s what that means in practice.
Full Keyboard Navigation#
Every feature — from template selection to card sharing — works with Tab, arrow keys, Enter, and Space. No mouse required. Focus is always clearly visible with a 2px+ outline so you always know where you are.
Screen Reader Compatible Throughout#
Every button and input field has a clear, descriptive name. The image selection area is built as a radio group, so a screen reader announces “1 of 3 selected” and similar context. After copying the link, the screen reader immediately announces “Link copied.”
Skip Navigation#
A “Skip to main content” link sits at the top of each page for keyboard and screen reader users. You can jump directly to the card editor without tabbing through the navigation every time.
Real-Time Color Contrast Checker#
When you choose text and background colors for your card, a live contrast ratio is displayed. You can see at a glance whether it meets the WCAG threshold (4.5:1), so you won’t accidentally create a card that’s hard to read.
Required Alt Text for Images#
When you upload a photo, you’re prompted to add a description of the image. This means the card recipient can understand what the photo shows even if they use a screen reader.
Dark Mode and High Contrast Mode#
A dark mode and high contrast mode toggle in the header lets users switch themes at any time — helpful for people with light sensitivity or low vision. The font color you choose for your card is also mapped to maintain sufficient contrast when the mode changes.
How to Create a Card#
Just three steps.
Step 1 — Choose a Template
Go to daoncard.com and click “카드 만들기” (Create Card). Seven templates will appear. Pick the one that fits your occasion.
Step 2 — Add Your Content
Enter a title and your message. Upload a photo or choose a default image, and adjust font size and colors as you like. Add your name in the sender field and it’ll appear at the bottom of the card as “From. [Your Name].”
Step 3 — Share
When your card is ready, a unique link is generated. Share it directly via KakaoTalk, or copy the link and send it by text. No login. No fee.

Photo: Author / Unsplash
A Closing Thought#
Daon Card isn’t perfect. There’s still more to improve and more to refine.
But one thing I can say with confidence: accessibility was a core value from day one, not an afterthought tacked on later. It’s built into the foundation of the service. The best way to build accessible products is to start right — from the design stage.
I hope May’s greetings reach a few more people this year.
→ Create a card at daoncard.com
Free. With Heart.
