ProjectPulse is a GitHub repository and engineering analytics dashboard for tracked public repositories. It combines repository health, activity history, contributor signals, and PostgreSQL-backed snapshots into a durable developer overview.
- GitHub OAuth sign-in
- public repository tracking
- live GitHub synchronization
- PostgreSQL snapshot persistence
- historical repository analytics
- SVG metric trends
- snapshot-derived activity feed
- Redis / BullMQ background synchronization
- 15-minute scheduler refreshes
- retry/backoff and queue deduplication
- separate API and worker runtime architecture
Frontend:
- Next.js
- TypeScript
- React
- Tailwind CSS
Backend:
- NestJS
- TypeScript
- Prisma
- PostgreSQL
Background processing:
- Redis
- BullMQ
External:
- GitHub REST API
- GitHub OAuth
Browser
|
v
Next.js
|
v
NestJS API --------> PostgreSQL
|
v
Redis / BullMQ
|
v
Worker
|
v
GitHub API
The worker writes fresh snapshot data, while normal dashboard and history reads are served primarily from PostgreSQL-backed snapshots.
cd web
npm install
npm run devThe frontend runs on http://localhost:3000 by default.
cd api
npm install
npm run start:devThe API runs on http://localhost:3001 by default.
cd api
npm install
npm run start:worker:dev- Frontend: https://pulse.pat1.online
- API health: https://api.pulse.pat1.online/health
These are intended deployment URLs until the production environment is actually verified.
NEXT_PUBLIC_* values are embedded during the Next.js build, so the production value must be present while the web app is built in Coolify. It is not enough to set the value only at runtime after the build has already completed.
- ProjectPulse gets its own PostgreSQL database.
- ProjectPulse gets its own Redis instance.
- Do not reuse Directus PostgreSQL.
- PostgreSQL and Redis stay private.
- API + worker share both private services.
- Browser/web never receives
DATABASE_URLorREDIS_URL.
projectpulse/
├── api/ # NestJS API + worker runtime
├── web/ # Next.js frontend
├── README.md
└── .gitignore