{"id":50453988,"url":"https://github.com/mizcausevic-dev/kinetic-api-gateway","last_synced_at":"2026-06-01T01:05:31.641Z","repository":{"id":356138636,"uuid":"1231208634","full_name":"mizcausevic-dev/kinetic-api-gateway","owner":"mizcausevic-dev","description":"Node.js + Express REST API for B2B SaaS lead scoring, campaign visibility, and revenue workflow automation","archived":false,"fork":false,"pushed_at":"2026-05-28T00:57:46.000Z","size":678,"stargazers_count":0,"open_issues_count":4,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-05-28T02:23:28.277Z","etag":null,"topics":["api-gateway","backend","express","lead-scoring","nodejs","openapi","rest-api","revenue-operations","saas","sales-operations","swagger","typescript"],"latest_commit_sha":null,"homepage":"https://mizcausevic.com/skills/","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/mizcausevic-dev.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":"SECURITY.md","support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-05-06T18:31:53.000Z","updated_at":"2026-05-28T00:57:38.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/mizcausevic-dev/kinetic-api-gateway","commit_stats":null,"previous_names":["fknmiz/kinetic-api-gateway"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/mizcausevic-dev/kinetic-api-gateway","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mizcausevic-dev%2Fkinetic-api-gateway","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mizcausevic-dev%2Fkinetic-api-gateway/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mizcausevic-dev%2Fkinetic-api-gateway/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mizcausevic-dev%2Fkinetic-api-gateway/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/mizcausevic-dev","download_url":"https://codeload.github.com/mizcausevic-dev/kinetic-api-gateway/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mizcausevic-dev%2Fkinetic-api-gateway/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":33755379,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-05-31T02:00:06.040Z","response_time":95,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["api-gateway","backend","express","lead-scoring","nodejs","openapi","rest-api","revenue-operations","saas","sales-operations","swagger","typescript"],"created_at":"2026-06-01T01:05:31.420Z","updated_at":"2026-06-01T01:05:31.635Z","avatar_url":"https://github.com/mizcausevic-dev.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Kinetic API Gateway\n\nNode.js and Express backend for **lead scoring**, campaign visibility, and revenue workflow automation in B2B SaaS environments.\n\n\u003e **What this repo proves**\n\u003e\n\u003e Revenue operations gets much more reliable when workflow logic is centralized in a clean API contract instead of scattered across brittle automations.\r\n\r\n## Project Overview\n\n| Attribute | Detail |\n| --- | --- |\n| **Runtime** | Node.js 20+ |\n| **Framework** | Express |\n| **API Style** | REST + OpenAPI / Swagger UI |\n| **Domain** | B2B SaaS Revenue Operations |\n| **Sample Data** | 3 accounts Â· 5 leads Â· 4 campaigns |\n| **Scoring Inputs** | Company size Â· Revenue Â· Engagement Â· Intent signals |\n| **Operational Focus** | Lead routing Â· Funnel prioritization Â· Campaign reporting |\n\n---\n\n## Service Architecture\n\n```text\naccounts â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”\n                                        â”‚\n                                        â”‚ account context\n                                        â–¼\nleads â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€ campaigns â”€â”€â”€â”€â”€\u003e score engine\n  â”‚                     â”‚                  â”‚\n  â”‚ contact + intent    â”‚ source data      â”‚ scoring model\n  â–¼                     â–¼                  â–¼\nsales follow-up     pipeline context   next-best action\n```\n\n### Core Components\n\n| Component | Purpose | Key Files |\n| --- | --- | --- |\n| `app` | Middleware, routing, docs, 404 handling, centralized errors | `src/app.js`, `src/server.js` |\n| `routes` | Endpoint-level request handling | `src/routes/*.js` |\n| `data` | Realistic B2B SaaS sample records | `src/data.js` |\n| `scoring` | Transparent lead scoring and recommendation logic | `src/utils/scoring.js` |\n| `docs` | OpenAPI contract and architecture notes | `docs/openapi.yaml`, `docs/architecture.md` |\n| `tests` | API validation for core recruiter-visible paths | `tests/api.test.js` |\n\n---\n\n## API Surface\n\n| Method | Endpoint | Purpose |\n| --- | --- | --- |\n| `GET` | `/health` | Returns API status, uptime, timestamp, and service name |\n| `GET` | `/api/leads` | Returns B2B SaaS lead records |\n| `GET` | `/api/leads/:id` | Returns one lead or a clean 404 response |\n| `GET` | `/api/accounts` | Returns company / account records |\n| `GET` | `/api/campaigns` | Returns revenue campaign performance records |\n| `POST` | `/api/score` | Scores a lead based on fit and buying intent |\n| `GET` | `/docs` | Serves Swagger UI from the OpenAPI spec |\n\n---\n\n## Business Problem\n\nRevenue teams often have engagement data in marketing systems, firmographic context in CRM records, and campaign performance in disconnected reporting layers. That fragmentation slows sales response, reduces prioritization quality, and makes it harder for platform or digital leaders to turn web activity into actionable revenue workflows.\n\n## Solution\n\nKinetic API Gateway models a compact internal service that:\n\n- exposes leads, accounts, and campaign data through a clean REST surface\n- scores inbound opportunities with transparent, explainable rules\n- translates buying signals into next-step sales recommendations\n- documents the contract with OpenAPI for easier onboarding and integration\n- includes the middleware, tests, and documentation expected in a production-minded backend project\n\n---\n\n## Scoring Model\n\n### Inputs\n\n| Input | Role in Score |\n| --- | --- |\n| `companySize` | Measures target-account fit for mid-market and enterprise segments |\n| `annualRevenue` | Approximates budget maturity and commercial capacity |\n| `engagementScore` | Reflects behavioral intensity across the buying journey |\n| `intentSignals` | Captures explicit commercial actions such as pricing or demo interest |\n\n### Intent Signal Weights\n\n```text\nhigh:   pricing-page, demo-request\nmedium: webinar-attended, case-study-download\nlow:    newsletter-click, homepage-return-visit, ad-click\n```\n\n### Tier Mapping\n\n```text\n0-39   = cold\n40-69  = warm\n70-84  = qualified\n85-100 = high-intent\n```\n\n---\n\n## Example Score Request\n\n```json\n{\n  \"companySize\": 850,\n  \"annualRevenue\": 128000000,\n  \"engagementScore\": 91,\n  \"intentSignals\": [\n    \"pricing-page\",\n    \"webinar-attended\",\n    \"case-study-download\"\n  ]\n}\n```\n\n## Example Score Response\n\n```json\n{\n  \"score\": 94,\n  \"tier\": \"high-intent\",\n  \"explanation\": [\n    \"High engagement score indicates strong buying interest.\",\n    \"Pricing page visit is a strong commercial intent signal.\",\n    \"Company size fits enterprise target profile.\"\n  ],\n  \"recommendedNextAction\": \"Route to sales within 24 hours with enterprise web platform modernization message.\"\n}\n```\n\n---\n\n## Getting Started\n\n### Prerequisites\n\n- Node.js 20+\n- npm 10+\n\n### Setup\n\n```bash\n# 1. Clone the repo\ngit clone https://github.com/mizcausevic-dev/kinetic-api-gateway.git\ncd kinetic-api-gateway\n\n# 2. Install dependencies\nnpm install\n\n# 3. Create local environment file\ncp .env.example .env\n\n# 4. Start the API\nnpm start\n```\n\nSwagger UI is available at `http://localhost:3000/docs`.\n\n### Run Tests\n\n```bash\nnpm test\n```\n\n---\n\n## Request Flow\n\n```text\nclient request\n   â†“\nhelmet / cors / morgan / JSON parsing\n   â†“\nroute handler\n   â†“\nsample data lookup or scoring utility\n   â†“\nJSON response\n   â†“\ncentralized error handler for 4xx / 5xx cases\n```\n\nSee [docs/architecture.md](./docs/architecture.md) for the deeper service walkthrough.\n\n---\n\n## Screenshots\n\nThis repo follows the screenshot standard documented in [docs/portfolio-screenshot-standard.md](./docs/portfolio-screenshot-standard.md).\n\n### Swagger UI\n\n![Swagger UI overview](./screenshots/01-hero.png)\n\n### Lead Scoring Workflow\n\n![Lead scoring request and response](./screenshots/02-feature.png)\n\n### Validation Proof\n\n![Automated API validation proof](./screenshots/03-proof.png)\n\nAssets live in [`screenshots/`](./screenshots/). Recommended captures for this repo:\n\n- Swagger UI for `/docs`\n- lead scoring request/response example\n- test run or architecture view\n\n---\n\n## Key Design Decisions\n\n| Decision | Rationale |\n| --- | --- |\n| **In-memory sample data** | Keeps the portfolio project easy to run while still demonstrating realistic business modeling |\n| **Explainable scoring rules** | Makes the lead qualification logic transparent to sales, RevOps, and hiring reviewers |\n| **Centralized error handling** | Produces predictable JSON failures instead of route-specific error shapes |\n| **OpenAPI-backed docs** | Shows contract discipline and makes the API easy to inspect in Swagger UI |\n| **Environment-driven config** | Mirrors production deployment habits without overengineering configuration |\n| **Focused endpoint scope** | Emphasizes business usefulness over tutorial-style generic CRUD |\n\n---\n\n## What This Demonstrates\n\n| Capability | Evidence in Project |\n| --- | --- |\n| **Backend engineering** | Express app structure, middleware, routing, and error handling |\n| **API design** | Clean REST endpoints with documented request/response behavior |\n| **Business systems thinking** | Lead scoring tied to campaigns, account fit, and next-step revenue action |\n| **Platform maturity** | OpenAPI docs, tests, environment config, and security middleware |\n| **Revenue orientation** | SaaS sample data and scoring logic framed around pipeline prioritization |\n\n---\n\n## Security and Delivery Posture\n\n- `helmet`, `cors`, and centralized error handling are enabled by default\n- Swagger docs are generated from a versioned OpenAPI file\n- Automated tests cover key endpoints and scoring behavior\n- GitHub Actions CI, CodeQL, Dependabot, and a repository security policy are included in the repo\n\n---\n\n## Future Enhancements\n\n- persist leads, accounts, and campaigns in PostgreSQL\n- add request validation and rate limiting\n- add authentication, authorization, and audit logging\n- publish scoring events to CRM or marketing automation workflows\n- introduce analytics ingestion webhooks and structured observability\n\n---\n\n## Tech Stack\n\n![Node.js](https://img.shields.io/badge/Node.js-20+-339933?logo=node.js\u0026logoColor=white)\n![Express](https://img.shields.io/badge/Express-REST_API-000000?logo=express\u0026logoColor=white)\n![OpenAPI](https://img.shields.io/badge/OpenAPI-Swagger_UI-85EA2D?logo=swagger\u0026logoColor=black)\n![License](https://img.shields.io/badge/License-MIT-green)\n\n### Portfolio Links\n\n- [LinkedIn](https://www.linkedin.com/in/mirzacausevic)\n- [Skills Page](https://mizcausevic.com/skills/)\n- [Medium](https://medium.com/@mizcausevic)\n- [GitHub](https://github.com/mizcausevic-dev)\n\n---\n\n*Part of [mizcausevic-dev's GitHub portfolio](https://github.com/mizcausevic-dev) â€” demonstrating backend architecture, SaaS revenue workflow thinking, and production-aware API delivery.*\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmizcausevic-dev%2Fkinetic-api-gateway","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmizcausevic-dev%2Fkinetic-api-gateway","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmizcausevic-dev%2Fkinetic-api-gateway/lists"}