Skip to content

Repository files navigation

Loopr Logo

Loopr

A focused CRM that thinks with you built for solo founders running high-touch outbound.

Live Demo License TypeScript React Vite Tailwind CSS Supabase


πŸš€ Overview

Loopr is a lightweight, AI-assisted CRM designed specifically for solo founders running high-touch outbound campaigns. Unlike bloated CRMs designed for enterprise sales teams, Loopr focuses on what matters: tracking leads, analyzing responses, and getting daily AI-powered briefings on what to do next.

Built with the philosophy of "calm productivity" β€” no notifications, no streaks, no spam features. Just you and your pipeline.


✨ Features

  • πŸ“Š Sheet & Kanban Views β€” Two views of one pipeline. Edit in place or drag to advance deals.
  • 🧠 AI Daily Briefing β€” Each morning, AI surfaces who to follow up with and why.
  • 🎯 Signal Score β€” Every lead gets a 0–100 score based on engagement signals.
  • πŸ’¬ Reply Analyzer β€” Paste any reply to get sentiment analysis and suggested next steps.
  • πŸ“ˆ Analytics β€” KPI cards, pipeline-by-stage chart, conversion funnel, at-risk alerts, and monthly revenue breakdown.
  • πŸ”’ Your Data, Yours Alone β€” Single-tenant architecture. Export to CSV anytime.
  • πŸ“± Fully Responsive β€” Optimized landing page and every dashboard page for mobile, tablet, and desktop.
  • 🎨 Calm by Design β€” No notifications, no streaks, no dark patterns.

πŸ›  Tech Stack

Category Technology
Frontend React 19 + TypeScript + Vite
Styling Tailwind CSS v4 + custom neobrutal design system
Routing TanStack Router
State TanStack React Query
Backend Supabase (Auth + Database + Edge Functions + RLS)
AI OpenAI / Compatible API (configurable)
UI Components Radix UI primitives + custom components
Charts Custom SVG (no chart library)

πŸš€ Quick Start

Prerequisites

  • Node.js 18+
  • pnpm (or npm/yarn)
  • Supabase account
  • OpenAI API key (for AI features)

Installation

# 1. Clone the repo
git clone https://github.com/MuhammadTanveerAbbas/loopr.git
cd loopr

# 2. Install dependencies
pnpm install

# 3. Set up environment variables
cp .env.example .env.local
# Fill in your values (see Environment Variables section below)

# 4. Run the development server
pnpm dev

# 5. Open in browser
http://localhost:5173

πŸ” Environment Variables

Create a .env.local file in the root directory:

# Supabase
SUPABASE_URL=your_supabase_project_url
SUPABASE_PUBLISHABLE_KEY=your_supabase_anon_key
VITE_SUPABASE_URL=your_supabase_project_url
VITE_SUPABASE_PUBLISHABLE_KEY=your_supabase_anon_key

# AI Provider (for AI features)
AI_API_KEY=your_openai_api_key
AI_ENDPOINT=https://api.openai.com/v1/chat/completions

Get your keys:


πŸ›‘ Reliability & Self-Healing

The ai-task edge function self-heals around Groq outages without any app changes:

  • Model discovery β€” available Groq models are fetched from the /models endpoint and cached server-side (15 min TTL), so the list is never fetched on every request.
  • Automatic model fallback β€” if the configured AI_MODEL is removed or unsupported, the function refreshes the model list and retries once with a compatible model.
  • Rate limits β€” HTTP 429 responses respect Retry-After and otherwise use bounded exponential backoff with jitter (max 3 attempts).
  • Transient failures β€” network errors, timeouts, and 5xx responses are retried with backoff, then fail gracefully with a friendly in-app message.
  • No secret leakage β€” API keys stay server-side and are never logged.

/health reports Supabase connectivity with a read-only check and fails clearly (with a 10s timeout) instead of hanging when Supabase is unavailable.


πŸ“ Project Structure

