Skip to content

vyixor/quoteshift

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

7 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

πŸ“ Quoteshift

Professional business quotes in seconds, not hours.

Quoteshift is an AI-powered quote generation platform that transforms client requests into beautifully formatted, customizable quotes. Built for freelancers, small business owners, and service providers who want to save time and maintain consistency.

TypeScript CSS React Next.js


✨ Features

  • ⚑ One-Click Generation β€” Paste what the client wants, get a professional quote instantly
  • 🎨 4 Format Templates β€” Clean, Itemized, Corporate, or Quick Card formats
  • πŸ’Ύ Custom Branding β€” Set your base price, timeline, footer message, and design preferences
  • πŸ“€ Multi-Export β€” Download as plain text, styled HTML, or print-ready PDF
  • πŸ” Free & Pro Plans β€” 3 free quotes monthly, unlimited access with Pro
  • 🌐 Cloud-Backed β€” Supabase authentication and profile storage
  • πŸ“± Desktop-Optimized β€” Beautiful typography and responsive design

πŸš€ Quick Start

Prerequisites

  • Node.js 18+ (with npm, yarn, or pnpm)
  • Groq API Key (for LLM quote generation)
  • Supabase Project (for auth and database)

Installation

# Clone the repository
git clone https://github.com/vyixor/quoteshift.git
cd quoteshift

# Install dependencies
npm install
# or
yarn install
# or
pnpm install

# Create .env.local file
touch .env.local

Environment Setup

Add the following to .env.local:

NEXT_PUBLIC_GROQ_API_KEY=your_groq_api_key_here
NEXT_PUBLIC_SUPABASE_URL=your_supabase_url
NEXT_PUBLIC_SUPABASE_ANON_KEY=your_supabase_anon_key

Obtain API keys from:

Run Development Server

npm run dev
# or
yarn dev
# or
pnpm dev

Open http://localhost:3000 in your browser.


πŸ“ Project Structure

quoteshift/
β”œβ”€β”€ app/
β”‚   β”œβ”€β”€ (auth)/              # Authentication pages
β”‚   β”œβ”€β”€ api/                 # Backend API routes
β”‚   β”œβ”€β”€ pro/                 # Pro plan page
β”‚   β”œβ”€β”€ favicon.ico          # App icon
β”‚   β”œβ”€β”€ globals.css          # Global styles
β”‚   β”œβ”€β”€ layout.tsx           # Root layout
β”‚   └── page.tsx             # Main quote generator
β”œβ”€β”€ components/
β”‚   β”œβ”€β”€ auth/                # Auth components
β”‚   β”œβ”€β”€ Navbar.tsx           # Top navigation bar
β”‚   β”œβ”€β”€ InputPanel.tsx       # Quote input form
β”‚   β”œβ”€β”€ OutputPanel.tsx      # Quote display & export
β”‚   β”œβ”€β”€ SettingsModal.tsx    # User preferences
β”‚   └── BottomBar.tsx        # Footer with usage stats
β”œβ”€β”€ lib/
β”‚   β”œβ”€β”€ auth.ts              # Authentication utilities
β”‚   └── supabase/            # Supabase client config
β”œβ”€β”€ public/
β”‚   β”œβ”€β”€ logo.svg             # Brand logo
β”‚   └── *.svg                # Icons
β”œβ”€β”€ package.json             # Dependencies
β”œβ”€β”€ tsconfig.json            # TypeScript config
β”œβ”€β”€ next.config.ts           # Next.js config
β”œβ”€β”€ tailwind.config.ts       # Tailwind CSS setup
└── eslint.config.mjs        # Code linting rules

πŸ› οΈ How It Works

1. Quote Generation

  • User enters client request in natural language
  • Settings (base price, timeline, rules) are applied as context
  • Groq LLM (llama-3.3-70b-versatile) generates a professional quote
  • Format is randomly selected or user-configured

2. Smart Formatting

  • Built-in prompt templates ensure consistency
  • Respects user preferences for pricing, messaging, and layout
  • Four professional formats to match any business type

3. Export & Styling

  • Text β€” Copy to clipboard instantly
  • HTML β€” AI-styled with professional typography and layout
  • PDF β€” Print-ready document via html2pdf

4. Authentication & Limits

  • Supabase auth with email or third-party SSO
  • Free plan: 3 quotes/month
  • Pro plan: Unlimited quotes + premium features

πŸ“‹ Core Components

App (pages/page.tsx)

Main application entry point. Handles:

  • Quote generation via Groq API
  • User authentication & plan management
  • Settings persistence to localStorage
  • HTML/PDF export workflows

Components

Component Purpose
Navbar Top navigation, plan badge, settings toggle
InputPanel Text input form with generate button
OutputPanel Quote display with copy/export buttons
SettingsModal User preferences (price, timeline, footer, design)
BottomBar Usage counter (free: 3 quotes, pro: unlimited)

