Getting Started with ACCI EAF
Welcome to the ACCI Enterprise Application Framework (EAF)! This comprehensive guide will help you rapidly set up your development environment and build your first EAF application following our architectural principles.
π― Quick Start Goalsβ
By the end of this guide, you'll have:
- A complete local development environment
- A working EAF backend service with hexagonal architecture
- A React frontend component consuming your API
- Understanding of our core architectural principles: Hexagonal Architecture, Domain-Driven Design, and Test-Driven Development
β±οΈ Total Time: ~30 minutes
π What You'll Buildβ
We'll create a simple User Profile Management system that demonstrates:
Backend (Kotlin/Spring Boot)β
- Domain Layer:
UserProfile
aggregate with creation command and event - Application Layer: Use case implementation with proper validation
- Infrastructure Layer: REST API and NATS event publishing
- Testing: TDD approach with unit and integration tests
Frontend (React/TypeScript)β
- Component: User profile registration form
- API Integration: Consuming REST endpoints
- Error Handling: User-friendly error states
- State Management: Basic async state handling
πΊοΈ Learning Pathβ
Follow these guides in order for the best experience:
1. Prerequisitesβ
Set up your development tools and verify your environment is ready.
2. Local Setupβ
Clone the repository, start infrastructure services, and verify your setup.
3. Your First Serviceβ
Use the ACCI EAF CLI to generate a properly structured service following hexagonal architecture.
4. Hello World Exampleβ
Implement a complete user profile feature using TDD and DDD principles.
5. Frontend Integrationβ
Create a React component that interacts with your backend service.
6. Development Workflowβ
Learn the day-to-day development practices and tooling.
7. Troubleshootingβ
Common issues and solutions for smooth development.
ποΈ Architectural Foundationβ
ACCI EAF is built on three core principles that guide every aspect of development:
Hexagonal Architecture (Ports & Adapters)β
- Domain at the center, isolated from external concerns
- Application layer orchestrates business logic
- Infrastructure adapters handle external integrations
- Dependency inversion ensures testability and flexibility
Domain-Driven Design (DDD)β
- Bounded contexts define clear service boundaries
- Aggregates maintain consistency and encapsulate business rules
- Events communicate changes across the system
- Ubiquitous language ensures clear communication
Test-Driven Development (TDD)β
- Red: Write failing tests first
- Green: Implement minimal code to pass
- Refactor: Improve code while maintaining tests
- Confidence: Comprehensive test coverage enables fearless refactoring
π Key Technologiesβ
Backend Stackβ
- Kotlin - Concise, expressive language with excellent Spring integration
- Spring Boot - Production-ready framework with auto-configuration
- NATS - High-performance messaging for event-driven architecture
- PostgreSQL - Robust relational database for persistence
- Nx - Monorepo tooling for build optimization
Frontend Stackβ
- React - Component-based UI library
- TypeScript - Type-safe JavaScript for better developer experience
- Vite - Fast build tool and development server
- Testing Library - Simple and complete testing utilities
Development Toolsβ
- ACCI EAF CLI - Code generation following architectural patterns
- Docker Compose - Local infrastructure orchestration
- Gradle - Build automation and dependency management
- ktlint - Code formatting and style enforcement
π‘ Success Tipsβ
Start Simpleβ
- Follow the guide step-by-step
- Don't skip the testing sections
- Understand the "why" behind each architectural decision
Think in Layersβ
- Domain: What is the business problem?
- Application: How do we solve it?
- Infrastructure: What external tools do we need?
Embrace TDDβ
- Write tests first to clarify requirements
- Use tests as living documentation
- Refactor fearlessly with test coverage
Ask Questionsβ
- Join our developer community channels
- Reference the architectural principles documentation
- Use the troubleshooting guide for common issues
π― Ready to Start?β
Begin with the Prerequisites guide to set up your development environment.
Have questions? Check our Troubleshooting section or reach out to the EAF team.
Happy coding! π
The ACCI EAF team is here to support your journey toward building robust, scalable enterprise applications.