Commit Graph

22 Commits

Author SHA1 Message Date
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