A personal knowledge stash for Go developers. This repository automatically tracks and organizes GitHub starred repositories to create a curated collection of Go resources.
- ✅ Automatic weekly updates of starred GitHub repositories
- ✅ Generates both JSON and Markdown formats of starred repos
- ✅ GitHub Actions workflow for automation
- ✅ Containerization support with Docker
- ✅ Minimal dependencies (uses only Go standard library)
This project uses a GitHub Actions workflow to:
- Run weekly (every Monday at 2AM UTC)
- Fetch all repositories starred by the user
- Organize repositories by programming language
- Sort repositories alphabetically within each language
- Generate structured data files:
starred.json- Complete data in JSON format- Language-specific Markdown files in the
stars/directory:stars/go/starred.md- Go repositoriesstars/java/starred.md- Java repositories- And so on for each programming language
- Automatically commit and push the updated files
- GitHub account
- Personal access token with
reposcope
-
Fork or clone this repository
git clone https://github.com/nduyhai/go-mnemonics cd go-mnemonics -
Update GitHub username
Edit
.github/workflows/update-starred.ymland change theGITHUB_USERNAMEvalue to your GitHub username. -
Add GitHub token
Add your GitHub personal access token as a repository secret named
GH_STAR_TOKEN. -
Grant Write Permissions to GITHUB_TOKEN
Go to your repository settings:
https://github.com/YOUR_USERNAME/go-mnemonics/settings/actionsScroll down to Workflow permissions and select:
- ✅ Read and write permissions
- ✅ Allow GitHub Actions to create and approve pull requests (optional)
Click Save.
-
Run manually or wait for scheduled run
You can manually trigger the workflow from the Actions tab in your repository, or wait for the scheduled run.
To run the script locally:
export GITHUB_USERNAME=your-username
export GITHUB_TOKEN=your-token
go run .github/scripts/fetch_starred.goBuild and run the container:
# Build the container
docker build -t go-mnemonics .
# Run the container
docker run -p 8080:8080 go-mnemonicsThis repository includes a structured collection of Go knowledge organized into the following categories:
- Variables - Variable declarations, zero values, constants, and iota
- Functions - Function declarations, multiple returns, closures, and defer
- Interfaces - Interface declarations, implementation, and type assertions
- Goroutines - Lightweight concurrency, synchronization, and worker pools
- Channels - Communication between goroutines, buffering, and select
- Context - Cancellation, timeouts, and request-scoped values
- Nil vs. Zero Values - Understanding nil and zero values in Go
- Slice Pitfalls - Common mistakes with slices and underlying arrays
- Performance - Optimization techniques and best practices
- Testing - Effective testing strategies and patterns
You can customize this project in several ways:
- Modify the script to categorize repositories
- Change the update frequency in the workflow file
- Extend the script to include additional metadata
- Implement a web interface to browse your knowledge stash
- Add your own notes and examples to the knowledge structure
This project is licensed under the MIT License - see the LICENSE file for details