Skip to content

Commit 17fa0b9

Browse files
Add Content Workflow Intelligence Platform backend portfolio project
0 parents  commit 17fa0b9

32 files changed

Lines changed: 3299 additions & 0 deletions

.env.example

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
PORT=3000
2+
SERVICE_NAME=Content Workflow Intelligence Platform
3+
DEFAULT_EDITORIAL_SLA_DAYS=5

.github/dependabot.yml

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
version: 2
2+
updates:
3+
- package-ecosystem: "npm"
4+
directory: "/"
5+
schedule:
6+
interval: "weekly"
7+
- package-ecosystem: "github-actions"
8+
directory: "/"
9+
schedule:
10+
interval: "weekly"

.github/pull_request_template.md

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
## Summary
2+
3+
-
4+
5+
## Validation
6+
7+
- [ ] `npm test`
8+
- [ ] `npm run build`
9+
- [ ] no secrets or environment files committed
10+
- [ ] documentation and screenshots updated when applicable

.github/workflows/ci.yml

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
name: CI
2+
3+
on:
4+
push:
5+
branches:
6+
- main
7+
- project/**
8+
pull_request:
9+
10+
jobs:
11+
test:
12+
runs-on: ubuntu-latest
13+
strategy:
14+
matrix:
15+
node-version: [20, 24]
16+
steps:
17+
- uses: actions/checkout@v4
18+
- uses: actions/setup-node@v4
19+
with:
20+
node-version: ${{ matrix.node-version }}
21+
cache: npm
22+
- run: npm ci
23+
- run: npm test
24+
- run: npm run build

.github/workflows/codeql.yml

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
name: CodeQL
2+
3+
on:
4+
push:
5+
branches:
6+
- main
7+
- project/**
8+
pull_request:
9+
10+
jobs:
11+
analyze:
12+
runs-on: ubuntu-latest
13+
permissions:
14+
actions: read
15+
contents: read
16+
security-events: write
17+
strategy:
18+
fail-fast: false
19+
matrix:
20+
language: [javascript]
21+
steps:
22+
- uses: actions/checkout@v4
23+
- uses: github/codeql-action/init@v3
24+
with:
25+
languages: ${{ matrix.language }}
26+
- uses: actions/setup-node@v4
27+
with:
28+
node-version: 24
29+
cache: npm
30+
- run: npm ci
31+
- run: npm run build
32+
- uses: github/codeql-action/analyze@v3

.gitignore

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
node_modules/
2+
dist/
3+
.env
4+
.DS_Store
5+
coverage/
6+
*.log
7+
content-workflow-dev.pid
8+
screenshots/*.html

README.md

Lines changed: 223 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,223 @@
1+
# Content Workflow Intelligence Platform
2+
3+
> **TypeScript portfolio project** demonstrating publishing-readiness scoring, editorial bottleneck visibility, content operations governance, and workflow-aware backend decisioning for enterprise teams.
4+
5+
**Recruiter takeaway:** *"This person understands content operations, SEO governance, and publishing systems as coordinated enterprise workflows, not isolated tasks."*
6+
7+
---
8+
9+
## Project Overview
10+
11+
| Attribute | Detail |
12+
|---|---|
13+
| **Runtime** | Node.js + TypeScript |
14+
| **Framework** | Express 5 |
15+
| **Domain** | Content operations, publishing governance, editorial workflow intelligence |
16+
| **Signal Areas** | Workflow age · Approval friction · Governance blockers · Search opportunity · Business priority |
17+
| **Operational Outputs** | Readiness posture · Bottleneck analysis · Prioritization routing |
18+
| **Docs** | Swagger UI at `/docs` |
19+
20+
---
21+
22+
## Executive Summary
23+
24+
Content Workflow Intelligence Platform models the kind of internal service enterprise editorial, SEO, legal, compliance, and web platform teams use to move high-value content through publishing workflows with less friction and better visibility. Instead of acting like a CMS clone, the API focuses on operational readiness: where content is stuck, which teams are causing queue drag, how business priority and search upside should influence routing, and what next action an operator should take.
25+
26+
The result is a recruiter-facing backend project that feels like a real internal publishing operations system rather than a generic content app.
27+
28+
---
29+
30+
## Business Problem
31+
32+
Enterprise publishing breaks down when content, SEO, legal, compliance, and platform teams operate in separate queues without a shared operational view. High-value assets can sit in review too long, approvals get lost, schema and governance issues stay unresolved, and priority content misses the window where it would have the most business impact.
33+
34+
---
35+
36+
## Solution
37+
38+
This API turns publishing workflow state into decision support. It models content items, authors, queues, approvals, blockers, and performance signals, then returns:
39+
40+
- publishing readiness scores
41+
- workflow bottleneck analysis
42+
- prioritization routing
43+
- dashboard-level operational summaries
44+
45+
---
46+
47+
## Architecture
48+
49+
```text
50+
Content item or workflow scenario
51+
|
52+
v
53+
POST /api/analyze/*
54+
|
55+
+--> Request validation
56+
+--> Stage age and queue review
57+
+--> Approval and blocker analysis
58+
+--> Search opportunity and business priority weighting
59+
|
60+
v
61+
Workflow posture
62+
|
63+
+--> ready
64+
+--> needs-review
65+
+--> blocked
66+
```
67+
68+
### Workflow Explanation
69+
70+
1. Teams submit a workflow scenario or query current content inventory and queues.
71+
2. The service validates request shape with Zod.
72+
3. Readiness logic reviews stage age, pending approvals, blockers, content depth, search opportunity, and business priority.
73+
4. The service returns a score, issues, passed checks, and a recommended next action.
74+
5. Operators use dashboard, blocker, and queue views to unblock publishing and protect high-value assets.
75+
76+
---
77+
78+
## API Endpoints
79+
80+
| Method | Endpoint | Purpose |
81+
|---|---|---|
82+
| `GET` | `/health` | Service status and uptime |
83+
| `GET` | `/api/content` | List content items |
84+
| `GET` | `/api/content/:id` | Fetch one content item |
85+
| `GET` | `/api/authors` | List authors |
86+
| `GET` | `/api/queues` | List workflow queues |
87+
| `GET` | `/api/approvals` | List approval records |
88+
| `GET` | `/api/blockers` | List publishing blockers |
89+
| `GET` | `/api/dashboard/summary` | Workflow operations summary |
90+
| `POST` | `/api/analyze/readiness` | Analyze publishing readiness |
91+
| `POST` | `/api/analyze/bottleneck` | Analyze workflow bottlenecks |
92+
| `POST` | `/api/analyze/prioritization` | Analyze prioritization routing |
93+
94+
---
95+
96+
## Sample Readiness Request
97+
98+
```json
99+
{
100+
"title": "Enterprise SEO Governance Platform",
101+
"stage": "legal-review",
102+
"daysInStage": 9,
103+
"requiredApprovalsPending": 2,
104+
"blockingIssues": ["missing-schema-review", "legal-copy-approval"],
105+
"searchOpportunityScore": 84,
106+
"businessPriority": "high",
107+
"wordCount": 1180
108+
}
109+
```
110+
111+
## Sample Readiness Response
112+
113+
```json
114+
{
115+
"status": "blocked",
116+
"score": 40,
117+
"issues": [
118+
"Content has remained in the current stage beyond the expected workflow SLA.",
119+
"Required approvals are still pending.",
120+
"Blocking governance issues remain unresolved for this content item.",
121+
"Legal review is a likely throughput bottleneck for this asset.",
122+
"Schema review remains unresolved for a high-priority asset."
123+
],
124+
"passedChecks": [
125+
"Search opportunity supports continued prioritization.",
126+
"Content depth is sufficient for target topic competitiveness.",
127+
"Business priority justifies active workflow escalation if blocked."
128+
],
129+
"recommendedNextAction": "Escalate approval path and route schema or legal review to the owning governance team this sprint."
130+
}
131+
```
132+
133+
---
134+
135+
## Screenshots
136+
137+
### Hero Capture
138+
139+
![Swagger UI](screenshots/01-hero.png)
140+
141+
### Publishing Workflow and Readiness Analysis
142+
143+
![Readiness workflow](screenshots/02-feature.png)
144+
145+
### Bottleneck and Prioritization Proof
146+
147+
![Prioritization proof](screenshots/03-proof.png)
148+
149+
---
150+
151+
## Getting Started
152+
153+
### Prerequisites
154+
155+
- Node.js 20+
156+
- npm
157+
158+
### Setup
159+
160+
```bash
161+
git clone https://github.com/mizcausevic-dev/content-workflow-intelligence-platform.git
162+
cd content-workflow-intelligence-platform
163+
npm install
164+
cp .env.example .env
165+
npm run dev
166+
```
167+
168+
Visit:
169+
170+
- `http://localhost:3000/docs`
171+
- `http://localhost:3000/api/content`
172+
- `http://localhost:3000/api/dashboard/summary`
173+
174+
### Run Tests
175+
176+
```bash
177+
npm test
178+
```
179+
180+
---
181+
182+
## What This Demonstrates
183+
184+
- content operations translated into backend service logic
185+
- editorial workflow visibility and throughput thinking
186+
- governance-aware publishing readiness analysis
187+
- prioritization based on business value and search opportunity
188+
- production-minded TypeScript API structure with docs, tests, and operational summaries
189+
190+
---
191+
192+
## Future Enhancements
193+
194+
- persist workflow entities in PostgreSQL
195+
- connect CMS and approval-system webhooks
196+
- add queue SLA tracking by team and stage
197+
- add publish calendar coordination and release windows
198+
- integrate content performance history and inventory health scoring
199+
200+
---
201+
202+
## Tech Stack
203+
204+
![Node.js](https://img.shields.io/badge/Node.js-20%2B-20232A?style=for-the-badge&logo=node.js&logoColor=white&labelColor=111827&color=4ADE80)
205+
![TypeScript](https://img.shields.io/badge/TypeScript-5.x-20232A?style=for-the-badge&logo=typescript&logoColor=white&labelColor=111827&color=2563EB)
206+
![Express](https://img.shields.io/badge/Express-5-20232A?style=for-the-badge&logo=express&logoColor=white&labelColor=111827&color=F97316)
207+
![REST API](https://img.shields.io/badge/API-REST-20232A?style=for-the-badge&logo=fastapi&logoColor=white&labelColor=111827&color=14B8A6)
208+
![OpenAPI](https://img.shields.io/badge/OpenAPI-Swagger-20232A?style=for-the-badge&logo=swagger&logoColor=black&labelColor=111827&color=FACC15)
209+
![Zod](https://img.shields.io/badge/Validation-Zod-20232A?style=for-the-badge&logo=typescript&logoColor=white&labelColor=111827&color=8B5CF6)
210+
![Helmet](https://img.shields.io/badge/Security-Helmet-20232A?style=for-the-badge&logo=shield&logoColor=white&labelColor=111827&color=EC4899)
211+
![Supertest](https://img.shields.io/badge/Testing-Supertest-20232A?style=for-the-badge&logo=checkmarx&logoColor=white&labelColor=111827&color=22C55E)
212+
![License](https://img.shields.io/badge/License-MIT-20232A?style=for-the-badge&logo=open-source-initiative&logoColor=white&labelColor=111827&color=A3E635)
213+
214+
### Portfolio Links
215+
216+
- [LinkedIn](https://www.linkedin.com/in/mirzacausevic)
217+
- [Skills Page](https://mizcausevic.com/skills/)
218+
- [Medium](https://medium.com/@mizcausevic)
219+
- [GitHub](https://github.com/mizcausevic-dev)
220+
221+
---
222+
223+
*Part of [mizcausevic-dev's GitHub portfolio](https://github.com/mizcausevic-dev) — demonstrating enterprise publishing systems thinking, workflow governance, and backend decision support for content operations.*

SECURITY.md

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
# Security Policy
2+
3+
## Scope
4+
5+
This repository is a portfolio project that demonstrates publishing workflow governance, editorial intelligence, and production-minded backend structure.
6+
7+
## Supported Version
8+
9+
The `main` branch is the supported version for review.
10+
11+
## Reporting
12+
13+
If you identify a security issue in the code, dependencies, or workflow configuration, please open a private report through GitHub security reporting when available or contact the repository owner directly before public disclosure.
14+
15+
## Secure Development Notes
16+
17+
- No production credentials belong in this repository.
18+
- Use `.env.example` as the reference for local configuration.
19+
- CI, Dependabot, and CodeQL are included to support baseline hygiene.

0 commit comments

Comments
 (0)