Skip to content

AathifZahir/Upstack

Repository files navigation

Upstack

Framework Database Runtime Language Styling

Upstack is a high-performance feature request and upvoting platform built for product teams to prioritize what to build next. It allows customers and team members to submit ideas, vote on their favorites, and participate in the product development lifecycle through a transparent feedback loop.

Home Hero

Key Features

  • Team Management: Robust multi-tenant support where team leads and global admins can manage members, invites, and team settings.
  • Feature Requests: Simple yet powerful submission flow for new ideas with categorization and status tracking.
  • Upvoting System: Intelligent voting system that prevents duplicate votes and highlights the most supported ideas.
  • Discussion Threads: Nested commenting system for each feature request to foster deep collaboration.
  • Role-Based Access: Granular security model with Leads, Members, and Global Admins powered by Supabase RLS.
  • Dynamic Dashboard: Real-time filtering and sorting of ideas based on status, category, and popularity.

Tech Stack

Getting Started

1. Prerequisites

  • Bun (v1.x recommended)
  • Supabase CLI (for local database development)
  • A Supabase Project (for API keys)

2. Installation

git clone <repository-url>
cd remix-of-upvote
bun install

3. Environment Setup

Copy the example environment file and fill in your Supabase credentials:

cp .env .env.local

Required variables:

Variable Description
VITE_SUPABASE_URL Your Supabase project URL
VITE_SUPABASE_PUBLISHABLE_KEY Your Supabase anon/public key

4. Database Setup

Initialize the local Supabase environment (optional if using a remote instance):

supabase start
supabase db push

5. Run Locally

bun dev

Open http://localhost:8080 to view the application.

Architecture

Upstack utilizes a decentralized data flow where the frontend communicates directly with Supabase via PostgREST. Security is enforced at the database layer using Row Level Security (RLS).

Request Lifecycle

  1. User interacts with a TanStack Router protected route.
  2. Data is fetched/mutated via TanStack Query calling the Supabase Client.
  3. Supabase RLS verifies the user's role (lead/member) and team membership.
  4. Server response is rendered with SSR via TanStack Start.

Database Schema Reference

Table Description
profiles User profile data (name, email, avatar) linked to Auth.
teams Team metadata including name and invite_code.
team_members Join table for users and teams with role (lead/member).
feature_requests Core data for ideas (title, description, status).
votes Atomic records of user support for specific requests.
comments User feedback threads for specific requests.
user_roles Global system roles (e.g., global admin).

Deployment

Vercel

The project is optimized for deployment on Vercel.

  1. Connect your repository to Vercel.
  2. The build command should be bun run build.
  3. The output directory is automatically detected.

Built with ❤️ by the Upstack Team.

About

Upstack is a high-performance feature request and upvoting platform built for product teams to prioritize what to build next. It allows customers and team members to submit ideas, vote on their favorites, and participate in the product development lifecycle through a transparent feedback loop.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors