Skip to main content

Roadmap

This page tracks the development progress of Haft.

Current Version: 0.4.x

Completed

  • Project Initialization

    • Interactive TUI wizard
    • Spring Initializr dependency integration
    • Maven project generation
    • Gradle project generation (Groovy & Kotlin DSL)
    • YAML and Properties config formats
    • Git repository initialization
    • Offline operation — No internet required
  • Wizard Features

    • 12-step configuration wizard
    • Back navigation (Esc key)
    • Dynamic package name generation
    • Dependency search (/ key)
    • Category filtering (Tab, 0-9 keys)
  • Maven Parser

    • Read pom.xml files
    • Write pom.xml files
    • Dependency detection (Lombok, JPA, Validation)
    • Add/Remove dependencies
  • Gradle Parser

    • Read build.gradle (Groovy DSL)
    • Read build.gradle.kts (Kotlin DSL)
    • Write build.gradle files
    • Write build.gradle.kts files
    • Dependency detection (Lombok, JPA, Validation)
    • Add/Remove dependencies
  • Resource Generation (haft generate resource)

    • Controller generation with CRUD endpoints
    • Service interface generation
    • Service implementation generation
    • Repository generation
    • Entity generation (with/without Lombok)
    • Request/Response DTO generation
    • Mapper generation
    • ResourceNotFoundException generation
    • Smart dependency detection from pom.xml and build.gradle
    • Interactive TUI wizard
    • File safety (skip existing files)
    • Test class generation (ServiceTest, ControllerTest, RepositoryTest, EntityTest)
  • Individual Generators

    • haft generate controller (alias: co)
    • haft generate service (alias: s)
    • haft generate entity (alias: e)
    • haft generate repository (alias: repo)
    • haft generate dto
  • Dependency Manager

    • haft add <dependency> — Add dependencies
    • haft add — Interactive TUI search picker
    • haft add --browse — Category browser
    • Maven Central verification for coordinates
    • Auto-fetch latest versions
    • haft remove <dependency> — Remove dependencies
    • haft remove — Interactive removal picker
    • 230+ dependency shortcuts (jwt, guava, feign, etc.)
  • Intelligent Architecture Detection

    • Layered architecture detection
    • Feature-based architecture detection
    • Hexagonal architecture support
    • Clean architecture support
    • Modular monolith support
    • Flat architecture detection
    • Feature style detection (flat vs nested)
    • DTO naming detection (Request/Response vs DTO)
    • ID type detection (Long vs UUID)
    • Mapper detection (MapStruct, ModelMapper, manual)
    • Base entity inheritance detection
    • Profile caching for faster subsequent runs
  • Shell Completions

    • Bash completion
    • Zsh completion
    • Fish completion
    • PowerShell completion
  • Development Commands (haft dev)

    • haft dev serve — Start with hot-reload
    • haft dev build — Build project
    • haft dev test — Run tests
    • haft dev clean — Clean artifacts
    • Auto-detect Maven/Gradle
    • Wrapper support (mvnw/gradlew)
  • Project Analysis

    • haft info — Show project information
    • haft info --loc — Include lines of code summary
    • haft routes — List REST endpoints (Java & Kotlin)
    • haft routes --files — Show file locations
    • haft stats — Code statistics with language breakdown
    • haft stats --cocomo — COCOMO cost estimates
    • JSON output support
  • Custom Templates

    • Project-level templates (.haft/templates/)
    • Global user-level templates (~/.haft/templates/)
    • Template priority loading (project > global > embedded)
    • User-friendly ${var} placeholder syntax
    • Comment-based conditionals (@if/@else/@endif)
    • haft template init — Copy templates for customization
    • haft template list — List all templates with sources
    • haft template validate — Validate template syntax

Future: 0.5.0+

Editor Integration

We believe developers should stay in their editor. The first integration will be for Neovim.

  • Neovim Plugin (Priority)

    • :HaftInit — Initialize project from Neovim
    • :HaftGenerate — Generate resources
    • :HaftAdd — Add dependencies
    • Telescope integration for dependency search
    • Floating window for wizard
  • VS Code Extension

    • Command palette integration
    • Sidebar panel
    • Status bar integration
  • IntelliJ Plugin

    • Tool window integration
    • Actions and shortcuts

