Easy-to-manage touch screens
무료 오픈소스 터치스크린으로 USB 설정 가이드, 드래그‑드롭 편집기, 로컬 제어를 제공하며 Home Assistant용으로 제작되었습니다
필리핀 행사(결혼식·생일·졸업 등)를 무료로 계획하고 사진·영상·추억을 한 곳에 보관, 검증된 업체 표시
Plan any Filipino event free — wedding, debut, christening, birthday, graduation, anniversary, reunion, corporate and more — then keep every photo, video, and memory in one place. Verified vendor mark
라이프스타일TypeScript · PLpgSQLGitHub @iscasasola온라인운영자 미확인
써 보셨어요? 한 번만 눌러 주세요. 로그인은 필요 없어요.
개인 계정의 공개 저장소 소유자는 GitHub로 로그인해 운영자를 확인하고 소개를 직접 관리할 수 있습니다. 관리자 승인은 필요하지 않습니다.
로그인한 뒤 확인 파일을 만들어 이 저장소의 기본 브랜치에 30분 안에 커밋해 주세요. 다른 브랜치나 포크의 파일은 인정하지 않습니다. 파일을 올린 뒤 아래에서 확인하면 관리자 승인 없이 관리할 수 있습니다. 자격을 유지하려면 파일을 남겨 두세요.
로그인이 필요하면 로그인 화면으로 이동합니다. 로그인 후 이곳으로 돌아와 원하는 확인 버튼을 다시 눌러 주세요.
프로젝트 폴더에서 /nomorevibe verify를 실행하면 소유권을 확인하고 소개를 직접 관리할 수 있습니다.
1분 만에 확인하기Plan any Filipino event free — wedding, debut, christening, birthday, graduation, anniversary, reunion, corporate and more — then keep every photo, video, and memory in one place. Verified vendor marketplace at 0% commission.
저장소 README에서 가져옴
README 전체를 불러오는 중입니다. 아래는 저장된 발췌입니다.
Set na 'yan. Philippines-first life-events platform. V1 weddings.
This repo holds the Setnayan V1 single-codebase build — one Next.js app distributed to:
• Web at setnayan.com (Vercel)
• Desktop for macOS + Windows via Tauri
• Installable PWA on iPhone, Android, iPad
Native iOS/Android Papic + DSLR pairing are Phase 2.
The product specifications and decision log live outside this repo at
~/Documents/Claude/Projects/Setnayan/. CLAUDE.md there is the canonical
source of truth for product behavior; this repo is the implementation.README 전문 보기 ↗Set na 'yan. Philippines-first life-events platform. V1 weddings.
This repo holds the Setnayan V1 single-codebase build — one Next.js app distributed to:
setnayan.com (Vercel)Native iOS/Android Papic + DSLR pairing are Phase 2.
The product specifications and decision log live outside this repo at
~/Documents/Claude/Projects/Setnayan/. CLAUDE.md there is the canonical
source of truth for product behavior; this repo is the implementation.
.
├── apps/
│ └── web/ Next.js 15 App Router (the one product surface)
│ ├── app/ routes (auth, login, signup, health, …)
│ ├── lib/supabase/ server + browser + middleware-refresh clients
│ ├── public/ manifest.json, service worker, PWA icons
│ └── scripts/ rls-audit.sql (CI deploy gate)
├── packages/
│ └── shared/ cross-app types (PublicId, AccountType, …)
├── src-tauri/ Tauri 2 desktop wrapper (.app + .exe + .deb)
├── supabase/
│ ├── migrations/ SQL migrations (canonical schema + RLS)
│ └── seed.sql dev seed (re-runnable)
├── .github/workflows/ ci · build-desktop · lighthouse
└── .env.example Sprint 0 canonical env keys
Sprint 0 iteration is 0013 platform_stack_and_sync. Spec lives at
~/Documents/Claude/Projects/Setnayan/0013_platform_stack_and_sync/.
| Acceptance | State |
|---|---|
Next.js 14+ App Router with output: 'standalone' | ✅ apps/web/next.config.ts |
| Tailwind with locked breakpoints (sm 640 / md 768 / lg 1024 / xl 1280) | ✅ apps/web/tailwind.config.ts |
.env.example with Supabase / R2 / Daily.co / Resend / Anthropic / Sentry / PostHog / Better Stack keys | ✅ .env.example |
| PWA manifest + service worker + maskable icons | ✅ apps/web/public/manifest.json + sw.js + icon-192.svg + icon-512.svg |
generate_public_id(type_letter) per Account_ID_Format.md | ✅ migration 20260512000000 |
4 RLS helpers (is_admin, current_event_ids, current_vendor_ids, current_thread_ids) | ✅ migration 20260512000000 |
4 base tables (users, events, event_members, event_join_tokens) with S89X- public_id | ✅ migration 20260512000000 |
| RLS enabled + canonical Pattern A/B policies | ✅ migration 20260512000000 |
| Supabase email/password + magic-link (no OAuth popups) | ✅ apps/web/app/login + signup |
/health returns 200 | ✅ apps/web/app/health/route.ts |
Owner auto-issued is_internal=TRUE on signup | ✅ DB trigger keyed off [email protected] |
Tauri scaffold (src-tauri/) | ✅ Cargo.toml + tauri.conf.json + main.rs + lib.rs |
GitHub Actions build-desktop.yml producing .app + .exe | ✅ macOS + Windows matrix |
| Lighthouse ≥ 90 config (Perf / A11y / Best / SEO / PWA) | ✅ .lighthouserc.json + lighthouse.yml |
# Once: enable pnpm via Corepack (Node 22)
corepack enable
corepack prepare [email protected] --activate
# Install
pnpm install
# Copy env template
cp .env.example .env.local
# …then fill in real Supabase / R2 / Daily.co / Resend / Anthropic keys.
# Run the web app
pnpm dev
# Typecheck / lint
pnpm typecheck
pnpm lint
# Tauri desktop (requires Rust toolchain + Tauri CLI prerequisites)
pnpm tauri:dev # boots web at :3000 and wraps it in a Tauri window
pnpm tauri:build # produces .app / .exe / .deb in src-tauri/target/
Migrations live in supabase/migrations/ and are applied via the Supabase CLI:
# One-time link to the Supabase project
supabase link --project-ref <project-ref>
# Push the canonical schema
supabase db push
# Verify the RLS deploy-gate is clean
psql "$DATABASE_URL" -f apps/web/scripts/rls-audit.sql
src-tauri/icons/icon.svg is the master. The desktop build workflow runs
tauri icon to convert it to the required PNG / ICO / ICNS formats. Locally,
do the same once before pnpm tauri:dev:
pnpm add -g @tauri-apps/cli@^2
tauri icon src-tauri/icons/icon.svg
This repo deliberately doesn't duplicate product decisions. The canonical
sources live in the specs folder at ~/Documents/Claude/Projects/Setnayan/:
CLAUDE.md — full decision log, most recent at bottomCLAUDE_Code_Build_Prompt.md — tech-stack and pattern lockdowns02_Specifications/Account_ID_Format.md — the S89X- ID contract02_Specifications/RLS_Policy_Pattern.md — 8 RLS patterns + 4 helpersRETIRED_ITEMS.md — what NOT to build (token wallet, STNYN wordmark, …)API_Integration_Checklist.md — external service prerequisites0013_platform_stack_and_sync/ — this Sprint 0's spec + tests + fixturesConventional commits, iteration-scoped:
iter(0013): wire R2 signed-URL helperiter(0021): add overview surface cardcross: align brand tokens across web + tauri shellchore: bump pnpm to 9.xdocs(0024): clarify STD render quotaPR titles include the iteration number in the same iter(NNNN): form.
Private. © Setnayan.