Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
155 commits
Select commit Hold shift + click to select a range
e8cfe6e
Homepage redesigned
nikhil-3210 Nov 21, 2025
bd88f1f
Merge branch 'features/redesign-homepage'
nikhil-3210 Nov 21, 2025
3d6ba46
about us page redesigned
nikhil-3210 Nov 21, 2025
1fe10fc
Merge branch 'features/redesign-about-page' into dev-nj
nikhil-3210 Nov 21, 2025
27c214d
contact us page created
nikhil-3210 Nov 21, 2025
a227470
space on landing page removed
nikhil-3210 Nov 21, 2025
7fdaf39
Merge pull request #73 from Hardhat-Enterprises/dev
du-dhartley Nov 30, 2025
fcee78f
Merge branch 'Hardhat-Enterprises:main' into main
nikhil-3210 Dec 2, 2025
59469e3
login page added with pending changes
nikhil-3210 Dec 2, 2025
9fc77e9
evidence scanner push, multiple document types are supported for uplo…
romil-bijarnia Dec 4, 2025
a53613d
Improve LoginPage UI with validation and helper text
NYASWA1014 Dec 6, 2025
3779dd8
feedback addressed, pull request into main
romil-bijarnia Dec 7, 2025
5797874
Merge pull request #77 from romil-bijarnia/main
du-dhartley Dec 7, 2025
ab6803e
Merge pull request #75 from JOHNNYAKUNDI-LAB/feature/frontend-task1
du-dhartley Dec 7, 2025
13cd78b
Add CODEOWNERS for simpler PR approval requests
du-dhartley Dec 7, 2025
685f8f6
Update comments
du-dhartley Dec 7, 2025
fde9c11
Merge pull request #78 from Hardhat-Enterprises/github/create-codeowners
du-dhartley Dec 7, 2025
172e44e
Remove unnecessary file
du-dhartley Dec 7, 2025
10f6310
Merge pull request #79 from Hardhat-Enterprises/github/test-codeowners
du-dhartley Dec 7, 2025
ee34534
Update codeowners
du-dhartley Dec 7, 2025
0249915
Add Romil to codeowners
du-dhartley Dec 7, 2025
212daae
Merge pull request #80 from Hardhat-Enterprises/github/update-codeowners
du-dhartley Dec 7, 2025
ff2f07a
Merge pull request #81 from Hardhat-Enterprises/dev
du-dhartley Dec 7, 2025
19f602e
Merge branch 'Hardhat-Enterprises:main' into main
nikhil-3210 Dec 7, 2025
e2aacc1
Merge branch 'main' into dev-nj
nikhil-3210 Dec 7, 2025
55e506f
upstream code merged and redudant code removed
nikhil-3210 Dec 7, 2025
fa85a93
new build
nikhil-3210 Dec 7, 2025
1c3c94b
nav bar updated
nikhil-3210 Dec 7, 2025
b4a3d52
improved the design on Landing page, about us pagecontact us page and…
nikhil-3210 Dec 7, 2025
cd097ad
Merge branch 'features/homepage-contactpage-aboutuspage-redesign'
nikhil-3210 Dec 7, 2025
ee8e906
Merge pull request #82 from nikhil-3210/main
romil-bijarnia Dec 8, 2025
503500c
feat: refine regular backups strategy and evidence examples
SeshiniBernad Dec 10, 2025
27a5670
Remove README from gitignore so it can be committed
du-dhartley Dec 11, 2025
2e1b28f
Add OPA container, backend env vars and worker container
du-dhartley Dec 11, 2025
86a48d8
Add worker files
du-dhartley Dec 11, 2025
855b4db
Add sample controls from M365 v3.1.0 and v4.0.0 with metadata and README
du-dhartley Dec 11, 2025
40cab10
Update .env.example for when the backend is running locally
du-dhartley Dec 11, 2025
d7a1561
Remove old and obsolete files
du-dhartley Dec 11, 2025
725ed33
Add the worker Dockerfile, entrypoint and basic M365 and Entra collec…
du-dhartley Dec 11, 2025
448c9a8
Add basic pages for frontend scanning and config
du-dhartley Dec 11, 2025
1328c8f
Add models and endpoints for connection config and scanning
du-dhartley Dec 11, 2025
efeda78
Merge pull request #85 from Hardhat-Enterprises/feature/add-async-eng…
romil-bijarnia Dec 11, 2025
a8a1dd5
Update readme and contributing documents for clarity
du-dhartley Dec 12, 2025
57909c7
Remove unnecessary documentation file
du-dhartley Dec 12, 2025
8cbd5e0
ui fixes, added recent scans a dialog component in the evidence page.
romil-bijarnia Dec 13, 2025
64b6f25
Merge pull request #86 from Hardhat-Enterprises/pr-85
romil-bijarnia Dec 13, 2025
ce83102
Collectors IP
du-dhartley Dec 16, 2025
fa4732c
Remove invalid reference to pip requirements file, use uv sync for co…
du-dhartley Dec 16, 2025
0845fbb
Added the missing uv run command for the engine
du-dhartley Dec 16, 2025
b90f793
Readme path fixes
du-dhartley Dec 16, 2025
0766f42
Include uv.lock
du-dhartley Dec 16, 2025
6601375
validator tool added, refactored the project heirarchy by adding a le…
romil-bijarnia Dec 16, 2025
8100c03
added validator tool for the evidence scanner, engine/ now has a lega…
romil-bijarnia Dec 16, 2025
a5f3071
Merge pull request #88 from Hardhat-Enterprises/feature/improve-getti…
du-dhartley Dec 17, 2025
b1e6d8f
Update collector structure with additional control support
du-dhartley Dec 17, 2025
7f2bf84
Add caveats to any powershell based collectors that use AccessToken w…
du-dhartley Dec 17, 2025
1bd589f
seed role mismatch issue fixed
nikhil-3210 Dec 19, 2025
2b99b4e
registration page is redesigned with nav bar, header and footer
nikhil-3210 Dec 19, 2025
4dbefef
Merge pull request #91 from Hardhat-Enterprises/bugfix/seed-role-mism…
romil-bijarnia Dec 19, 2025
7f15459
Merge pull request #90 from Hardhat-Enterprises/feature/add-cis-m365-…
du-dhartley Dec 19, 2025
514673d
Update gitignore so python bytecode isn't committed
du-dhartley Dec 19, 2025
252dd2c
Include the dnspython library
du-dhartley Dec 19, 2025
c49471c
Add the standalone collector execution script and instructions
du-dhartley Dec 19, 2025
381b1e5
Implement Graph API based collectors for v6
du-dhartley Dec 19, 2025
531c24a
Merge into local
romil-bijarnia Dec 20, 2025
7135f29
addressed feedback from th eprevious pull request
romil-bijarnia Dec 20, 2025
f0eb997
Merge branch 'main' into feature/redesign-registration-page
nikhil-3210 Dec 20, 2025
310cf3d
Implement as many working collectors as possible, create test script …
du-dhartley Dec 20, 2025
5decc02
Add notes about what can't be automated yet
du-dhartley Dec 20, 2025
9fe5cb8
Document the controls included in v6 of the CIS M365 benchmark and th…
du-dhartley Dec 21, 2025
fc04f83
Add extra properties to the control data for retrieval from metadata
du-dhartley Dec 21, 2025
04a98fc
Update sample metadata to use the new properties
du-dhartley Dec 21, 2025
b22b4be
Add full metadata.json for v6 and support skipping controls when auto…
du-dhartley Dec 21, 2025
e59476d
Remove CIS specific property names from the benchmark schemas
du-dhartley Dec 21, 2025
80b6e04
Update the contributing document to outline how to add collectors, po…
du-dhartley Dec 21, 2025
25903a0
Add worker support for tasks that can't be executed yet (skip)
du-dhartley Dec 21, 2025
5f8fcca
Add M365 foundation v6 metadata.json file with the new schema, suppor…
du-dhartley Dec 21, 2025
daff2e6
addressed pr comments.
romil-bijarnia Dec 21, 2025
0f8db87
Merge pull request #92 from Hardhat-Enterprises/feature/redesign-regi…
nikhil-3210 Dec 22, 2025
a292120
Bugfix
du-dhartley Dec 22, 2025
dc0a282
Merge branch 'main' into pr-85
romil-bijarnia Dec 22, 2025
d528fe1
Merge pull request #89 from Hardhat-Enterprises/pr-85
romil-bijarnia Dec 22, 2025
c690d1b
Merge branch 'main' into feature/implement-cis-m365-foundations-colle…
du-dhartley Dec 22, 2025
7d29b81
Fix signup validation and inline error messaging
romil-bijarnia Dec 22, 2025
3098da5
Merge pull request #93 from Hardhat-Enterprises/feature/implement-cis…
du-dhartley Dec 23, 2025
5adffd7
Merge branch 'main' into fix-signup-errors
du-dhartley Dec 23, 2025
ee5cd48
Merge pull request #94 from Hardhat-Enterprises/fix-signup-errors
romil-bijarnia Dec 24, 2025
e9e9ed1
Resolve merge conflict in Evidence page
ZoeYieYeo Dec 24, 2025
b8c2e52
Section 6 WIP
du-dhartley Dec 24, 2025
b4427a7
Update user instructions for regular backups evidences(ML1 AND ML2)
SeshiniBernad Dec 30, 2025
1bc3648
added single sign on functionality to autoaudit, the sign in and the …
romil-bijarnia Jan 3, 2026
d3a7df7
working towards builing a connection from autoaudit to m365
romil-bijarnia Jan 4, 2026
98042d9
Merge regular backups work into improvements branch
SeshiniBernad Jan 4, 2026
374a9ed
Merge remote-tracking branch 'origin/main' into feature/vite-migration
ZoeYieYeo Jan 6, 2026
0a056d2
Resolve merge conflict for vite migration and tailwind version upgrade
ZoeYieYeo Jan 6, 2026
5cd4fd1
Finalize Regular Backups strategy, evidence, tests, and documentation
SeshiniBernad Jan 6, 2026
d5df690
created rego policy for CIS M365 section 2
tinar10 Jan 7, 2026
8c8555f
Resolve merge conflict (remove comments and update content in index.h…
ZoeYieYeo Jan 8, 2026
dac620b
Merge pull request #96 from Hardhat-Enterprises/feature/vite-migration
ZoeYieYeo Jan 8, 2026
adcd2d1
Expose the server on 0.0.0.0
du-dhartley Jan 8, 2026
2685aac
Merge pull request #99 from Hardhat-Enterprises/hotfix/add-host-spec-…
du-dhartley Jan 8, 2026
7cc2dd6
added single sign on functionality to autoaudit, the sign in and the …
romil-bijarnia Jan 3, 2026
f275a27
Addressed previously provided feedback, added an .env example file in…
romil-bijarnia Jan 4, 2026
983e85a
Fix Google callback JSX and Vite env usage
romil-bijarnia Jan 8, 2026
8e4587a
Merge branch 'integrating-m365-connectors' into m365-connectors
romil-bijarnia Jan 8, 2026
0fc22c7
Fix Vite JSX import issues (remove GoogleCallbackPage.js)
romil-bijarnia Jan 8, 2026
9608996
markdown fix
romil-bijarnia Jan 8, 2026
2c3c337
Improve login error message and helper text styling
NYASWA1014 Jan 8, 2026
5f22faa
Improve connection error messaging and secret masking.
romil-bijarnia Jan 10, 2026
9137aaf
updated section 2.1.8, 2.1.9, 2.1.10
tinar10 Jan 10, 2026
581cdd2
modified section 2.1.10
tinar10 Jan 10, 2026
aa29e30
modified section 2.1.9 2.1.10
tinar10 Jan 11, 2026
d6f83f3
Merge pull request #100 from Hardhat-Enterprises/m365-connectors
romil-bijarnia Jan 11, 2026
1afd86e
Merge branch 'main' into feature/implement-cis-m365-v6-section-6-poli…
du-dhartley Jan 11, 2026
b81edc4
Use a much smaller base image for the local container
du-dhartley Jan 11, 2026
fee6ff0
Add a very simple FastAPI wrapper for the powershell service
du-dhartley Jan 11, 2026
eb627c7
Support the powershell service from the worker
du-dhartley Jan 11, 2026
9c1b274
Add support to the test collector for the powershell service
du-dhartley Jan 11, 2026
fb6dc04
Add support for the powershell service
du-dhartley Jan 11, 2026
4e4ff5e
Fix S6 collectors using the wrong cmdlets and update metadata
du-dhartley Jan 11, 2026
7551bf9
Update docker compose, add support for the powershell service
du-dhartley Jan 11, 2026
8ff5fa3
Merge pull request #101 from Hardhat-Enterprises/feature/implement-ci…
romil-bijarnia Jan 15, 2026
ecd73f8
Merge pull request #98 from Hardhat-Enterprises/feature/implement-cis…
romil-bijarnia Jan 15, 2026
9abfeaf
ui enhancements pt1
romil-bijarnia Jan 13, 2026
ecd5e1b
added 2 policies under the version 6 benchmark, controls have been te…
romil-bijarnia Jan 13, 2026
7c58a25
push v6 controls
romil-bijarnia Jan 15, 2026
bf0722d
ui enhancements pt1
romil-bijarnia Jan 13, 2026
bf58671
Merge branch 'feature/adding-ui-enhancements' into scanning-engine
romil-bijarnia Jan 15, 2026
c6aa0cd
hide skipped controls, put them in order
romil-bijarnia Jan 17, 2026
c59b9d4
Eliminate delete functionality for now, fix the timezone to AEST usin…
romil-bijarnia Jan 17, 2026
1ab25d4
Add more controls for v6, configurable using the GraphClient
romil-bijarnia Jan 17, 2026
7437ea6
Fix Regular Backups ML1/ML2 evaluation and align strategy with eviden…
SeshiniBernad Jan 18, 2026
b010515
Fix RB ML2 implied ML1 mapping and align control reporting
SeshiniBernad Jan 19, 2026
dd60567
Essential Eight: Regular Backups RB ML1/ML2 fixes + evidence pack
SeshiniBernad Jan 19, 2026
0d1b5c0
Fix scanner import path and align RB ML1/ML2 evidence outputs
SeshiniBernad Jan 19, 2026
4ae73e9
Restore repo-root import path handling in scanner
SeshiniBernad Jan 19, 2026
e59d975
Restore repo-root import path handling in scanner
SeshiniBernad Jan 19, 2026
a4eff57
Restore repo-root import path handling in scanner
SeshiniBernad Jan 19, 2026
f935d4f
added all controls for section 2
tinar10 Jan 19, 2026
75eb3a7
modified controls
tinar10 Jan 19, 2026
17cce10
modified controls 2.1.14,2.1.15, 2.1.7
tinar10 Jan 19, 2026
f3ff683
modified controls 2.1.11,2.1.1,2.1.7
tinar10 Jan 19, 2026
6474b3e
modified controls 2.1.5,2.1.11
tinar10 Jan 19, 2026
29a8c08
modified controls 2.1.15,2.1.6
tinar10 Jan 19, 2026
1dba91d
Merge pull request #104 from Hardhat-Enterprises/feat/regular-backups…
romil-bijarnia Jan 21, 2026
74b41e2
Merge pull request #102 from Hardhat-Enterprises/scanning-engine
romil-bijarnia Jan 24, 2026
3f48d51
Merge branch 'main' into feature/implement-cis-m365-v6-section-2-poli…
Jan 24, 2026
b801ceb
updated section 2 controls
Jan 24, 2026
c43ecb5
modified 2.1.7 control
Jan 24, 2026
ad7237a
updated controls in section 2
Jan 25, 2026
fde013e
updated controls in section 2
Jan 25, 2026
2e4a67e
2.1.11,2.1.12
Jan 25, 2026
01cad43
Merge pull request #105 from Hardhat-Enterprises/feature/implement-ci…
romil-bijarnia Jan 26, 2026
a2405c1
Merge branch 'main' into feature/frontend-task1
NYASWA1014 Jan 28, 2026
1050a7c
Add inline validation message for empty login fields
NYASWA1014 Jan 28, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
10 changes: 10 additions & 0 deletions .github/CODEOWNERS
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
# This file defines required reviewers for all PRs
# Last updated: Dec 2025

# Default reviewer(s) for everything
# For T3 2025 the list is primarily du-dhartley and romil-bijarnia. Any repository or organisation admins can also review and merge, even if not explicitly listed.
# Additional contributors can be easily added here.
* @du-dhartley @romil-bijarnia

# You can add more specific rules later, e.g.:
# /docs/ @docs-reviewer
File renamed without changes.
66 changes: 66 additions & 0 deletions .github/workflows/workflow-cleanup.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,66 @@
name: "Cleanup Old Workflow Runs"

on:
schedule:
- cron: "0 0 * * 0" # Every Sunday at midnight UTC
workflow_dispatch:
inputs:
dry_run:
description: "If true, only print what would be deleted"
required: true
type: boolean
default: true
confirm:
description: "Type DELETE to confirm deletion when dry_run=false"
required: false
default: ""

permissions:
contents: read
actions: write

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

- name: Setup Node.js
uses: actions/setup-node@v4
with:
node-version: 18

- name: Install dependencies
working-directory: tools/workflow-cleanup
run: npm ci

- name: Run cleanup script (scheduled dry run)
if: github.event_name == 'schedule'
working-directory: tools/workflow-cleanup
run: node cleanup-workflows.js --dryRun=true
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
REPO_OWNER: ${{ github.repository_owner }}
REPO_NAME: ${{ github.event.repository.name }}

- name: Run cleanup script (manual)
if: github.event_name == 'workflow_dispatch'
working-directory: tools/workflow-cleanup
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
REPO_OWNER: ${{ github.repository_owner }}
REPO_NAME: ${{ github.event.repository.name }}
run: |
if [ "${{ inputs.dry_run }}" = "true" ]; then
node cleanup-workflows.js --dryRun=true
exit 0
fi

if [ "${{ inputs.confirm }}" != "DELETE" ]; then
echo "Refusing to delete workflow runs."
echo "Re-run this workflow with dry_run=false and confirm=DELETE."
exit 1
fi

node cleanup-workflows.js
29 changes: 28 additions & 1 deletion .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -5,5 +5,32 @@ env/
**/.venv/
**/venv/
**/env/
README.md
.DS_Store

# Python caches
**/__pycache__/
**/*.py[codz]
**/.pytest_cache/
**/.ruff_cache/
**/.mypy_cache/

# Node / frontend artifacts
**/node_modules/
**/build/
**/dist/
**/coverage/

# Editor / OS
.idea/
.vscode/

# Environment files (keep examples)
.env
.env.*
!.env.example
**/.env
**/.env.*
!**/.env.example

# Engine legacy generated outputs
engine/legacy/engine/autoaudit_reports.json
30 changes: 0 additions & 30 deletions DevOps/cleanup.yml

This file was deleted.

8 changes: 8 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,12 +3,20 @@
## Project Overview
AutoAudit is a M365 compliance automation platform built by several specialist teams. This monorepo centralizes all codebases—including backend services, APIs, compliance scanners, and frontends—enabling unified CI/CD, streamlined development, and rapid automated deployments to the cloud.

## Documentation

- [Getting Started](docs/GETTING_STARTED.md) - Set up your development environment
- [Contributing Guide](docs/CONTRIBUTING.md) - Find where to contribute based on your skills

## Repository Structure
The repo follows the established modular structure:
- `/backend-api`
- `/security`
- `/frontend`
- `/engine`
- `/infrastructure`
- `/tools`
- `/docs`
- `/.github/workflows`

Full commit history and traceability from team forks are preserved.
Expand Down
29 changes: 19 additions & 10 deletions backend-api/.env.example
Original file line number Diff line number Diff line change
@@ -1,14 +1,23 @@
APP_ENV=dev
API_PREFIX=/api/v1
# Local development settings
# Copy this file to .env and adjust as needed

# Database
DATABASE_URL=postgresql+asyncpg://autoaudit:autoaudit_dev_password@localhost:5432/autoaudit

# Authentication
# SECRET_KEY: Used for signing JWT tokens. MUST be changed in production.
# Generate a secure random key with one of these commands:
# python -c "import secrets; print(secrets.token_urlsafe(32))"
# openssl rand -hex 32
SECRET_KEY=change-this-to-a-secure-random-string-in-production
ALGORITHM=HS256
ACCESS_TOKEN_EXPIRE_MINUTES=30
# Redis (Celery broker)
REDIS_URL=redis://localhost:6379

# OPA (Open Policy Agent)
OPA_URL=http://localhost:8181

# JWT signing key (MUST change in production)
SECRET_KEY=dev-secret-key-change-in-production

# Fernet encryption key for M365 credentials at rest
# Generate with: python -c "from cryptography.fernet import Fernet; print(Fernet.generate_key().decode())"
# Must match docker-compose.yml ENCRYPTION_KEY for worker compatibility
# This is a randomly generated key and is not for production use
ENCRYPTION_KEY=Ps-HiS3ww5QzQPc_Mdu5-JyA_jCNbdFHMdiwWSlAfgM=

# Policies directory (use relative path for local dev, /app/policies in Docker)
POLICIES_DIR=../engine/policies
21 changes: 13 additions & 8 deletions backend-api/Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -3,25 +3,30 @@ FROM python:3.11-slim

WORKDIR /app

# Install system dependencies
# Install system dependencies (incl. Tesseract for evidence OCR)
RUN apt-get update && apt-get install -y --no-install-recommends \
curl \
tesseract-ocr \
libtesseract-dev \
&& rm -rf /var/lib/apt/lists/*

# Install uv
RUN pip install uv

# Copy dependency files
COPY pyproject.toml uv.lock ./
COPY backend-api/pyproject.toml backend-api/uv.lock ./

# Install dependencies
RUN uv sync --frozen --no-dev
# Install dependencies (include evidence extra so OCR/reporting stack is present)
RUN uv sync --frozen --no-dev --extra evidence

# Copy application code
COPY app ./app
COPY alembic ./alembic
COPY alembic.ini ./
COPY entrypoint.sh ./
COPY backend-api/app ./app
COPY backend-api/alembic ./alembic
COPY backend-api/alembic.ini ./
COPY backend-api/entrypoint.sh ./

# Copy evidence scanner assets/logic
COPY security ./security

# Make entrypoint executable
RUN chmod +x entrypoint.sh
Expand Down
10 changes: 9 additions & 1 deletion backend-api/alembic/env.py
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,15 @@
# Import models for autogenerate support
from app.db.base import Base
from app.models.user import User # noqa
from app.models.compliance import Tenant, Rule, Scan, Issue # noqa
from app.models.oauth_account import OAuthAccount # noqa
from app.models.m365_connection import M365Connection # noqa
from app.models.platform import Platform # noqa
from app.models.compliance import Scan # noqa
from app.models.scan_result import ScanResult # noqa
from app.models.evidence_validation import EvidenceValidation # noqa
from app.models.azure_connection import AzureConnection # noqa
from app.models.gcp_connection import GCPConnection # noqa
from app.models.aws_connection import AWSConnection # noqa
from app.core.config import get_settings

# this is the Alembic Config object, which provides
Expand Down
Loading
Loading