loopr/
β”œβ”€β”€ public/                  # Static assets
β”œβ”€β”€ src/
β”‚   β”œβ”€β”€ components/          # Reusable UI components
β”‚   β”‚   β”œβ”€β”€ layout/          # Layout components (Sidebar, Navbar, CommandPalette)
β”‚   β”‚   β”œβ”€β”€ leads/          # Lead-specific components (LeadDrawer)
β”‚   β”‚   └── ui/             # Neobrutal UI primitives (NeuCard, NeuButton, page helpers)
β”‚   β”œβ”€β”€ hooks/              # Custom React hooks
β”‚   β”œβ”€β”€ integrations/       # Supabase client & config
β”‚   β”œβ”€β”€ lib/                # Utility functions & API clients
β”‚   β”‚   β”œβ”€β”€ auth.tsx        # Auth context & hooks
β”‚   β”‚   β”œβ”€β”€ leads-api.ts    # Lead management hooks & stats
β”‚   β”‚   β”œβ”€β”€ schemas.ts      # Zod validation + input sanitization
β”‚   β”‚   β”œβ”€β”€ signal-score.ts # Lead scoring helpers
β”‚   β”‚   └── error-service.ts# Error mapping & sanitization
β”‚   β”œβ”€β”€ routes/             # TanStack Router routes
β”‚   β”‚   β”œβ”€β”€ index.tsx       # Landing page
β”‚   β”‚   β”œβ”€β”€ auth.tsx       # Authentication page
β”‚   β”‚   β”œβ”€β”€ _app.tsx       # Protected app layout
β”‚   β”‚   └── _app.*.tsx     # Dashboard, Leads, Pipeline, Nurture, Closed, AI, etc.
β”‚   β”œβ”€β”€ router.tsx         # Router configuration
β”‚   β”œβ”€β”€ routeTree.gen.ts   # Auto-generated route tree
β”‚   └── styles.css         # Tailwind + neobrutal design system
β”œβ”€β”€ supabase/              # Supabase config
β”‚   β”œβ”€β”€ schema.sql         # Tables, RLS policies & database functions
β”‚   └── functions/         # Edge functions (AI-Tasks, delete-account)
β”œβ”€β”€ package.json
β”œβ”€β”€ vite.config.ts
β”œβ”€β”€ tsconfig.json
└── README.md

πŸ“¦ Available Scripts

Command Description
pnpm dev Start development server
pnpm build Build for production
pnpm preview Preview production build
pnpm lint Run ESLint
pnpm typecheck Run TypeScript type checking
pnpm test Run Vitest test suite
pnpm format Format code with Prettier

πŸ§ͺ Testing

The project ships with a Vitest test suite covering schema validation, sanitization, error mapping, and edge functions.

# Run tests once
pnpm test

# Watch mode
pnpm test:watch

🌐 Deployment

This project is deployed on Vercel using TanStack Start + Nitro.

Deploy Your Own

  1. Push your code to GitHub
  2. Import your repository at vercel.com/new
  3. Vercel auto-detects TanStack Start β€” no extra config needed
  4. Add environment variables in the Vercel dashboard
  5. Deploy

πŸ—Ί Roadmap

  • Sheet & Kanban pipeline views
  • AI-powered daily briefings
  • Signal Score for leads
  • Reply analyzer
  • CSV import & export
  • Analytics: KPIs, funnel, at-risk alerts, monthly revenue
  • Fully responsive landing + dashboard
  • Team/collaboration features
  • Email integration

🀝 Contributing

Contributions are welcome! Feel free to:

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

πŸ“„ License

Distributed under the MIT License. See LICENSE for more information.


πŸ‘¨β€πŸ’» Built by The MVP Guy

Muhammad Tanveer Abbas
SaaS Developer | Building production-ready MVPs in 14–21 days

Portfolio Twitter LinkedIn GitHub

If this project helped you, please consider giving it a ⭐

About

A focused CRM that thinks with you built for solo founders running high-touch outbound.

Topics

Resources

Stars

11 stars

Watchers

0 watching

Forks

Contributors

Languages