{"id":49225388,"url":"https://github.com/olasch/vanguard-brew","last_synced_at":"2026-04-24T07:00:47.702Z","repository":{"id":345755853,"uuid":"1172375290","full_name":"olasch/vanguard-brew","owner":"olasch","description":"One sip, one commit. Master Java 25 through structured coding katas. From String manipulation to ZonedDateTime logic—everything you need for a better daily grind.","archived":false,"fork":false,"pushed_at":"2026-03-20T13:51:41.000Z","size":91,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-03-21T06:13:12.470Z","etag":null,"topics":["coding-katas","java-25","tdd-kata","vanguard-brew"],"latest_commit_sha":null,"homepage":"","language":"Java","has_issues":false,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/olasch.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-03-04T08:33:55.000Z","updated_at":"2026-03-20T13:49:28.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/olasch/vanguard-brew","commit_stats":null,"previous_names":["olasch/vanguard-brew"],"tags_count":3,"template":false,"template_full_name":null,"purl":"pkg:github/olasch/vanguard-brew","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/olasch%2Fvanguard-brew","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/olasch%2Fvanguard-brew/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/olasch%2Fvanguard-brew/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/olasch%2Fvanguard-brew/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/olasch","download_url":"https://codeload.github.com/olasch/vanguard-brew/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/olasch%2Fvanguard-brew/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32212808,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-24T03:15:14.334Z","status":"ssl_error","status_checked_at":"2026-04-24T03:15:11.608Z","response_time":64,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["coding-katas","java-25","tdd-kata","vanguard-brew"],"created_at":"2026-04-24T07:00:46.706Z","updated_at":"2026-04-24T07:00:47.692Z","avatar_url":"https://github.com/olasch.png","language":"Java","funding_links":[],"categories":[],"sub_categories":[],"readme":"# ☕ Vanguard Brew: Java Katas\n\n**Master the Art of Modern Java, One Sip at a Time.**\n\nWelcome to **Vanguard Brew**, a high-octane collection of coding katas designed to sharpen your skills with **Java 25**.\nWhether you’re here to master the Stream API, explore new language features, or just practice Test-Driven Development (\nTDD), we’ve roasted the perfect set of challenges for you.\n\n---\n\n## 🚀 Getting Started\n\n### 1. Choose Your Blend (Clone the Repo)\n\nPick the method that fits your workflow:\n\n* **Fork \u0026 Pull:** Best for tracking your progress and getting upstream updates.\n    * [Learn how to fork a repo](https://docs.github.com/en/get-started/quickstart/fork-a-repo) (GitHub Official)\n* **Clone:** Quickest way to get the code locally:\n    ```bash\n    git clone git@github.com:olasch/vanguard-brew.git\n    ```\n* **Download ZIP:** For a one-time \"tasting\" session without Git history.\n\n### 2. Prepare the Station (Build)\n\nThis project is built with **Maven**.\n\n\u003e [!NOTE]\n\u003e You can use [Maven Wrapper](https://maven.apache.org/tools/wrapper/) for easier bootstrapping.\n\n\u003e [!IMPORTANT]\n\u003e Since we use a modular framework, you must install the core logic first:\n\u003e ```bash\n\u003e cd framework\n\u003e mvn install\n\u003e ```\n\u003e And the parents that are needed, from root:\n\u003e ```bash\n\u003e mvn -N install\n\u003e cd kata\n\u003e mvn -N install\n\u003e ```\n\u003e Or if you want to install everything, from root:\n\u003e ```bash\n\u003e mvn install -DskipTests\n\u003e ```\n\n### 3. Select Your Roast (Pick a Category)\n\nEach \"Kata Category\" is a self-contained module with a standard layout:\n\n```text\n.../[kata-category]\n ├── src/main  \u003c-- Your implementation goes here ☕\n └── src/test  \u003c-- The \"Taste Test\" (The requirements)\n```\n\n---\n\n## 🛠 The Workflow: \"Brew, Sip, Refine\"\n\n1. **Run the Tests:** Open your IDE and run the test class for the Kata you want to solve. You’ll see them fail—that’s\n   just the \"bitter\" start!\n2. **Implement Logic:** Navigate to the corresponding class in `src/main` and write your implementation.\n3. **Achieve Clarity:** Run the tests again. Once they turn **green**, your code is perfectly brewed.\n\n### Running Katas via Terminal\n\nIf you prefer the command line, you can run specific \"Flavor Profiles\" (tags):\n\n\u003e [!NOTE]\n\u003e You need to be in the correct subdir for this work properly, from the root dir it runs all projects, but filters out\n\u003e everything that does not match the tag.\n\n```bash\ncd kata/collections-kata\nmvn test -Dgroups=List\n```\n\nOr run an individual test:\n\u003e [!NOTE]\n\u003e You need to be in the correct subdir for this to work.\n\n```bash\ncd kata/string-kata\nmvn test -Dtest='VowelCounterTest#testNoVowels'\n```\n\n---\n\n## 🌳 Git Strategy: Master the Flow\n\nTo keep your \"Brew\" fresh and your history clean, we follow a professional Git workflow. Whether you are practicing solo\nor \"brewing\" with friends, these patterns will keep your repository organized.\n\n### 🔄 Staying Up-to-Date\n\nSince this is a living project, new Katas (new roasts!) are added frequently. To pull the latest challenges without\nbreaking your work:\n\n```bash\ngit remote add upstream git@github.com:olasch/vanguard-brew.git\ngit fetch upstream\ngit merge upstream/main\n```\n\n### 🛣 Choosing Your Path\n\n* **Trunk-Based Development:** Best for single Katas. Commit directly to `main` for quick, iterative learning.\n* **Feature Branches:** Best for completing an entire **KataSuite** (e.g., `feature/map-katas`).\n* *Pro Tip:* Use branches if you are coding with friends! Open a **Pull Request (PR)** to review each other's logic\n  before merging.\n\n### 📝 Commits \u0026 The Art of the `amend`\n\nWe value a clean history. Write descriptive, imperative commit messages (e.g., `feat: implement positive integer sort`).\n\nIf you made a typo or forgot a file in your last commit, don't create a new one! Use:\n\n```bash\ngit add .\ngit commit --amend --no-edit\n```\n\n*This keeps your history from being cluttered with \"oops\" or \"fix\" commits.*\n\n### 🔨 The Squash \u0026 Merge\n\nBefore merging a feature branch into `main`, **squash** your commits. This collapses a dozen \"work-in-progress\" commits\ninto one clean, functional milestone.\n\n* If using GitHub, select **\"Squash and merge\"** on the PR.\n* If using CLI: `git rebase -i main` and pick the `squash` option for your commits.\n\n---\n\n## 📋 The Menu: Kata Suites\n\nIn most modern IDEs (IntelliJ, VS Code), you can run these entire suites with a single click to validate an entire\ntopic.\n\n| Suite                        | Focus Area                                                                            |\n|:-----------------------------|:--------------------------------------------------------------------------------------|\n| **`StringKatasSuite`**       | Text manipulation, RegEx, and modern String manipulation.                             |\n| **`ListKatasSuite`**         | Filtering, sorting, and transforming ordered data.                                    |\n| **`MapKatasSuite`**          | Key-value logic and complex data structures.                                          |\n| **`SetKatasSuite`**          | Uniqueness, membership, and collection logic.                                         |\n| **`DateKatasSuite`**         | Calendar-based logic involving `LocalDate`, `Period`, and chronological calculations. |\n| **`TimeKatasSuite`**         | Clock-based logic involving `LocalTime`, and precise `Duration` measurements.         |\n| **`ConstructingKatasSuite`** | How to instanciate objects, and validations before.                                   |\n| **`SealingKatasSuite`**      | Lock down domain models with sealed classes and exhaustive pattern matching.          |\n| **`StateMachineKatasSuite`** | Master state machines by building a pattern-matched espresso maker.                   |\n\n---\n\n## 🛡 Why \"Vanguard\"?\n\nThis project isn't just about \"basic\" Java. It’s built for **Java 25**, meaning we encourage:\n\n* **Functional Interfaces** (The `@FunctionalInterface` style).\n* **Pattern Matching** for cleaner logic.\n* **Concise Streams** for elegant data processing.\n\n---\n\n## 📚 Git Resources\n\n* **[Pro Git Book](https://git-scm.com/book/en/v2):** The ultimate \"Bible\" of Git.\n* **[GitHub Skills](https://skills.github.com/):** Interactive courses for branching and PRs.\n* **[Conventional Commits](https://www.conventionalcommits.org/):** A standard for meaningful commit messages.\n* **[Atlassian Git Tutorial](https://www.atlassian.com/git/tutorials):** Visual guides on Rebase vs. Merge.\n\n---\n\n*“Code is like coffee: it’s only good if it’s clean and gives you a boost.”*\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Folasch%2Fvanguard-brew","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Folasch%2Fvanguard-brew","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Folasch%2Fvanguard-brew/lists"}