Complete project knowledge base and documentation map.
- Start: Development Guide
- Code: Code Structure Reference
- API: JSON-RPC API Reference
- Test: Testing Guide
- Deploy: Deployment Guide
- Config: Environment Variables
- Monitor: Architecture Overview
- Security: Security Documentation
- WCAG: Accessibility Guide
- Test: Testing Procedures
- Validate: WCAG Compliance Matrix
- Design: Architecture Overview
- Decisions: Architecture Decision Records
- Security: Security Architecture
- Code: Package Structure
| Document | Purpose | Audience |
|---|---|---|
| README | Documentation index | All |
| API Reference | JSON-RPC API specification | Developers, Integrators |
| Development Guide | Setup and workflows | Developers |
| Testing Guide | Test strategies and coverage | Developers, QA |
| Accessibility Guide | WCAG 2.2 AAA compliance | Accessibility, QA |
| Architecture | System design overview | Architects, Developers |
| Code Structure | Internal package reference | Developers |
| Deployment | Production deployment | DevOps, SRE |
| Security | Security architecture | Security, DevOps |
| ADR | Title | Status | Date |
|---|---|---|---|
| ADR-0001 | Standardize Form Field Names | ✅ Accepted | 2024-10-06 |
| ADR-0002 | Password Reset Functionality | ✅ Accepted | 2024-10-07 |
| ADR-0003 | Configurable Reset Email Templates | ✅ Accepted | 2026-07-22 |
| Document | Purpose | Audience |
|---|---|---|
| Onboarding Checklist | Progressive learning path for new developers | New developers |
| Documentation Maintenance Guide | Keeping documentation accurate as code evolves | Maintainers |
| Security Assessment | Security assessment report (2025-10-09) | Security, DevOps |
| Security Assessment (Revised) | Revised security assessment report | Security, DevOps |
LDAP Selfservice Password Changer provides:
- Self-Service Password Changes - Authenticated users change their LDAP/AD passwords
- Password Reset via Email - Unauthenticated password recovery with secure tokens
- Accessible Web Interface - WCAG 2.2 AAA compliant with adaptive themes
- JSON-RPC API - Programmatic integration for custom frontends
✅ Security: LDAPS, rate limiting, cryptographic tokens, minimal attack surface ✅ Accessibility: WCAG 2.2 AAA, screen reader support, keyboard navigation, adaptive density ✅ Modern UX: Dark mode, responsive design, real-time validation, password manager support ✅ Developer Friendly: Single binary, embedded assets, comprehensive tests, hot reload
| Layer | Technology | Version |
|---|---|---|
| Backend | Go | 1.26 (go.mod) |
| Web Framework | Fiber | v3.4.0 (github.com/gofiber/fiber/v3) |
| Frontend | TypeScript | ~6.0.3 (package.json) |
| CSS | Tailwind CSS | ^4.3.2 (package.json) |
| Build | Bun | no version pinned |
| Testing | testify | v1.11.1 (go.mod) |
ldap-selfservice-password-changer/
├── internal/ # Internal packages (not exported)
│ ├── email/ # SMTP service for password reset emails
│ ├── options/ # Application configuration
│ ├── ratelimit/ # Rate limiting middleware
│ ├── resettoken/ # Token generation and storage
│ ├── rpchandler/ # JSON-RPC handlers
│ ├── validators/ # Password validation rules
│ └── web/ # Web server and static assets
│ ├── static/ # Compiled JS, CSS, icons
│ │ └── js/ # TypeScript sources
│ └── templates/ # Go html/template components
│ ├── atoms/ # Basic UI elements
│ └── molecules/ # Composite components
├── docs/ # Official documentation
│ └── adr/ # Architecture Decision Records
├── main.go # Application entry point
├── go.mod # Go dependencies
├── package.json # Node.js dependencies
├── tsconfig.json # TypeScript configuration
└── compose.yml # Docker Compose setup
See Code Structure Documentation for detailed package descriptions.
# 1. Clone repository
git clone https://github.com/netresearch/ldap-selfservice-password-changer.git
cd ldap-selfservice-password-changer
# 2. Install dependencies
bun install
# 3. Copy environment template
cp .env.local.example .env.local
# 4. Start development server with hot reload
bun run devServer runs on http://localhost:3000 (default)
Full setup guide: Development Guide - Initial Setup
# Using Docker
docker pull ghcr.io/netresearch/ldap-selfservice-password-changer:latest
docker run -p 3000:3000 --env-file .env ldap-selfservice-password-changer
# Or build from source
bun run build:assets
go build -o ldap-selfservice-password-changer
./ldap-selfservice-password-changerFull deployment guide: Deployment Documentation
Run all tests:
go test ./... -coverCurrent coverage: tracked by Codecov, not restated here — see the codecov badge and dashboard. Hardcoded per-package percentages in Markdown go stale within a release; the command above prints the authoritative local numbers.
See Testing Guide for comprehensive testing documentation.
- LDAPS Support: Encrypted LDAP connections
- Rate Limiting: 10 requests/hour per IP (hardcoded) on both endpoints, plus 3 requests/hour per identifier for reset requests (configurable)
- Cryptographic Tokens: 256-bit secure token generation
- No Password Storage: Passwords never persisted
- Input Validation: Client and server-side validation
There is no CSRF protection; see WAF-02 in docs/security-assessment-revised-2025-10-09.md.
See Security Documentation for threat model and security architecture.
WCAG 2.2 Level AAA Compliant
✅ 7:1 contrast ratios (AAA) ✅ Adaptive density modes (comfortable/compact) ✅ Full keyboard navigation ✅ Screen reader optimized ✅ System preference detection (theme, motion, contrast)
See Accessibility Guide for compliance matrix and testing procedures.
- Repository: https://github.com/netresearch/ldap-selfservice-password-changer
- Docker Image: https://github.com/netresearch/ldap-selfservice-password-changer/pkgs/container/ldap-selfservice-password-changer
- License: MIT License
See README.md for contributing guidelines.
Last Updated: 2026-07-23 Maintained By: Development Team Update Frequency: Per release + major changes
To update this index: Add new documents to appropriate section with description and audience.
For questions or suggestions about documentation, open an issue on GitHub.