This repository is a coding challenge for engineering candidates. It is not intended for production use.
Pulse is a small internal customer-feedback inbox for support teams. Sign in, browse incoming feedback across email, chat, and app-store channels, open an item to read the full message and customer details, resolve or reopen it, and generate a quick AI summary of any message. The app also includes assignment routing, priority and due-date fields, customer profile history, internal notes, a small metrics panel, search, and CSV export.
- Node 20+
- npm
-
Install dependencies (installs both the server and web packages):
npm install
-
Create the environment files from the examples:
cp server/.env.example server/.env cp web/.env.example web/.env
The defaults run the app fully offline — the Summarize feature uses a built-in canned summarizer (
FAKE_LLM=true), so no API key is required. -
Seed the database with sample users, customers, and feedback:
npm run seed
-
Start the API and the web app together:
npm run dev
- API: http://localhost:4000
- Web: http://localhost:5173
Open the web app in your browser and sign in.
- Email:
alice@pulse.test - Password:
password123
server/— Node + Express + TypeScript API backed by SQLite (better-sqlite3).web/— React + TypeScript single-page app built with Vite.
To use a real model for the Summarize feature, set the following in server/.env:
FAKE_LLM=false
OPENAI_API_KEY=sk-...