Commit Graph

35 Commits

Author SHA1 Message Date
Jeff Emmett 8276dacc24 feat: unify auth with EncryptID SDK, remove email/password
Replace inline WebAuthn ceremony with SDK EncryptIDClient.
Remove email/password credentials provider from NextAuth config.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-15 09:36:01 -07:00
Jeff Emmett 23971b2f0f feat: add r* ecosystem footer to layout
Add ecosystem footer with all 10 r* app links to the root layout,
visible on every page including the interactive demo.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-15 08:58:42 -07:00
Jeff Emmett 7172306028 Remove Vercel deploy section from README, add backlog tasks
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-14 20:40:38 -07:00
Jeff Emmett 11060b0a33 Add did property to next-auth Session type
The spaces route accesses session.user.did for space ownership.
Adding the optional property to the type augmentation fixes the
TypeScript compilation error.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-14 19:39:54 -07:00
Jeff Emmett 093062ccc2 Add ambient type declarations for @encryptid/sdk subpath imports
The SDK's dist/ directory may not include .d.ts files in all build
environments (server builds without TypeScript). These ambient
declarations prevent "Could not find a declaration file" errors.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-14 19:38:24 -07:00
Jeff Emmett 4764686bd0 Fix seed script: use visibility field instead of removed isPublic
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-14 19:32:29 -07:00
Jeff Emmett 6666cd1182 Fix Docker build: copy SDK into node_modules directly for Turbopack compat
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-14 19:31:07 -07:00
Jeff Emmett 0e05f3a5ab Fix Docker build: disable Turbopack for file: linked SDK compatibility
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-14 19:27:38 -07:00
Jeff Emmett 9d3c8ee5dc Fix Docker build: use parent context for encryptid-sdk
The @encryptid/sdk dependency uses file:../encryptid-sdk which
requires the build context to include the sibling SDK directory.
Also regenerated lock file to include the SDK.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-14 19:23:08 -07:00
Jeff Emmett a47db17039 Add emoji favicon (🗳️) for browser tab
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-14 19:13:39 -07:00
Jeff Emmett 3cd6ccee6d feat: migrate to configurable space visibility with SDK auth
Replace isPublic boolean with visibility string field (public/public_read/
authenticated/members_only). Use encryptid-sdk for token verification.
Enforce space access in API routes via checkSpaceAccess.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-13 11:54:12 -07:00
Jeff Emmett 4c7cc616fe feat: add Prisma migration for EncryptID did column on User
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-13 07:45:33 -07:00
Jeff Emmett 36584014ae fix: ArrayBuffer type casts for WebAuthn ceremony in TS 5.x
Uint8Array.buffer returns ArrayBufferLike which is incompatible with
PublicKeyCredentialCreationOptions/RequestOptions in strict mode.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-13 07:43:05 -07:00
Jeff Emmett f48a98d520 feat: add EncryptID passkey authentication
Add passkey-based sign-in alongside existing email/password auth:
- Add encryptid credentials provider to NextAuth config
- Add DID field to User model (Prisma schema)
- Add passkey sign-in button to signin page (WebAuthn ceremony)
- Add passkey registration to signup page
- Server-side token verification via EncryptID server
- Auto-creates user from DID on first passkey login

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-13 07:34:21 -07:00
Jeff Emmett 90865039f5 Polish invite flow and improve mobile responsiveness
- Add Sheet UI component for mobile navigation drawer
- SpaceNav: hamburger menu on mobile, horizontal tabs on desktop
- Join page: specific error messages (expired/maxed/invalid), inline success
  state with credits info, already-member handling, skeleton loading
- InviteDialog: add expiry hours input, helper text for email field
- InviteList: new component for admin invite management (revoke, copy link)
- Mobile responsiveness sweep across all space pages, proposals, voting
  buttons, member list, settings, demo page, and final vote panel

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-12 22:49:54 -07:00
Jeff Emmett 9456c6f73f Hide main navbar on space pages, clean up nav links
Space pages use SpaceNav for navigation — the root Navbar with
Sign In/Sign Up buttons was redundant and confusing there.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-12 21:29:57 -07:00
Jeff Emmett e22063c092 Add multi-tenant Spaces with subdomain routing
Introduces independent community Spaces where admins can manage members,
allot credits, and run proposals. Each Space gets its own subdomain
(e.g. cryptocommons.rvote.online). Home page and demo are now fully
public with no auth required.

- Schema: Space, SpaceMember, SpaceInvite models with per-space credits
- Middleware: subdomain detection + URL rewriting to /s/[slug]/*
- APIs: Space CRUD, member management, invite system, space-scoped voting
- UI: Space dashboard, proposals, members, settings, join pages
- Extracted InteractiveDemo component for home/demo pages
- Global /proposals routes redirect to /spaces

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-10 22:10:19 +00:00
Jeff Emmett 333230cea9 Update ProposalCard and VoteButtons with Reddit-style orange/blue colors
- VoteButtons: Orange upvotes, blue downvotes matching demo page
- VoteButtons: Larger arrows (h-7 w-7), proper hover/active states
- ProposalCard: Use plain div instead of Card to avoid flex conflicts
- ProposalCard: Vote column on left (80px) with border separator
- ProposalCard: Progress bar color matches vote state
- Both: Ring highlight when user has voted

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-02-05 23:05:26 +00:00
Jeff Emmett bc56e5bdb6 Fix demo page voting - use Button components and proper flex layout
- Replace raw <button> elements with Button components for proper hydration
- Use plain div instead of Card for proposal items to avoid flex-col conflicts
- Simplify vote handlers into handleUpvote/handleDownvote functions
- Reddit-style layout: vote column (72px) on left with border separator
- Orange upvotes, blue downvotes with proper hover/active states

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-02-05 22:34:54 +00:00
Jeff Emmett eebd6a4349 Redesign demo page with Reddit-style voting UX and improve ELI5 section
Demo page changes:
- Reddit-style vote arrows on left (orange upvote, blue downvote)
- More realistic governance proposals (treasury, moderation, research, security, town halls)
- Prominent color-coded vote states and confirmation flow
- Cleaner card layout with progress bars

Homepage ELI5 section:
- Three distinct colored cards (orange/blue/purple) for each mechanism
- Icon badges for visual hierarchy
- Clearer explanations with emphasized takeaways

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-02-05 19:11:11 +00:00
Jeff Emmett 9fdf122145 Add ELI5 section summarizing rVote mechanism
Adds a succinct "rVote in 30 Seconds" section after the hero that explains:
- Quadratic voting (exponential credit cost)
- Reddit-style ranking (upvote/downvote)
- Time-delayed vote decay (30-60 days)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-02-05 17:05:59 +00:00
Jeff Emmett a624c9f054 Adjust demo proposals for clearer ranking impact
- Set all 3 proposals to similar starting scores (43, 44, 45)
- All proposals start in ranking stage (no pre-promoted)
- Sort proposals by score so rankings visually reorder
- Add rank numbers (#1, #2, #3) to each proposal card
- Hide voting stage section until a proposal is promoted
- Users can now easily see their votes change the order

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-02-05 11:43:30 +00:00
Jeff Emmett 5b0f6f1bf1 Redesign voting UI with inline click-to-count interface
- Replace dialog-based vote weight selector with inline incrementing
- Click up/down arrows to add votes, cost updates in real-time
- Score badge shows preview (current → new) while pending
- Small confirm/cancel buttons appear below pending votes
- Same UX for both VoteButtons component and demo page
- More intuitive and immediate feedback

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-02-05 11:37:13 +00:00
Jeff Emmett 1a5bcc6266 Split hero title into two lines
- "Democratic" on first line
- "Backlog Prioritization" on second line with gradient

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-02-05 11:27:58 +00:00
Jeff Emmett 1edb984ee3 Update site metadata to Quadratic Proposal Ranking
- Update title from "Quadratic Voting" to "Quadratic Proposal Ranking"
- Update description to emphasize backlog prioritization
- Update keywords for better SEO

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-02-05 11:27:16 +00:00
Jeff Emmett d81c1201ef Update demo page terminology
- Change "Quadratic Voting" to "Quadratic Proposal Ranking"
- Keep terminology consistent across the site

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-02-05 11:21:44 +00:00
Jeff Emmett 61b3a4b53c Rename to Quadratic Proposal Ranking
- Update terminology from "Quadratic Ranking" to "Quadratic Proposal Ranking"
- More descriptive naming that emphasizes proposal prioritization

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-02-05 11:20:26 +00:00
Jeff Emmett 76f81736ec Rebrand to Quadratic Ranking with rSpace ecosystem styling
- Rename "Quadratic Voting" to "Quadratic Ranking" throughout
- Update headline to "Democratic Backlog Prioritization"
- Add rSpace ecosystem branding and color scheme
- Apply cyan/teal primary colors using oklch format
- Add gradient backgrounds and decorative elements
- Focus messaging on backlog prioritization vs voting mechanism

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-02-05 11:15:32 +00:00
Jeff Emmett 1f454f67ed Update backlog: deployment complete
Site is live at https://rvote.online

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-02-05 11:10:46 +00:00
Jeff Emmett 4fa5012b4d Add trustHost for production NextAuth
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-02-05 11:04:36 +00:00
Jeff Emmett baa9af3f46 Fix Traefik routing with docker.network label
- Add traefik.docker.network=traefik-public label
- Remove TLS requirement (handled by Cloudflare)
- Use only web entrypoint

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-02-05 09:30:56 +00:00
Jeff Emmett 884e6ee7ee Initialize backlog and add deployment task
- Initialize backlog.md for task tracking
- Add task-1: Deploy rVote.online with demo and explainer pages
- Document completed work and pending deployment steps

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-02-05 04:58:30 +00:00
Jeff Emmett f8bf201c7a Add interactive demo page and update landing page
- Add /demo route with interactive quadratic voting demonstration
- Users can try voting without creating an account
- Sample proposals show both ranking and pass/fail voting stages
- Update landing page with comprehensive quadratic voting explainer
- Add "What is Quadratic Voting?" section with problem/solution
- Add vote cost calculator showing quadratic progression
- Add two-stage voting process explanation
- Add feature highlights (credits, decay, sybil resistance, auto-promotion)
- Add call-to-action sections linking to demo and signup

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-02-05 04:57:52 +00:00
Jeff Emmett c6b7f5d899 feat: implement rVote.online - quadratic voting platform
Complete implementation of a Reddit-style proposal ranking system with:

- Quadratic voting with credit decay (10 credits/day, 30-60 day decay)
- Two-stage voting: Ranking (quadratic) → Pass/Fail (time-boxed)
- Auto-promotion at score ≥100 to 7-day voting period
- NextAuth.js authentication with email/password
- PostgreSQL database with Prisma ORM
- shadcn/ui components with Tailwind CSS
- Docker configuration for deployment

Features:
- User registration/login with credit system
- Proposal creation, editing, deletion
- Upvote/downvote with quadratic cost (weight² credits)
- Vote decay returning credits over time
- Pass/fail voting with Yes/No/Abstain
- User profile with voting history and credit tracking

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-02-05 04:48:20 +00:00
Jeff Emmett 8804057a7d Initial commit from Create Next App 2026-02-05 04:32:10 +00:00