A clean, professional internal lead collection web application built with Next.js and Tailwind CSS.
- Dashboard: Clean interface with leads table and add lead functionality
- Modal Form: Centered modal for adding new leads with validation
- Data Persistence: Leads are stored in a local JSON file
- Responsive Design: Works seamlessly on mobile and desktop devices
- Professional UI: Corporate, minimal design with neutral color palette
- Next.js 14 (App Router)
- React 18
- TypeScript
- Tailwind CSS
- Inter Font
- Node.js 18+ installed
- npm or yarn package manager
- Install dependencies:
npm install- Run the development server:
npm run dev- Open http://localhost:3000 in your browser.
The application will automatically create a data directory and leads.json file when you add your first lead.
lead-collection-system/
├── app/
│ ├── api/
│ │ └── leads/
│ │ └── route.ts # API routes for leads
│ ├── globals.css # Global styles
│ ├── layout.tsx # Root layout
│ └── page.tsx # Dashboard page
├── components/
│ ├── AddLeadModal.tsx # Modal form component
│ └── LeadsTable.tsx # Leads table component
├── data/
│ └── leads.json # Leads data storage (auto-created)
├── package.json
├── tailwind.config.ts
├── tsconfig.json
└── README.md
- Install Vercel CLI globally (if not already installed):
npm i -g vercel- Login to Vercel:
vercel login- Deploy from the project root with explicit project name:
vercel --name lead-collection-systemOr for production deployment:
vercel --prod --name lead-collection-systemImportant: The project name must be lowercase and can only contain letters, digits, dots, underscores, and hyphens. The folder name "Lead Collection System" contains spaces, so you must specify the project name explicitly using --name lead-collection-system.
- If you're deploying for the first time, follow the prompts:
- Set up and deploy? Yes
- Which scope? Select your account
- Link to existing project? No (for first deployment)
- Project name? lead-collection-system (or press Enter if you used --name flag)
- Directory? ./ (current directory)
- Override settings? No
The project includes a vercel.json file with the correct configuration. The project name in package.json is set to lead-collection-system which meets Vercel's requirements.
- Supabase Integration: The project uses Supabase for data storage. Your Supabase credentials are configured in
lib/supabase.ts. - The project is fully configured for Vercel deployment with Next.js App Router.
- All dependencies are properly configured in
package.json.
The Supabase credentials are currently hardcoded in lib/supabase.ts. For production, consider moving these to environment variables:
- In Vercel Dashboard, go to your project → Settings → Environment Variables
- Add:
NEXT_PUBLIC_SUPABASE_URLNEXT_PUBLIC_SUPABASE_ANON_KEY
- Update
lib/supabase.tsto useprocess.env.NEXT_PUBLIC_SUPABASE_URLandprocess.env.NEXT_PUBLIC_SUPABASE_ANON_KEY
npm run buildnpm startnpm run lintLeads are currently stored in data/leads.json. This file is:
- Automatically created when the first lead is added
- Included in
.gitignoreto prevent committing sensitive data - Suitable for development and small-scale internal use
For production deployments, consider using a proper database solution.
Internal use only.