Advanced Features

  • Template Enhancements

    • Template inheritance
    • Additional template variables
  • Additional Generators

    • Exception handler generation (haft generate exception)
    • Configuration class generation (haft generate config)
    • Security configuration (haft generate security)
      • JWT authentication
      • Session-based authentication
      • OAuth2 authentication (Google, GitHub, Facebook)
      • Intelligent dependency checking
      • User entity detection

Contributing

Want to help? Check the GitHub Issues for tasks labeled:

  • good first issue — Great for new contributors
  • help wanted — We need assistance
  • enhancement — Feature requests

See Contributing for guidelines.

Changelog

v0.4.0 (Current)

  • Feature: haft generate security - Generate security configuration with JWT, Session, and OAuth2 support
  • Feature: Intelligent dependency checking for security dependencies
  • Feature: User/Role entity detection and optional generation
  • Feature: Architecture-aware security file placement
  • Feature: haft generate config - Generate configuration classes (CORS, OpenAPI, Jackson, Async, Cache, Auditing, WebMvc)
  • Feature: haft generate exception — Generate global exception handler with @ControllerAdvice
  • Feature: Custom templates — Override built-in templates with project or global custom templates
  • Feature: haft template init — Copy embedded templates for customization
  • Feature: haft template list — List all templates with source indicators
  • Feature: haft template validate — Validate custom template syntax
  • Feature: User-friendly ${var} placeholder syntax for templates
  • Feature: Comment-based conditionals (@if HasLombok, @else, @endif)
  • Feature: Intelligent architecture detection — Auto-detects Layered, Feature, Hexagonal, Clean, Modular, and Flat architectures
  • Feature: Profile caching — First scan cached to .haft/profile.yaml for instant subsequent runs
  • Feature: Test class generation — Generates ServiceTest, ControllerTest, RepositoryTest, EntityTest
  • Feature: --skip-tests flag to skip test generation
  • Feature: --refresh flag to force re-scan project profile
  • Feature: Feature style detection (flat vs nested)
  • Feature: DTO naming detection (Request/Response vs DTO)
  • Feature: ID type detection (Long vs UUID)
  • Feature: Mapper detection (MapStruct, ModelMapper, manual)
  • Feature: Base entity inheritance detection

v0.3.0

  • Feature: haft stats command — Code statistics using SCC
  • Feature: haft stats --cocomo — COCOMO cost estimates
  • Feature: haft info --loc — Lines of code summary
  • Feature: haft routes --files — Show file locations
  • Feature: haft routes Kotlin support — Scans .kt files
  • Feature: haft info command — Show project information
  • Feature: haft routes command — List REST endpoints
  • Feature: haft dev command for development workflow
  • Feature: haft dev serve — Start application with hot-reload
  • Feature: haft dev build — Build project with profiles
  • Feature: haft dev test — Run tests with filtering
  • Feature: haft dev clean — Clean build artifacts
  • Feature: haft completion command for shell completions
  • Feature: Bash, Zsh, Fish, PowerShell completion support
  • Feature: Full Gradle support (Groovy & Kotlin DSL)
  • Feature: Gradle parser for add/remove/generate commands
  • Feature: Gradle project generation with wrapper

v0.2.0

  • Feature: haft add interactive TUI search picker
  • Feature: haft add --browse category browser
  • Feature: Maven Central API verification for coordinates
  • Feature: Auto-fetch latest version for Maven coordinates
  • Feature: haft remove command with interactive picker
  • Feature: 230+ dependency shortcuts (jwt, guava, feign, resilience4j, etc.)
  • Feature: Suffix matching for remove command

v0.1.3

  • Feature: haft generate controller|service|entity|repository|dto commands
  • Feature: Individual component generation
  • Feature: haft add basic command with shortcuts
  • Feature: Dependency catalog with 30+ shortcuts

v0.1.2

  • Feature: haft generate resource command
  • Feature: Interactive wizard for resource generation
  • Feature: Auto-detect Lombok, JPA, Validation from pom.xml
  • Feature: Smart code generation based on dependencies

v0.1.1

  • Fix: Config format default to YAML
  • Fix: Version injection via ldflags
  • Fix: Install script spinner animation

v0.1.0

  • Initial release
  • haft init command with full wizard
  • Spring Initializr integration
  • Maven project generation
  • Maven parser for pom.xml
  • Offline operation

Last updated: December 2024