Libraries

  • Next.js β€” React framework with SSR, routing, API routes
  • Supabase β€” Auth, real-time database, user profiles
  • Tailwind CSS β€” Utility-first styling
  • Groq β€” LLM API for quote generation
  • html2pdf.js β€” Client-side PDF generation
  • Lucide React β€” Icon library

🎯 Quote Formats

Format-1: Clean Minimal

Best for freelancers, creatives, consultants

  • Simple, one-page layout
  • Essential details only
  • Great for portfolios

Format-2: Itemized Professional

Best for tradespeople, multi-service jobs

  • Line-item breakdown
  • Qty/price columns
  • Formal sections

Format-3: Formal Corporate

Best for agencies, B2B, high-value contracts

  • Numbered sections
  • Detailed T&C
  • VAT/registration fields

Format-4: Estimate Card

Best for quick jobs, on-site estimates

  • Card-based layout
  • Mobile-friendly
  • Minimal but professional

βš™οΈ Configuration

Settings Modal

Users can customize:

{
  "basePrice": "150",
  "defaultTimeline": "2-3 days",
  "pricingRules": "Add 20% for rush jobs",
  "footerMessage": "Thank you for choosing us!",
  "customLooks": "Use blue accents, modern font"
}

These are stored in browser localStorage and injected into quote prompts.


πŸ” Authentication

  • Provider: Supabase (Auth v2)
  • Methods: Email/password, OAuth (Google, GitHub, etc.)
  • Session: Stored securely with JWT tokens
  • Profile Data: User settings, plan tier, quote usage

User Profile Schema

profiles {
  id UUID PRIMARY KEY
  plan VARCHAR ('free' | 'pro')
  quotes_remaining INT
  number_of_quotes_used INT
  created_at TIMESTAMP
}

πŸ“¦ Dependencies

Core

  • next@16.1.7 β€” React framework
  • react@19.2.3, react-dom@19.2.3 β€” UI library
  • typescript@5 β€” Type safety

APIs & Database

  • @supabase/ssr@0.9.0 β€” Supabase integration
  • @whop/sdk@0.0.35 β€” Payments (optional)

UI & Styling

  • tailwindcss@4 β€” CSS framework
  • @tailwindcss/postcss@4 β€” PostCSS plugin
  • lucide-react@0.577.0 β€” Icons

Export

  • html2pdf.js@0.14.0 β€” PDF generation

Dev Tools

  • eslint@9 β€” Code linting
  • @types/react@19, @types/node@20 β€” TypeScript definitions
  • babel-plugin-react-compiler@1.0.0 β€” React optimization

🚒 Deployment

Deploy on Vercel (Recommended)

npm run build
  1. Push to GitHub
  2. Import in Vercel Dashboard
  3. Add environment variables
  4. Deploy with one click

Deploy on Other Platforms

  • Build: npm run build
  • Start: npm run start
  • Ensure Node 18+ is available

πŸ“Š API Integrations

Groq API

  • Endpoint: https://api.groq.com/openai/v1/chat/completions
  • Model: llama-3.3-70b-versatile
  • Purpose: Quote generation & HTML styling
  • Auth: Bearer token in headers

Supabase

  • Auth: Session management, user profiles
  • Database: Quote history, user settings
  • Endpoints: REST API with RLS policies

πŸŽ“ Usage Example

// Generate a quote
const inputText = "I need a website redesign for my e-commerce store";

// Settings are loaded from localStorage
const settings = {
  basePrice: "500",
  defaultTimeline: "2-3 weeks",
  pricingRules: "Rush jobs +30%, complex sites +50%",
  footerMessage: "Payment due 50% upfront, balance on launch"
};

// Quote is generated via Groq LLM
// User can export as text, HTML, or PDF

πŸ› Troubleshooting

Issue Solution
"No quotes generated" Check Groq API key & rate limits
Session expired Log out and back in to refresh token
Settings not saved Ensure localStorage is enabled in browser
PDF export fails Try HTML export first; check browser console
"Upgrade to Pro" alert Free tier exhausted; purchase Pro or wait for monthly reset

πŸ“ License

This project is open source. Feel free to use, modify, and distribute.


🀝 Contributing

Contributions are welcome! Please:

  1. Fork the repository
  2. Create a feature branch (git checkout -b feature/amazing-feature)
  3. Commit changes (git commit -m 'Add amazing feature')
  4. Push to branch (git push origin feature/amazing-feature)
  5. Open a Pull Request

πŸ’¬ Support

Have questions or found a bug? Please open an issue or reach out to the maintainer.


πŸ™ Acknowledgments

Built with:


Made with ❀️ by vyixor

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors