Skip to content

sx4im/Metaluce

Repository files navigation

Metaluce

Metaluce

Stop taking notes. Start taking execution.


GitHub stars GitHub forks GitHub issues GitHub pull requests



If Metaluce saves you time, please drop a ⭐ on the repo - it genuinely helps others discover the project.


What it does

Metaluce reads any meeting transcript (Zoom, Meet, manual notes, whatever) and extracts:

  • Executive summary focused on decisions, changes, and risks - not narration.
  • Action items with a named owner, verbatim deadline, priority, and conditional commitments ("Tuesday if Jordan is freed up") surfaced separately.
  • Risk register that flags implied risks too - single points of failure, missed dependencies, revenue at stake, regulatory exposure.
  • Deferred topics ("revisit Monday", "talk offline") kept distinct from real action items so nothing gets fabricated.
  • Branded PDF export with a structured action plan table, page numbers, and the full transcript on its own page.

The result feels less like a transcript summary and more like a chief of staff handed you a one-pager.

Highlights

  • Premium UI - hand-tuned palette, glassmorphism, Framer Motion choreography, video hero with custom buffer-aware loader, full mobile parity.
  • Smart prompt engineering - the model is instructed to extract verbatim deadlines, flag conditional commitments, reassign ownership when someone leaves, and never invent owners for soft commitments.
  • Polished PDF pipeline - ASCII-sanitized output, color-coded priority cells, orphan prevention, page numbers, brand header on every page.
  • Type-safe end to end - shared Zod schemas between client and server via Drizzle's $inferSelect.
  • Production-hardened auth - Passport.js local + Google OAuth, session fixation mitigations, CSRF-safe state.

Tech stack

Layer Stack
Frontend React 18, TypeScript 5, Vite 7, Tailwind CSS 3, Framer Motion, shadcn/ui, Wouter
Backend Node.js, Express 4, Passport.js (Google OAuth + Local), express-session
Database PostgreSQL via Supabase, Drizzle ORM, drizzle-zod
AI NVIDIA NIM (nvidia/nemotron-3-super-120b-a12b) via the OpenAI-compatible SDK
Build & Deploy Vite, esbuild, Vercel (frontend), Render (full-stack option in render.yaml)
PDF & Export jsPDF + jspdf-autotable, html2canvas

Quick start

Prerequisites

Setup

# 1. Clone
git clone https://github.com/sx4im/Metaluce.git
cd Metaluce

# 2. Install
npm install

# 3. Configure - copy the example and fill in your keys
cp .env.example .env

# 4. Migrate the DB
npm run db:generate
npm run db:migrate

# 5. Run
npm run dev

The app boots on http://localhost:5000 with Vite middleware proxying the client.

Useful scripts

Command What it does
npm run dev Start the dev server (Express + Vite middleware)
npm run check Strict TypeScript check, no emit
npm run build Build client (Vite) + server (esbuild) into dist/
npm run start Run the production bundle
npm run db:generate Generate a new Drizzle migration from schema changes
npm run db:migrate Apply pending migrations

Configuration

All secrets are loaded from .env. The full annotated template lives in .env.example; the essentials:

DATABASE_URL=postgresql://...           # Supabase or any Postgres
NVIDIA_API_KEY=nvapi-...                # build.nvidia.com
SESSION_SECRET=...                      # 32+ char random string
GOOGLE_CLIENT_ID=...                    # optional - enables Google sign-in
GOOGLE_CLIENT_SECRET=...
FRONTEND_URL=http://localhost:5173
NODE_ENV=development

Generate a session secret with:

node -e "console.log(require('crypto').randomBytes(32).toString('hex'))"

Deploy

The repo ships with a render.yaml blueprint for one-click Render deploys, and a vercel.json for the static frontend.

Render (full-stack):

Deploy to Render

Architecture

client/          Vite-powered React SPA
  ├─ pages/       Landing, AppPage, AnalysisResult, History, Auth
  ├─ components/  layout + shadcn/ui primitives + brand widgets
  └─ hooks/       useAuth, useAnalysis, useVideoLoader, ...

server/          Express API
  ├─ routes.ts    REST endpoints (/api/analyze, /api/analyses, ...)
  ├─ auth.ts      Passport strategies + session wiring
  ├─ openai.ts    NVIDIA NIM client + prompt engineering
  └─ db.ts        Drizzle client

shared/          Zod + Drizzle schemas shared by client & server

Roadmap

  • Real-time meeting capture (Whisper streaming)
  • Slack / Linear / Jira webhooks to push action items
  • Team workspaces with role-based sharing
  • Multi-language transcript support
  • Self-host docker-compose recipe

Got an idea that isn't here? Open an issue.

Contributing

PRs are very welcome - especially around new export formats, prompt improvements, and accessibility polish.

git checkout -b feat/your-idea
# hack hack hack
npm run check && npm run build
git commit -m "feat: your idea"
git push origin feat/your-idea

Then open a PR against main. Please run the type check and build locally before pushing.

Show your support

If Metaluce made your meetings less terrible, the most helpful things you can do are:

  1. ⭐ Star this repo - it's the single biggest signal on GitHub.
  2. Share it on Twitter / LinkedIn / your team Slack.
  3. Open an issue with feedback or a feature you want.
Star history of sx4im/Metaluce

License

Distributed under the MIT License. See LICENSE for details.


About

A smart meeting analyzer that converts transcripts into concise summaries and highlights the most valuable points.

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages