Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
60 changes: 60 additions & 0 deletions .github/ISSUE_TEMPLATE/bug_report.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,60 @@
name: Bug Report
description: Something isn't working as expected
labels: ["bug"]
body:
- type: textarea
id: description
attributes:
label: What happened?
placeholder: Describe the bug clearly — what did you expect vs what actually happened.
validations:
required: true

- type: textarea
id: steps
attributes:
label: Steps to reproduce
placeholder: |
1. Go to ...
2. Enter ...
3. Click ...
4. See error
validations:
required: true

- type: dropdown
id: component
attributes:
label: Component
options:
- Web UI
- REST API
- CLI
- Specific handler/check
- Docker / deployment
- Other
validations:
required: true

- type: input
id: handler
attributes:
label: Handler name (if applicable)
placeholder: e.g. ssl, dns, sitemap

- type: textarea
id: environment
attributes:
label: Environment
placeholder: |
- OS: macOS 15 / Ubuntu 24.04 / Windows 11
- Node.js: 24.x
- Browser: Chrome 130
- Deployment: Docker / source / Helm
render: text

- type: textarea
id: screenshots
attributes:
label: Screenshots or logs
placeholder: Paste screenshots, error messages, or relevant log output.
5 changes: 5 additions & 0 deletions .github/ISSUE_TEMPLATE/config.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
blank_issues_enabled: true
contact_links:
- name: Documentation
url: https://brunoafk.github.io/recon-web
about: Check the docs before opening an issue
40 changes: 40 additions & 0 deletions .github/ISSUE_TEMPLATE/feature_request.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
name: Feature Request
description: Suggest a new feature or improvement
labels: ["enhancement"]
body:
- type: textarea
id: problem
attributes:
label: Problem
placeholder: What problem does this solve? Why do you need it?
validations:
required: true

- type: textarea
id: solution
attributes:
label: Proposed solution
placeholder: How should it work? Be as specific as you can.
validations:
required: true

- type: dropdown
id: component
attributes:
label: Component
options:
- Web UI
- REST API
- CLI
- New handler/check
- Docker / deployment
- Documentation
- Other
validations:
required: true

- type: textarea
id: alternatives
attributes:
label: Alternatives considered
placeholder: Any other approaches you've thought about?
32 changes: 32 additions & 0 deletions .github/pull_request_template.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
## Summary

<!-- What does this PR do? 1-3 bullet points. -->

-

## Type

- [ ] Bug fix
- [ ] New feature
- [ ] Improvement / refactor
- [ ] Documentation
- [ ] CI / infrastructure

## Changes

<!-- Which packages/files are affected? -->

-

## Testing

<!-- How did you verify this works? -->

- [ ] Existing tests pass (`npm test`)
- [ ] New tests added
- [ ] Manual testing done
- [ ] Build passes (`npx tsc --build`)

## Screenshots

<!-- If UI changes, paste before/after screenshots. Delete this section if not applicable. -->
51 changes: 51 additions & 0 deletions .github/workflows/docs.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,51 @@
name: Deploy Docs

on:
push:
branches: [main]
paths:
- "docs/**"
workflow_dispatch:

permissions:
contents: read
pages: write
id-token: write

concurrency:
group: pages
cancel-in-progress: true

jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4

- uses: actions/setup-node@v4
with:
node-version: "24"
cache: npm
cache-dependency-path: docs/package-lock.json

- name: Install dependencies
working-directory: docs
run: npm ci

- name: Build docs
working-directory: docs
run: npx astro build

- uses: actions/upload-pages-artifact@v3
with:
path: docs/dist

deploy:
needs: build
runs-on: ubuntu-latest
environment:
name: github-pages
url: ${{ steps.deployment.outputs.page_url }}
steps:
- id: deployment
uses: actions/deploy-pages@v4
36 changes: 36 additions & 0 deletions .github/workflows/static.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
name: Deploy Static (Cloudflare Pages)

on:
release:
types: [published]
workflow_dispatch:

jobs:
deploy:
runs-on: ubuntu-latest
permissions:
contents: read
deployments: write
steps:
- uses: actions/checkout@v4

- uses: actions/setup-node@v4
with:
node-version: "24"
cache: npm

- name: Install dependencies
run: npm ci

- name: Build core
run: npx tsc -b packages/core

- name: Build static site
run: npm run build -w @recon-web/static

- name: Deploy to Cloudflare Pages
uses: cloudflare/wrangler-action@v3
with:
apiToken: ${{ secrets.CLOUDFLARE_API_TOKEN }}
accountId: ${{ secrets.CLOUDFLARE_ACCOUNT_ID }}
command: pages deploy packages/static/dist --project-name=recon-web
7 changes: 7 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@
dist/
build/
*.tsbuildinfo
packages/api/data/*

# Dependencies
node_modules/
Expand Down Expand Up @@ -38,3 +39,9 @@ Thumbs.db
# Internal
@internal/
docs/superpowers/

# SQLite databases
*.db
*.db-journal
*.db-wal
data/
27 changes: 25 additions & 2 deletions .gitlab-ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@ stages:
- build
- scan
- push
- deploy

variables:
NODE_VERSION: "24"
Expand Down Expand Up @@ -62,7 +63,7 @@ audit:
services:
- docker:27-dind
before_script:
- docker login -u ${CI_REGISTRY_USER} -p ${CI_REGISTRY_PASSWORD} ${CI_REGISTRY}
- docker login -u gitlab-ci-token -p ${CI_JOB_TOKEN} ${CI_REGISTRY}

build-api:
extends: .docker-build
Expand Down Expand Up @@ -133,7 +134,7 @@ scan-cli:
rules:
- if: $CI_COMMIT_TAG =~ /^v\d+\.\d+\.\d+/
before_script:
- docker login -u ${CI_REGISTRY_USER} -p ${CI_REGISTRY_PASSWORD} ${CI_REGISTRY}
- docker login -u gitlab-ci-token -p ${CI_JOB_TOKEN} ${CI_REGISTRY}

push-api:
extends: .docker-push
Expand Down Expand Up @@ -164,3 +165,25 @@ push-cli:
- docker tag ${IMAGE_PREFIX}/cli:${CI_COMMIT_SHA} ${IMAGE_PREFIX}/cli:latest
- docker push ${IMAGE_PREFIX}/cli:${CI_COMMIT_TAG}
- docker push ${IMAGE_PREFIX}/cli:latest

# ── Stage 7: Deploy static site to Cloudflare Pages ─────────

deploy-static:
stage: deploy
image: node:${NODE_VERSION}
rules:
- if: $CI_COMMIT_TAG =~ /^v\d+\.\d+\.\d+/
- when: manual
allow_failure: true
cache:
key: npm-${CI_COMMIT_REF_SLUG}
paths:
- node_modules/
script:
- npm ci
- npx tsc -b packages/core
- npm run build -w @recon-web/static
- npx wrangler pages deploy packages/static/dist --project-name=recon-web
environment:
name: cloudflare-pages
url: https://recon-web.pages.dev
Loading