尚未偵測到更新。GitHub 發布版本後會顯示在這裡。
個人 GitHub 帳號下公開儲存庫的擁有者可以登入並驗證所有權,自行管理介紹,無需管理員核准。
登入並產生驗證檔案,在 30 分鐘內將其提交至此儲存庫的預設分支。其他分支或分叉儲存庫中的檔案無效。然後在下方檢查檔案,即可無需管理員核准直接管理專案。請保留檔案以維持管理權限。
如需登入,將前往登入頁面。登入後請回到此處,再次點擊所選的驗證按鈕。
在專案資料夾中執行 /nomorevibe verify,即可驗證所有權並自行管理介紹。
一分鐘完成驗證Gift wish list platform — create, share, and reserve gifts without duplicates. Mobile first, zero friction for guests.
翻譯準備中
取自儲存庫 README
正在載入完整 README。 以下為已儲存的摘錄。
A wishlist sharing platform — create wishlists, share them with anyone, and let people reserve gifts without spoiling the surprise.
Podaruj.me solves a universal problem: buying gifts without duplicates and awkward guessing. A user creates a wishlist for any occasion — birthday, holidays, wedding — shares a link, and guests can browse and reserve items instantly. No account required for guests. Three privacy modes let the list owner control exactly how much they see, from full transparency to complete surprise.
🎬 See it in action
🔊 Unmute for English voiceover · 🇵🇱 Wersja polska檢視完整 README ↗A wishlist sharing platform — create wishlists, share them with anyone, and let people reserve gifts without spoiling the surprise.
Podaruj.me solves a universal problem: buying gifts without duplicates and awkward guessing. A user creates a wishlist for any occasion — birthday, holidays, wedding — shares a link, and guests can browse and reserve items instantly. No account required for guests. Three privacy modes let the list owner control exactly how much they see, from full transparency to complete surprise.
🔊 Unmute for English voiceover · 🇵🇱 Wersja polska
https://github.com/user-attachments/assets/08b42f80-7438-4cbd-ac0a-e5829cdee67f
Three things that make this more than a CRUD app:
🔒 Privacy modes enforced at the database level — three reservation visibility tiers, including a Full Surprise mode where even the list owner can't see who reserved what
🎯 Guest-first access — no account needed to browse or reserve. One tap from a messenger link and you're in
🤖 Built through agentic orchestration — zero hand-written code, fully documented process from prompt to production (see docs/)
Gift lists sound simple — until you think about privacy. Who sees what? Can the birthday person find out what's coming? What happens when the event passes? These questions turned a "simple CRUD app" into a product with real UX depth: three privacy modes, a Full Surprise lifecycle with draft/publish/reveal stages, guest access without sign-up walls, and a celebration screen after the event.
I wanted a portfolio project that demonstrates product thinking, not just code output — something with real user flows, edge cases worth solving, and a UI polished enough to pass as a shipped product.
Built in 3 days — from concept to deployed product, using document-driven agentic orchestration.
The core differentiator. Each list has one of three reservation privacy modes, enforced server-side — not just hidden in the UI:
Full Surprise lists have a dedicated lifecycle: they start as drafts (invisible to guests), and once published, items are locked to prevent the owner from reverse-engineering reservations through edits.
Guests arrive via a shared link or QR code and can browse and reserve immediately — no sign-up, no login wall. Just enter a nickname and go. This was a deliberate UX decision: most users arrive through a messenger link on their phone, and any friction means drop-off.
@dnd-kit, plus 8 sort optionsmailto: with a pre-composed friendly messageLists aren't just static pages — they have a full lifecycle:
Full English and Polish support with a language switcher. Built with next-intl.
Passwordless authentication via Google OAuth or magic link. Profile settings with display name, avatar (synced from Google), and full account deletion with cascade cleanup.
Owner Guests
│ │
├─ Creates list │
├─ Adds items │
├─ Chooses privacy mode │
├─ Shares link / QR / email ──→│
│ ├─ Opens link (no account needed)
│ ├─ Browses items
│ ├─ Reserves with nickname
│ │
├─ Sees reservations │
│ (per privacy mode) │
├─ Event passes → list closes │
└─ Celebration + reveal 🎉 ┘
I deliberately chose to build this through document-driven agentic orchestration rather than writing code by hand. The goal was to explore and demonstrate a workflow that's becoming increasingly relevant: treating AI agents as an implementation team that you direct through structured documentation, iterative review, and precise prompts.
This isn't about avoiding code — it's about operating at a higher level of abstraction. Defining the product, validating the output, maintaining quality, and steering agents when they drift. The same skills that make a good tech lead or product engineer, applied to a new kind of toolchain.
Built in 3 days. Zero hand-written code. Full product control.
prompt.md → design.md → my review → plan.md → execution → AI code review → E2E tests → validation
(intent) (AI spec) (approve/ (AI plan) (AI agents) (iterative) (Playwright) (manual QA)
correct)
↑ │
└──────────────────────────── iterative feedback loop ───────────────────────────────────────────────┘
Each feature was built as an atomic delivery — a small, well-scoped task with a clear prompt, generated design, and execution plan. This modular approach prevents context drift and keeps AI output consistent and predictable.
Orchestrating AI agents is a distinct engineering skill. It requires product thinking to define what to build, UX intuition to evaluate whether it's good, prompt engineering to communicate what you want precisely, and quality standards to catch what's wrong. The code is agent-generated. The product vision, UX quality, and relentless iteration are mine.
📁 The full development trail — prompts, AI-generated designs, and execution plans — is documented in
docs/.
This project was deliberately built through full agentic orchestration — an experiment in pushing that workflow as far as it goes. It's great for rapid prototyping, validating product ideas, and shipping MVPs fast. For production-grade work requiring tighter control over architecture and code quality, I use a different workflow: AI pair programming with human-in-the-loop review at every step. You can see that approach in my other repositories.
I didn't make the architectural decisions — the AI agents did. But my product requirements forced non-trivial solutions:
These weren't engineering decisions I made — they were product constraints I defined that shaped the architecture.
| Layer | Technology |
|---|---|
| Framework | Next.js 16 (App Router, Server Actions) |
| Language | TypeScript 5 |
| UI | React 19 |
| Styling | Tailwind CSS 4 + shadcn/ui |
| Backend & Auth | Supabase (PostgreSQL, Auth, RLS) |
| Auth Providers | Google OAuth, Magic Link |
| i18n | next-intl (EN + PL) |
| Drag & Drop | @dnd-kit |
| Testing | Playwright (E2E) |
| Hosting | Vercel |
# Clone the repository
git clone https://github.com/przemg/podaruj.me.git
cd podaruj.me
# Install dependencies
npm install
# Set up environment variables
cp .env.example .env.local
# Fill in your Supabase URL, anon key, and Google OAuth credentials
# Run the development server
npm run dev
Open http://localhost:3000.
| Variable | Description |
|---|---|
NEXT_PUBLIC_SUPABASE_URL | Your Supabase project URL |
NEXT_PUBLIC_SUPABASE_ANON_KEY | Supabase anonymous key |
SUPABASE_SERVICE_ROLE_KEY | Supabase service role key (server-side only) |
NEXT_PUBLIC_BASE_URL | App base URL (e.g. http://localhost:3000) |
This project is for portfolio and educational purposes.