Development
Install the necessary tools for development by following their respective installation instructions.
- Go
- GitHub CLI (optional, for theme development with private repositories)
Project Setup
Clone the repository and build the project:
git clone https://github.com/germainlefebvre4/cvwonder.git
cd cvwonder
make build
Build
Build the binary:
make build
This creates the cvwonder executable in the project root.
Development Workflow
Working with Private Theme Repositories
If you're developing or testing themes in private repositories, CVWonder supports multiple authentication methods:
Option 1: GitHub CLI (Recommended)
# Authenticate once
gh auth login
# CVWonder automatically detects and uses your gh credentials
./cvwonder theme install https://github.com/your-org/your-private-theme
Option 2: Environment Variables
# Set the token in your environment
export GITHUB_TOKEN="ghp_your_personal_access_token"
# Or use GH_TOKEN
export GH_TOKEN="ghp_your_personal_access_token"
# Install themes
./cvwonder theme install https://github.com/your-org/your-private-theme
Authentication Priority:
CVWonder checks for credentials in this order:
- GitHub CLI (
gh) - automatic if logged in GITHUB_TOKENenvironment variableGH_TOKENenvironment variable- Unauthenticated (public repositories only)
Debugging Authentication:
Use debug mode to verify which authentication method is being used:
./cvwonder theme install <url> --debug
Testing Authentication Flow:
When developing authentication features, test all methods:
# Test GitHub CLI
gh auth login
./cvwonder theme install <private-repo> --debug
# Test environment variable
gh auth logout
export GITHUB_TOKEN="token_here"
./cvwonder theme install <private-repo> --debug
# Test unauthenticated (should fail for private repos)
unset GITHUB_TOKEN
unset GH_TOKEN
./cvwonder theme install <private-repo> --debug
Live Development
Use the serve command with watch mode for live reloading:
./cvwonder serve --watch
Lint
Lint the codebase (TODO: add linting configuration):
# golangci-lint run
Unit tests
Run all unit tests:
go test ./...
Run tests for a specific package:
go test ./internal/utils/...
go test ./internal/themes/...
Run tests with coverage:
go test ./... -cover
Run tests with verbose output:
go test ./... -v
Integration tests
Integration tests are run as part of the CI/CD pipeline.
Documentation
Documentation is built using Docusaurus and located in docs/github-pages/.
Running Documentation Locally
cd docs/github-pages
pnpm install
pnpm start
This starts a local development server at http://localhost:3000
Building Documentation
cd docs/github-pages
pnpm build
Architecture
For information about the codebase structure and architecture, see the Architecture documentation.