Serein
Rust로 만든 가볍고 성능 좋은 Discord 전용 네이티브 클라이언트
아직 감지된 업데이트가 없습니다. GitHub 릴리스가 나오면 여기에 보입니다.
개인 계정의 공개 저장소 소유자는 GitHub로 로그인해 운영자를 확인하고 소개를 직접 관리할 수 있습니다. 관리자 승인은 필요하지 않습니다.
로그인한 뒤 확인 파일을 만들어 이 저장소의 기본 브랜치에 30분 안에 커밋해 주세요. 다른 브랜치나 포크의 파일은 인정하지 않습니다. 파일을 올린 뒤 아래에서 확인하면 관리자 승인 없이 관리할 수 있습니다. 자격을 유지하려면 파일을 남겨 두세요.
로그인이 필요하면 로그인 화면으로 이동합니다. 로그인 후 이곳으로 돌아와 원하는 확인 버튼을 다시 눌러 주세요.
프로젝트 폴더에서 /nomorevibe verify를 실행하면 소유권을 확인하고 소개를 직접 관리할 수 있습니다.
1분 만에 확인하기social site
저장소 README에서 가져옴
README 전체를 불러오는 중입니다.
README 전문 보기 ↗Dating by personality. Masquerade: chat masked for 5 minutes; unmask only if you both say yes. If you don't, the chat is deleted.
Live at dashpad.site · Built with Next.js (hosted on Vercel) and Supabase (accounts, database, photos, live chat).
/terms) and Privacy Policy (/privacy)/api/games/move, which checks the rules in src/lib/boardgames (the same rules the app uses to show legal moves); Whot hands and the market stay hidden.src/lib/features.ts): a floating + button on Home (drag it anywhere) posts a game challenge or a line of text for 3 hours. Only people whose Masquerade settings fit yours, and yours fit theirs, see it (on Home and the Meet page, which also holds Events). Tapping Meet opens a masked chat; on game posts people wait their turn and play one at a time. Both unmask → it's a match. The first post is free, then 10 Keys (no refunds). Price, free posts and length are set in admin → Prices.supabase/migrations/0001_dashpad.sql, click Run.https://dashpad.site.anon public key, service_role secret key.| Name | Value |
|---|---|
NEXT_PUBLIC_SUPABASE_URL | Project URL from Supabase |
NEXT_PUBLIC_SUPABASE_ANON_KEY | anon public key |
SUPABASE_SERVICE_ROLE_KEY | service_role secret key (keep private; used for account deletion) |
NEXT_PUBLIC_SITE_URL | https://dashpad.site |
"regions": ["dub1"] in vercel.json), next to the database in Supabase's Ireland region (eu-west-1). If the database ever moves, change this to match: every page's trips to the database stay a few milliseconds instead of crossing an ocean.dashpad.site, and follow the DNS instructions shown there at your domain registrar.npm install
cp .env.example .env.local # fill in your keys
npm run dev # http://localhost:3000
/preview/<screen> shows each screen with sample data during development (masquerade, waiting, chat, decide, matched, ended, invite, matches, match-chat, profile, onboarding). It is switched off on the live site.
Database rules live in supabase/migrations/0001_dashpad.sql. Matching, timers, unmask decisions and chat deletion all run inside the database, so nobody can cheat them from the browser.
Go to dashpad.site/admin. Log in with the email and password you set in Vercel:
| Name | Value |
|---|---|
ADMIN_EMAIL | the admin login email |
ADMIN_PASSWORD | a long, strong password |
To change them, edit the values in Vercel → Settings → Environment Variables and redeploy (everyone logged in to admin is logged out).
Admin has: an Overview (members, online now, masquerades, matches, revenue, gifts, reports), Masquerade Nights (create, edit, publish, cancel with automatic refunds, night-specific icebreakers, live preview) and Icebreakers (browse by spice level, search, edit, switch off, delete, and bulk-add by pasting one question per line).
Link-Ups (called Pacts in the code and database): questionnaire events at dashpad.site/link/<link> (admin → Link-Ups at /admin/link-ups). Old /pact/, /twin/ and /link-up/ links redirect there.
Feedback: people tap the help button (life ring) at the top of Home, or "Help and feedback" in the side menu on computers, to send feedback, report a problem, ask for help or share an idea. Messages show in admin → Feedback, where you mark them handled or delete them. Run supabase/updates/45_feedback.sql once in Supabase to switch it on.
New profile photos go to R2 once these are set in Vercel (then redeploy). Until then, Supabase storage is used. Older photos keep working from Supabase.
| Name | Value |
|---|---|
R2_ACCOUNT_ID | your Cloudflare account ID |
R2_ACCESS_KEY_ID | R2 API token's Access Key ID |
R2_SECRET_ACCESS_KEY | R2 API token's Secret Access Key (keep private) |
R2_BUCKET | the bucket name, e.g. dashpad-media |
NEXT_PUBLIC_MEDIA_URL | the bucket's address, e.g. https://media.dashpad.site |
Also run supabase/updates/57_r2_photos.sql (with your media address in it), and allow uploads from dashpad.site in the bucket's CORS settings.
dashpad.site, choose Managed.| Name | Value |
|---|---|
NEXT_PUBLIC_TURNSTILE_SITE_KEY | the Site Key |
TURNSTILE_SECRET_KEY | the Secret Key (keep private) |
It protects sign-up and the admin login. Most real people never see a challenge.
Dashpad sends its own password reset emails through Resend (not Supabase's email).
dashpad.site, and add the DNS records it shows at your domain registrar. Wait until it says Verified.| Name | Value |
|---|---|
RESEND_API_KEY | the API key (keep private) |
EMAIL_FROM | Dashpad <[email protected]> |
Reset links last 1 hour, work once, and each account can request at most 3 per hour.
Dashpad emails everyone going to an event the day before and on the day (each reminder goes out once). It uses Resend, so set that up first (above).
| Name | Value |
|---|---|
CRON_SECRET | any long random text (keep private). Vercel uses it to call the reminder job. |
vercel.json tells Vercel to run the job every morning at 8:00 UTC (9:00 in Lagos). You can see it under Settings → Cron Jobs in Vercel.You can turn reminders off for one event in its settings. On an event's admin page, Email attendees now sends everyone going a message straight away (handy when you go live).
https://dashpad.site/api/paystack/webhook and save. (This makes sure Keys arrive even if someone closes the page after paying.)| Name | Value |
|---|---|
PAYSTACK_SECRET_KEY | your Paystack secret key (keep private) |
Key packs and prices live in src/lib/keys.ts (50 for ₦750 · 150 for ₦2,000 · 500 for ₦4,500). Gift prices are in the database (gifts table).
Calls connect the two phones directly. That works on most Wi-Fi, but many mobile networks need a relay (TURN) server. Dashpad uses Cloudflare's (first 1,000 GB a month free, then $0.05/GB):
| Name | Value |
|---|---|
CLOUDFLARE_TURN_KEY_ID | the Turn Token ID |
CLOUDFLARE_TURN_API_TOKEN | the API Token (keep private) |
(Any other TURN provider works too: set TURN_URLS, TURN_USERNAME, TURN_CREDENTIAL instead.)
/terms and /privacy for your country, and fill in the operator's legal name and governing law (section 15 of the Terms).Members turn them on in Profile → Notifications (or from the prompt on Home). They get notified about new messages and gifts, calls, people saying hi at events, matches from events, and event announcements. Nobody is notified while they're actively using Dashpad.
Set these in Vercel → Settings → Environment Variables, then redeploy:
NEXT_PUBLIC_VAPID_PUBLIC_KEY and VAPID_PRIVATE_KEY: a matching pair. Generate with npx web-push generate-vapid-keys. Keep the private one secret. Don't change them later, or everyone has to turn notifications on again.VAPID_SUBJECT: mailto: plus an email push services can contact, e.g. mailto:[email protected].On iPhone, notifications only work after the member adds Dashpad to their home screen (Safari → Share → Add to Home Screen), on iOS 16.4 or later.