A monorepo tool for programmatically generating project information. It combines a Go API server that interfaces with GitHub's API to fetch repository data and a TypeScript CLI for generating INFO.yml files from that data.
- Go API Server: REST API that fetches GitHub repository data with built-in caching
- TypeScript CLI: Command-line tool built with oclif for generating INFO.yml files
- GitHub Integration: Direct interface with GitHub API for repository information
- Caching Layer: In-memory caching to reduce API calls and improve performance
- Monorepo Structure: Clean separation between API and CLI components
- Chi - HTTP router
- go-github - GitHub API client
- go-cache - In-memory caching
- Viper - Configuration management
- oclif - Open CLI Framework
- TypeScript - Type-safe JavaScript
- ESLint - Code linting
- Mocha/Chai - Testing framework
- Go 1.24.3 or higher
- Node.js 21.0.0 or higher
- GitHub personal access token
- Clone the repository:
git clone https://github.com/nostromos/dotproject.git
cd dotproject- Install CLI dependencies:
cd cli
npm install
cd ..- Install API dependencies:
cd api
go mod download
cd ..- Set up your GitHub token:
export GITHUB_TOKEN=your_github_tokencd api
go run cmd/server/main.goThe API server will start on http://127.0.0.1:8080
Generate an INFO.yml file for a repository:
cd cli
./bin/run.js generate [owner] [repo]GET /repos/{owner}/- Fetch all repositories for a GitHub userGET /health- Health check endpoint
dotproject/
├── api/ # Go API server
│ ├── cmd/
│ │ └── server/
│ │ └── main.go # API entry point
│ ├── internal/
│ │ ├── cache/ # In-memory caching
│ │ ├── github/ # GitHub API client
│ │ ├── handlers/ # HTTP request handlers
│ │ └── setup/ # Environment setup
│ ├── go.mod
│ └── go.sum
├── cli/ # TypeScript CLI
│ ├── src/
│ │ └── commands/
│ │ └── generate/ # Generate command
│ ├── bin/
│ │ └── run.js # CLI entry point
│ ├── package.json
│ └── tsconfig.json
├── go.work # Go workspace configuration
└── README.md
Run tests:
cd api
go test ./... -vBuild the API:
cd api
go build -o ../build/api-server cmd/server/main.goBuild the CLI:
cd cli
npm run buildRun tests:
cd cli
npm testLint the code:
cd cli
npm run lintCaution
All the tests are broken right now and CI/CD doesn't work. That's intended behavior for now because the tests are slop and the gh actions workflow was written as a 1-shot without llm help, just vibes and intellisense. I thought I'd get back to it the next day and got distracted. If you're reading this, file an issue and I'll fix it eventually. <3
The project uses GitHub Actions for continuous integration:
- Tests run on push (except main branch)
- Multi-OS testing (Ubuntu, Windows)
- Automated build verification
- The API server must be running for the CLI to function properly
- GitHub API rate limits apply - caching helps mitigate this
- The project uses Go workspaces for the monorepo structure
- CLI uses ESM modules
MIT - See LICENSE for details