diff --git a/.claude/hooks/CLAUDE.md b/.claude/hooks/CLAUDE.md
index ebda995..44cb2a3 100644
--- a/.claude/hooks/CLAUDE.md
+++ b/.claude/hooks/CLAUDE.md
@@ -109,3 +109,12 @@ bun --hot ./index.ts
```
For more information, read the Bun API docs in `node_modules/bun-types/docs/**.mdx`.
+
+
+
+# Recent Activity
+
+
+
+*No recent activity*
+
\ No newline at end of file
diff --git a/.claude/settings.json b/.claude/settings.json
index 1683629..530baf5 100644
--- a/.claude/settings.json
+++ b/.claude/settings.json
@@ -6,7 +6,7 @@
"hooks": [
{
"type": "command",
- "command": "bun /Users/elvis/Documents/Git/HomeLab-Tools/dokploy/.claude/hooks/index.ts Notification"
+ "command": "bun /opt/dokploy/.worktrees/feature/add-codecov-workflow/.claude/hooks/index.ts Notification"
}
]
}
@@ -17,7 +17,7 @@
"hooks": [
{
"type": "command",
- "command": "bun /Users/elvis/Documents/Git/HomeLab-Tools/dokploy/.claude/hooks/index.ts Stop"
+ "command": "bun /opt/dokploy/.worktrees/feature/add-codecov-workflow/.claude/hooks/index.ts Stop"
}
]
}
@@ -28,7 +28,7 @@
"hooks": [
{
"type": "command",
- "command": "bun /Users/elvis/Documents/Git/HomeLab-Tools/dokploy/.claude/hooks/index.ts PreToolUse"
+ "command": "bun /opt/dokploy/.worktrees/feature/add-codecov-workflow/.claude/hooks/index.ts PreToolUse"
}
]
}
@@ -39,7 +39,7 @@
"hooks": [
{
"type": "command",
- "command": "bun /Users/elvis/Documents/Git/HomeLab-Tools/dokploy/.claude/hooks/index.ts PostToolUse"
+ "command": "bun /opt/dokploy/.worktrees/feature/add-codecov-workflow/.claude/hooks/index.ts PostToolUse"
}
]
}
@@ -50,7 +50,7 @@
"hooks": [
{
"type": "command",
- "command": "bun /Users/elvis/Documents/Git/HomeLab-Tools/dokploy/.claude/hooks/index.ts SubagentStop"
+ "command": "bun /opt/dokploy/.worktrees/feature/add-codecov-workflow/.claude/hooks/index.ts SubagentStop"
}
]
}
@@ -61,7 +61,7 @@
"hooks": [
{
"type": "command",
- "command": "bun /Users/elvis/Documents/Git/HomeLab-Tools/dokploy/.claude/hooks/index.ts UserPromptSubmit"
+ "command": "bun /opt/dokploy/.worktrees/feature/add-codecov-workflow/.claude/hooks/index.ts UserPromptSubmit"
}
]
}
@@ -72,7 +72,18 @@
"hooks": [
{
"type": "command",
- "command": "bun /Users/elvis/Documents/Git/HomeLab-Tools/dokploy/.claude/hooks/index.ts PreCompact"
+ "command": "bun /opt/dokploy/.worktrees/feature/add-codecov-workflow/.claude/hooks/index.ts PreCompact"
+ }
+ ]
+ }
+ ],
+ "SessionStart": [
+ {
+ "matcher": "",
+ "hooks": [
+ {
+ "type": "command",
+ "command": "bun /opt/dokploy/.worktrees/feature/add-codecov-workflow/.claude/hooks/index.ts SessionStart"
}
]
}
diff --git a/.github/workflows/CLAUDE.md b/.github/workflows/CLAUDE.md
new file mode 100644
index 0000000..adfdcb1
--- /dev/null
+++ b/.github/workflows/CLAUDE.md
@@ -0,0 +1,7 @@
+
+# Recent Activity
+
+
+
+*No recent activity*
+
\ No newline at end of file
diff --git a/.gitignore b/.gitignore
index e2746db..a88ffd4 100644
--- a/.gitignore
+++ b/.gitignore
@@ -45,3 +45,19 @@ yarn-error.log*
tmp/
temp/
SESSION_LOG.md
+
+# Git worktrees
+.worktrees/
+
+# Node.js
+node_modules/
+package-lock.json
+
+# Testing
+coverage/
+.nyc_output/
+*.tsbuildinfo
+
+# Build
+dist/
+build/
diff --git a/README.md b/README.md
index f9fdbc8..9b179b0 100644
--- a/README.md
+++ b/README.md
@@ -1,8 +1,10 @@
# Dokploy Templates + Cloudflare Integration - AI Coding Agent System
-**Version:** 1.0.0
-**Last Updated:** December 24, 2025
-**Repository:** https://github.com/enuno/dokploy
+[](https://codecov.io/github/enuno/dokploy)
+
+**Version:** 1.0.0
+**Last Updated:** December 24, 2025
+**Repository:** https://github.com/enuno/dokploy
**Project Lead:** Ryno Crypto Mining Services - ServerDomes Network Engineering
---
@@ -495,6 +497,10 @@ All templates must meet:
- ✅ **Documentation:** Complete and clear
- ✅ **No Secrets:** Hardcoded credentials forbidden
+### Code Coverage Visualization
+
+
+
---
## 🔄 Contributing
diff --git a/__tests__/CLAUDE.md b/__tests__/CLAUDE.md
new file mode 100644
index 0000000..2b7f479
--- /dev/null
+++ b/__tests__/CLAUDE.md
@@ -0,0 +1,11 @@
+
+# Recent Activity
+
+
+
+### Jan 27, 2026
+
+| ID | Time | T | Title | Read |
+|----|------|---|-------|------|
+| #498 | 11:36 PM | 🟣 | Added infrastructure smoke tests for Jest and TypeScript | ~284 |
+
\ No newline at end of file
diff --git a/__tests__/infrastructure.test.ts b/__tests__/infrastructure.test.ts
new file mode 100644
index 0000000..bd8bdb9
--- /dev/null
+++ b/__tests__/infrastructure.test.ts
@@ -0,0 +1,20 @@
+/**
+ * Infrastructure smoke test
+ * Verifies that Jest, TypeScript, and coverage collection work correctly
+ */
+
+describe('Testing Infrastructure', () => {
+ test('Jest can run tests', () => {
+ expect(true).toBe(true);
+ });
+
+ test('TypeScript compilation works', () => {
+ const value: string = 'test';
+ expect(typeof value).toBe('string');
+ });
+
+ test('Basic assertions work', () => {
+ const sum = (a: number, b: number): number => a + b;
+ expect(sum(2, 3)).toBe(5);
+ });
+});
diff --git a/package.json b/package.json
new file mode 100644
index 0000000..adfc042
--- /dev/null
+++ b/package.json
@@ -0,0 +1,31 @@
+{
+ "name": "dokploy-templates",
+ "version": "1.0.0",
+ "description": "Production-ready Dokploy application templates with Cloudflare integration",
+ "private": true,
+ "scripts": {
+ "test": "jest",
+ "test:coverage": "jest --coverage",
+ "test:watch": "jest --watch"
+ },
+ "devDependencies": {
+ "@types/jest": "^29.5.12",
+ "jest": "^29.7.0",
+ "ts-jest": "^29.1.2",
+ "typescript": "^5.3.3"
+ },
+ "jest": {
+ "preset": "ts-jest",
+ "testEnvironment": "node",
+ "testMatch": [
+ "**/__tests__/**/*.ts",
+ "**/?(*.)+(spec|test).ts"
+ ],
+ "collectCoverageFrom": [
+ "**/*.ts",
+ "!**/*.d.ts",
+ "!**/node_modules/**",
+ "!**/__tests__/**"
+ ]
+ }
+}
diff --git a/tsconfig.json b/tsconfig.json
new file mode 100644
index 0000000..b533ca8
--- /dev/null
+++ b/tsconfig.json
@@ -0,0 +1,18 @@
+{
+ "compilerOptions": {
+ "target": "ES2020",
+ "module": "commonjs",
+ "lib": ["ES2020"],
+ "outDir": "./dist",
+ "rootDir": "./",
+ "strict": true,
+ "esModuleInterop": true,
+ "skipLibCheck": true,
+ "forceConsistentCasingInFileNames": true,
+ "resolveJsonModule": true,
+ "moduleResolution": "node",
+ "types": ["jest", "node"]
+ },
+ "include": ["**/*.ts"],
+ "exclude": ["node_modules", "dist"]
+}