docs: comprehensive documentation polish & CI/CD automation

Major Updates:
- Rewrote all docs in beginner-friendly 'ELI5' language
- Created docs index with user journey navigation
- Added complete getting-started guide for novice users
- Set up GitHub Container Registry (GHCR) automation
- Configured GitHub Pages deployment for documentation

Documentation:
- docs/index.md - Central navigation hub
- docs/getting-started.md - Step-by-step beginner guide
- docs/github-setup.md - CI/CD setup instructions
- README.md - Complete rewrite in accessible language
- CONTRIBUTING.md - Contributor guidelines
- Multiple comprehensive API and schema docs

CI/CD Workflows:
- .github/workflows/docker-build.yml - Multi-platform builds to GHCR
- .github/workflows/docs.yml - Automated docs deployment to Pages
- Supports main (latest), development (dev), and version tags
- Automated testing of built images
- Beautiful documentation site with dark theme

Benefits:
- Zero barrier to entry for new users
- Automated Docker builds (AMD64 + ARM64)
- Professional documentation site
- No Docker Hub account needed (uses GHCR)
- Complete CI/CD pipeline

All 7 implementation phases complete - project is production ready!
This commit is contained in:
Wikid82
2025-11-18 13:11:11 -05:00
parent b9dcc6c347
commit e58fcb714d
76 changed files with 16989 additions and 99 deletions
@@ -0,0 +1,58 @@
import { describe, it, expect } from 'vitest'
import { render, screen } from '@testing-library/react'
import { BrowserRouter } from 'react-router-dom'
import Layout from '../Layout'
describe('Layout', () => {
it('renders the application title', () => {
render(
<BrowserRouter>
<Layout>
<div>Test Content</div>
</Layout>
</BrowserRouter>
)
expect(screen.getByText('Caddy Proxy Manager+')).toBeInTheDocument()
})
it('renders all navigation items', () => {
render(
<BrowserRouter>
<Layout>
<div>Test Content</div>
</Layout>
</BrowserRouter>
)
expect(screen.getByText('Dashboard')).toBeInTheDocument()
expect(screen.getByText('Proxy Hosts')).toBeInTheDocument()
expect(screen.getByText('Remote Servers')).toBeInTheDocument()
expect(screen.getByText('Import Caddyfile')).toBeInTheDocument()
expect(screen.getByText('Settings')).toBeInTheDocument()
})
it('renders children content', () => {
render(
<BrowserRouter>
<Layout>
<div data-testid="test-content">Test Content</div>
</Layout>
</BrowserRouter>
)
expect(screen.getByTestId('test-content')).toBeInTheDocument()
})
it('displays version information', () => {
render(
<BrowserRouter>
<Layout>
<div>Test Content</div>
</Layout>
</BrowserRouter>
)
expect(screen.getByText('Version 0.1.0')).toBeInTheDocument()
})
})