Development Setup
Prerequisites
Section titled “Prerequisites”| Tool | Version | Purpose |
|---|---|---|
| Java | 17+ | Server development |
| Gradle | 8.x (wrapper included) | Server build system |
| Go | 1.23+ | Agent development |
| Node.js | 20+ | Web frontend development |
| Docker | 24+ | Infrastructure services |
| Git | 2.30+ | Version control |
Repository Structure
Section titled “Repository Structure”easyshell/├── easyshell-server/ # Java 17 + Spring Boot 3.5├── easyshell-agent/ # Go 1.23├── easyshell-web/ # React 19 + TypeScript + Vite 7├── easyshell-docs/ # Astro + Starlight (this docs site)├── easyshell-site/ # Next.js 15 (website + marketplace)├── docker-compose.yml # MySQL + Redis├── prd/ # Product requirement documents└── spec/ # Technical specificationsGetting Started
Section titled “Getting Started”1. Clone the Repository
Section titled “1. Clone the Repository”git clone https://github.com/easyshell-ai/easyshell.gitcd easyshell2. Start Infrastructure
Section titled “2. Start Infrastructure”docker compose up -dThis starts MySQL 8.0 and Redis 7 with default credentials for development.
3. Start the Server
Section titled “3. Start the Server”- Open
easyshell-server/as a Gradle project - Set JDK to Java 17
- Run
EasyShellServerApplication.java - Server starts on port
18080
cd easyshell-server./gradlew bootRunThe server uses Hibernate auto-DDL — database tables are created automatically on first run.
4. Start the Web Frontend
Section titled “4. Start the Web Frontend”cd easyshell-webnpm installnpm run devThe frontend starts on http://localhost:5173 with hot module replacement enabled.
5. Build the Agent (Optional)
Section titled “5. Build the Agent (Optional)”cd easyshell-agentgo build -o easyshell-agent ./cmd/agentDevelopment Workflow
Section titled “Development Workflow”Server (Java)
Section titled “Server (Java)”cd easyshell-server
# Run with dev profile./gradlew bootRun --args='--spring.profiles.active=dev'
# Run tests./gradlew test
# Build JAR./gradlew bootJarKey directories:
| Path | Contents |
|---|---|
src/main/java/dev/easyshell/ | Application source code |
src/main/resources/ | Configuration files |
src/test/java/ | Test files |
Agent (Go)
Section titled “Agent (Go)”cd easyshell-agent
# Run locallygo run ./cmd/agent --server http://localhost:18080
# Run testsgo test ./...
# Cross-compileGOOS=linux GOARCH=amd64 go build -o bin/agent-linux-amd64 ./cmd/agentGOOS=linux GOARCH=arm64 go build -o bin/agent-linux-arm64 ./cmd/agentWeb Frontend (React)
Section titled “Web Frontend (React)”cd easyshell-web
# Development server with HMRnpm run dev
# Type checkingnpx tsc --noEmit
# Lintnpm run lint
# Build for productionnpm run buildDocumentation Site
Section titled “Documentation Site”cd easyshell-docs
# Development serverpnpm dev
# Buildpnpm build
# Preview production buildpnpm previewCode Style
Section titled “Code Style”| Component | Style Guide | Tool |
|---|---|---|
| Server (Java) | Google Java Style | Checkstyle |
| Agent (Go) | Standard Go formatting | gofmt / goimports |
| Web (TypeScript) | ESLint + Prettier | .eslintrc / .prettierrc |
Database
Section titled “Database”Development Credentials
Section titled “Development Credentials”| Field | Value |
|---|---|
| Host | localhost |
| Port | 3306 |
| Database | easyshell |
| Username | root |
| Password | root |
Reset Database
Section titled “Reset Database”# Stop and remove MySQL volumedocker compose down -vdocker compose up -dThe server recreates all tables on startup (with ddl-auto: update).
Useful Commands
Section titled “Useful Commands”# Check all services are runningdocker compose ps
# View server logsdocker compose logs -f mysql redis
# Connect to MySQLdocker compose exec mysql mysql -uroot -proot easyshell