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
35 changes: 35 additions & 0 deletions .github/ISSUE_TEMPLATE/bug_report.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
---
name: Bug Report
about: Report a bug or issue with FortiPath
title: "[BUG] "
labels: bug
assignees: ''

---

## Bug Description
A clear and concise description of what the bug is.

## Steps to Reproduce
Steps to reproduce the behavior:
1. Go to '...'
2. Click on '....'
3. Scroll down to '....'
4. See error

## Expected Behavior
A clear and concise description of what you expected to happen.

## Actual Behavior
A clear and concise description of what actually happened.

## Screenshots
If applicable, add screenshots to help explain your problem.

## Environment
- OS: [e.g. Ubuntu 22.04, macOS 13, Windows 11]
- Python Version: [e.g. 3.10.5]
- FortiPath Version: [e.g. 0.1.0]

## Additional Context
Add any other context about the problem here.
26 changes: 26 additions & 0 deletions .github/ISSUE_TEMPLATE/feature_request.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
---
name: Feature Request
about: Suggest a new feature or enhancement for FortiPath
title: "[FEATURE] "
labels: enhancement
assignees: ''

---

## Feature Description
A clear and concise description of the feature you'd like to see.

## Problem Statement
What problem does this feature solve? Why is it needed?

## Proposed Solution
Describe how you envision this feature working.

## Alternatives Considered
Have you considered any alternative solutions or features?

## Additional Context
Add any other context, mockups, or examples about the feature request here.

## Implementation Notes (Optional)
If you have ideas about how this could be implemented, share them here.
70 changes: 70 additions & 0 deletions .github/workflows/pages.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,70 @@
name: Deploy to GitHub Pages

on:
push:
branches: [main]
workflow_dispatch:

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

concurrency:
group: "pages"
cancel-in-progress: false

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

- name: Setup Node.js
uses: actions/setup-node@v4
with:
node-version: '20'
cache: 'npm'
cache-dependency-path: site/package-lock.json

- name: Install dependencies
run: |
cd site
npm ci

- name: Fetch repository data
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
run: |
cd site
npx tsx scripts/fetch_repo_data.ts
npx tsx scripts/fetch_discussions.ts
npx tsx scripts/fetch_projects.ts

- name: Build site
env:
PUBLIC_COMMIT_SHA: ${{ github.sha }}
PUBLIC_BUILD_TIME: ${{ github.event.head_commit.timestamp }}
run: |
cd site
npm run build

- name: Setup Pages
uses: actions/configure-pages@v5

- name: Upload artifact
uses: actions/upload-pages-artifact@v3
with:
path: ./site/dist

deploy:
environment:
name: github-pages
url: ${{ steps.deployment.outputs.page_url }}
runs-on: ubuntu-latest
needs: build
steps:
- name: Deploy to GitHub Pages
id: deployment
uses: actions/deploy-pages@v4
5 changes: 5 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -76,6 +76,11 @@ logs/
# Node modules (if any)
node_modules/

# Site build artifacts
site/dist/
site/.astro/
site/public/data/

# Generated markmap files (created by CI)
markmap/

Expand Down
68 changes: 68 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@
![alt text](assets/images/fortipath_art.png)

[![Spec-Kit Validation](https://github.com/cywf/FortiPath/actions/workflows/spec-kit.yml/badge.svg)](https://github.com/cywf/FortiPath/actions/workflows/spec-kit.yml)
[![Pages](https://github.com/cywf/FortiPath/actions/workflows/pages.yml/badge.svg)](https://github.com/cywf/FortiPath/actions/workflows/pages.yml)
[![Status](https://img.shields.io/badge/Status-Active%20Development-yellow)](https://github.com/cywf/FortiPath)
[![Version](https://img.shields.io/badge/Version-0.1.0%20→%201.0.0-blue)](https://github.com/cywf/FortiPath/releases)
[![License](https://img.shields.io/badge/License-Dual%20Licensed-green)](LICENSE)
Expand Down Expand Up @@ -49,6 +50,21 @@ FortiPath is a comprehensive executive protection toolkit designed to enhance th

To provide executive protection professionals with a modern, integrated toolkit that combines threat intelligence, operational planning, and real-time communication capabilities—all while maintaining the highest standards of security and privacy.

## 🌐 Live Site

**Visit the FortiPath project site:** [https://cywf.github.io/FortiPath/](https://cywf.github.io/FortiPath/)

The live site features:
- 📊 **Real-time Statistics** - Repository metrics, language breakdown, and commit activity
- 💬 **Discussions Browser** - Searchable list of community discussions
- 📋 **Development Board** - Interactive Kanban view of project progress
- 📚 **Documentation Hub** - Easy access to all project documentation
- 🎨 **Project Visualizer** - Interactive Mermaid diagrams of architecture and workflows
- ✏️ **Issue Creation** - Guided interface for creating GitHub issues
- 🎨 **Theme Selection** - Choose from 7 dark/neon theme variants

The site is built with **Astro + React + TailwindCSS + daisyUI** and automatically deployed via GitHub Actions on every push to main.

## ✨ Features

### Core Capabilities
Expand Down Expand Up @@ -166,6 +182,58 @@ FortiPath follows the **Spec-Kit framework** for transparent, organized developm

Read the [Constitution](.specify/constitution.md) to understand FortiPath's development principles.

## 🌐 Working with the Project Site

The FortiPath project site (`site/`) is built with Astro and automatically deployed to GitHub Pages.

### Local Development

```bash
# Navigate to site directory
cd site

# Install dependencies
npm install

# Start development server
npm run dev

# Build for production
npm run build

# Preview production build
npm run preview
```

The dev server runs at `http://localhost:4321/FortiPath/`

### Adding Content

**Add a Mermaid Diagram:**
1. Create a `.mmd` file in the `/mermaid/` directory
2. The diagram will automatically appear in the Visualizer page

**Add Documentation:**
1. Add markdown files to the `/docs/` directory
2. They will automatically appear in the Docs page

**Update Data:**
The site displays live data from the repository (stars, forks, discussions, project board). This data is fetched during the CI build process using these scripts:
- `site/scripts/fetch_repo_data.ts` - Repository statistics and commit history
- `site/scripts/fetch_discussions.ts` - Latest discussions
- `site/scripts/fetch_projects.ts` - Project board items

The data is exported to `site/public/data/*.json` during build and consumed by the site pages.

### CI/CD Pipeline

The `.github/workflows/pages.yml` workflow:
1. Fetches latest data using the GitHub API
2. Builds the Astro site
3. Deploys to GitHub Pages

The site is automatically redeployed on every push to `main`.

## 🗺️ Live Codebase Mindmap

Auto-generated on each push: **[repo-map.html](https://cywf.github.io/FortiPath/repo-map.html)** (via GitHub Pages and CI artifact).
Expand Down
1 change: 1 addition & 0 deletions site/.env.example
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
DEFAULT_THEME=nightfall
16 changes: 16 additions & 0 deletions site/astro.config.mjs
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
import { defineConfig } from 'astro/config';
import react from '@astrojs/react';
import tailwind from '@astrojs/tailwind';

// https://astro.build/config
export default defineConfig({
site: 'https://cywf.github.io',
base: '/FortiPath',
integrations: [
react(),
tailwind({
applyBaseStyles: false,
}),
],
output: 'static',
});
Loading