Skip to content

MediaPushai/mike-dashboard

Repository files navigation

Mike Thompson Sales Report Dashboard

Full-stack Next.js app for uploading CSV sales data, viewing margin analytics, and emailing on-demand reports.

Setup

1. Database (Neon PostgreSQL)

# Create a Neon project at https://console.neon.tech
# Copy your DATABASE_URL
# Add to .env.local:
DATABASE_URL="postgresql://user:pass@ep-xxxx.neon.tech/db?sslmode=require"

2. Run Migrations

npm install
npm run db:push

3. Seed Initial User

MIKE_PASSWORD="your-secure-password" npx tsx scripts/seed.ts

Default: mike.thompson@company.com / password123

4. Environment Variables

DATABASE_URL=your_neon_url
NEXTAUTH_SECRET=your-32-char-random-secret
NEXTAUTH_URL=http://localhost:3000 (or production URL)
RESEND_API_KEY=re_xxxxx
RESEND_FROM_EMAIL=reports@yourdomain.com

5. Run Locally

npm run dev
# Open http://localhost:3000/login

6. Deploy to Vercel

vercel

Features

  • CSV Upload — Fuzzy column detection, validation, scrubbing report
  • Margin Analytics — Gross margin %, net margin %, top tech, top margin product
  • Dashboard — 4 KPI cards, upload history, settings
  • Email Reports — On-demand reports via Resend to configurable email
  • Authentication — NextAuth.js credentials (single user)

Database Schema

  • users — email, password_hash
  • csv_uploads — file metadata, row counts
  • sales_records — products, revenue, costs, margins (cents for money, numeric(8,4) for %)
  • metrics — aggregated KPIs per upload
  • settings — user preferences (report email, etc.)

API Endpoints

  • POST /api/auth/signin — Login
  • POST /api/upload — Upload CSV
  • GET /api/metrics — Get latest KPIs
  • GET /api/history — Get upload history
  • POST /api/email — Send report email
  • GET /api/settings — Get user settings
  • POST /api/settings — Update email/password

CSV Format

Expects columns (fuzzy matched):

  • Product / Name
  • Technology / Tech
  • Revenue / Sales / Amount
  • COGS / Cost of Goods Sold
  • Operating Expense (optional)
  • Quantity / Units (optional)

All currency values can be formatted ($1,234.56, 1234.56, etc.)

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors