Repository files navigation # CredentialIQ — Positive Inner Self
A full-stack healthcare credentialing management system built with **Next.js**, **Supabase**, and deployed on **Vercel**.
---
## Features
- 👤 Provider management with full credential tracking
- 🏥 Payer enrollment pipeline with stage workflows
- 📎 Document & expiry tracking with automated alerts
- ⚡ Workflow tasks with priority & status management
- 📊 Reports & analytics dashboard
- 📋 Full audit trail
- 🔍 NPI Registry live lookup (NPPES API)
- 🔔 Real-time updates via Supabase Realtime
- 🔐 Email/password authentication
---
## Quick Start
### 1. Clone & Install
```bash
git clone https://github.com/yourname/credentialiq.git
cd credentialiq
npm install
```
### 2. Set Up Supabase
1. Create a project at [supabase.com](https://supabase.com )
2. Go to **SQL Editor** and run the entire contents of `supabase-schema.sql`
3. Go to **Project Settings → API** and copy:
- `Project URL`
- `anon/public` key
### 3. Configure Environment
```bash
cp .env.example .env.local
```
Edit `.env.local`:
```
NEXT_PUBLIC_SUPABASE_URL=https://your-project-id.supabase.co
NEXT_PUBLIC_SUPABASE_ANON_KEY=your-anon-key-here
```
### 4. Enable Realtime (Optional)
In Supabase Dashboard → **Database → Replication**, enable realtime for:
- `providers`, `payers`, `enrollments`, `documents`, `tasks`
### 5. Run Locally
```bash
npm run dev
```
Visit [http://localhost:3000](http://localhost:3000)
---
## Deploy to Vercel
### Option A: Vercel Dashboard (Recommended)
1. Push your code to GitHub
2. Go to [vercel.com](https://vercel.com ) → Import Project
3. Select your repo
4. Add Environment Variables:
- `NEXT_PUBLIC_SUPABASE_URL`
- `NEXT_PUBLIC_SUPABASE_ANON_KEY`
5. Click **Deploy**
### Option B: Vercel CLI
```bash
npm i -g vercel
vercel
# Follow prompts, then add env vars:
vercel env add NEXT_PUBLIC_SUPABASE_URL
vercel env add NEXT_PUBLIC_SUPABASE_ANON_KEY
vercel --prod
```
---
## Authentication
The app uses Supabase Auth (email/password).
**Create your first account:**
1. Visit `/login`
2. Click "Create account"
3. Enter your email and password
4. Check email for confirmation link
5. Sign in
**Password reset:**
- Visit `/login` → "Forgot password?"
- Enter email → check inbox → follow link to `/reset-password`
---
## Project Structure
```
credentialiq/
├── pages/
│ ├── index.js # Main app (all pages + components)
│ ├── login.js # Auth page
│ ├── reset-password.js # Password reset
│ └── _app.js
├── lib/
│ ├── supabase.js # Supabase client
│ ├── db.js # All database operations
│ └── mappers.js # camelCase ↔ snake_case field mapping
├── styles/
│ └── globals.css
├── supabase-schema.sql # Run this in Supabase SQL Editor
├── .env.local # Your secrets (not in git)
└── .env.example # Template
```
---
## Database Schema
| Table | Description |
|-------|-------------|
| `providers` | Provider profiles, credentials, expiry dates |
| `payers` | Insurance payer directory |
| `enrollments` | Provider-payer enrollment pipeline |
| `documents` | Credential documents with expiry tracking |
| `tasks` | Workflow tasks with priority/status |
| `audit_log` | Full activity audit trail |
| `settings` | Practice settings (single row) |
---
## Adding Multi-Tenancy (Multiple Practices)
When you're ready to support multiple practices, uncomment the RLS policies in `supabase-schema.sql` and add a `practice_id` column to each table. This is a natural next step when scaling beyond a single organization.
---
## Tech Stack
- **Frontend**: Next.js 14 (Pages Router), React 18
- **Database**: Supabase (PostgreSQL)
- **Auth**: Supabase Auth
- **Realtime**: Supabase Realtime (WebSockets)
- **Deployment**: Vercel
- **External APIs**: NPPES NPI Registry
"# credentialiq"
# credentialiq
About
Resources
Stars
Watchers
Forks
You can’t perform that action at this time.