A multi-language, multi-agent experimental monorepo targeting a 2026 production-grade architecture.
This repository serves as an AI-assisted engineering practice ground β combining bleeding-edge frontend tooling, enterprise Java on virtual threads, and Solana blockchain integration β all orchestrated through an agentic Cline workspace.
DeepStack is a polyglot monorepo designed to validate and refine an AI-first development workflow. It spans the full modern stack:
- A Next.js 16 client with React 19 Compiler optimizations and Solana Web3.js wallet integration
- A Spring Boot 4 backend on Java 25 (LTS) with virtual threads and a Solana Devnet observer
- PostgreSQL 16 database via Docker, with JPA/Hibernate entity mapping
- Solana on-chain programs written in Rust/Anchor
The project is structured as a research sandbox for agentic code generation, MCP tooling, and architectural pattern enforcement β with strict linting, zero-warning builds, and persona-driven subagents.
| Layer | Technology |
|---|---|
| Frontend | Next.js 16 (App Router) Β· React 19 Β· TypeScript 5.7 Β· Tailwind CSS 4 Β· Turbopack Β· Solana Wallet Adapter |
| Backend | Java 25 (LTS) Β· Spring Boot 4.x Β· Maven Β· Virtual Threads (Project Loom) |
| Database | PostgreSQL 16 (Docker) Β· Spring Data JPA Β· Hibernate 7.x |
| Blockchain | Solana Devnet Β· Web3.js Β· JDK HttpClient RPC client |
| Contract | Solana Β· Rust Β· Anchor |
| Orchestration | Cline (AI agent) Β· MCP (Model Context Protocol) Β· Claude |
The workspace defines specialized subagent personas in .claude/agents/. Each agent is a self-contained persona with domain-specific rules, constraints, and context isolation.
| Agent | Specialty | Boundary |
|---|---|---|
@ui-engineer |
Next.js 16 + React 19 + Tailwind CSS 4 components + Solana wallet | frontend/ |
@backend-architect |
Java 25 + Spring Boot 4.x services, JPA repositories, Solana RPC | backend/ |
@solana-expert |
Rust/Anchor programs, accounts, and instruction handlers | solana/ |
Mention the agent's handle in any prompt:
@ui-engineer Create a data-table component with sorting and pagination.
The system automatically adopts the corresponding persona, strict ruleset, and context boundary β preventing cross-contamination between frontend, backend, and Solana concerns.
.
βββ .clinerules # Master project memory & workflow rules
βββ .claude/
β βββ agents/ # Subagent persona definitions
β β βββ ui-engineer.md
β β βββ backend-architect.md
β β βββ solana-expert.md
β βββ skills/ # Reusable audit/analysis skills
β βββ code-critic.md
β
βββ frontend/ # Next.js 16 App Router client
β βββ src/
β β βββ app/ # Pages, layouts, API routes
β β βββ components/
β β β βββ ui/ # Reusable primitives (Button, etc.)
β β β βββ features/ # Domain components (Wallet, Memo, Theme)
β β βββ lib/ # Server actions, utilities
β βββ package.json
β βββ tsconfig.json
β βββ next.config.ts
β βββ tailwind.config.ts
β
βββ backend/ # Java 25 + Spring Boot 4.x
β βββ src/main/java/com/claudepractice/api/
β β βββ controllers/ # REST API endpoints (Health, Wallets)
β β βββ services/ # Business logic (RPC, Observers, Registry)
β β βββ repositories/ # JPA data access layer
β β βββ model/ # JPA entities (TransactionEntity)
β β βββ dto/ # Java record DTOs (HealthResponse, RegisterWalletRequest)
β βββ src/main/resources/ # application.yml, application.properties
β
βββ solana/ # Solana Rust/Anchor programs
β βββ programs/<name>/src/ # Smart contract logic
β βββ tests/ # TypeScript integration tests
β βββ migrations/ # Deployment scripts
β
βββ docker-compose.yml # PostgreSQL 16 container
βββ CLAUDE.md # (Per-directory rules files)
βββ PROGRESS.md # Sprint tracking & milestone log
βββ README.md # This file
- Infrastructure: Dockerized PostgreSQL 16 with custom roles, auto-provisioned
transactionstable via Hibernateddl-auto: update - Backend β Solana Observer:
SolanaRpcClientβ JDKHttpClient-based RPC client to Solana Devnet using Java 25 virtual threadsSolanaObserverServiceβ polls registered wallet addresses every 15s, fetches signatures, extracts transaction details, persists to PostgreSQLWalletRegistryServiceβ thread-safeConcurrentHashMap-backed registry for dynamic multi-user wallet observation
- REST API β Dynamic Wallet Registration:
POST /api/v1/wallets/activeβ register a wallet address (201 CREATED)DELETE /api/v1/wallets/activeβ unregister a wallet address (200 OK)GET /api/v1/wallets/activeβ list all active wallet addresses- No hardcoded wallet addresses β purely dynamic, frontend-driven registration
- Frontend β Solana Integration:
SolanaWalletProviderwithConnectionProvider,WalletProvider,WalletModalProviderWalletRegistrarβ auto-registers connected wallet with backend viaPOST /api/v1/wallets/activeSendMemoButtonβ constructs and sends a Solana memo transaction using@solana-program/memoHeaderβ wallet connect button with SOL balance display- Hydration mismatch fixed via dynamic import with
ssr: false
- Live Verification: Observer detected and saved Devnet transactions to PostgreSQL β E2E flow validated
- Hybrid AGENTS.md monorepo standard established:
AGENTS.md(root) β global multi-agent governance, domain boundaries, persona references, summoning protocolfrontend/AGENTS.mdβ frontend-only rules (RSC, TypeScript, Tailwind, Shadcn UI, component hierarchy)backend/AGENTS.mdβ backend-only rules (Java 25/Spring Boot 4: strict layering, DTOs as records, virtual threads, SLF4J, API contracts)
.clinerulesreferences updated fromfrontend/AGENTS.mdβAGENTS.md(root)- Clean separation of concerns: global governance at root, domain-specific rules in sub-project folders
- Java 25 / Spring Boot 4.x backend initialized with Maven wrapper
- Virtual threads enabled (
spring.threads.virtual.enabled=true) for Java 25 Loom - Health endpoint at
GET /api/v1/healthreturning{"status":"UP","engine":"Java 25 / Spring Boot 4"} - PostgreSQL 16 connected via Spring Data JPA + Hibernate 7.x
Both mvn clean compile (Java) and next build (TypeScript) compile with zero errors.
- Sessions 1β10 β β Complete (Bootstrapping through Solana-Java-Postgres Bridge)
- Docker Desktop (for PostgreSQL)
- Java 25 JDK
- Node.js 22+
- A browser wallet like Phantom (for Solana Devnet interaction)
docker compose up -dThis starts PostgreSQL 16 on port 5432 with database claudepractice, user claudepractice.
Open a terminal at the project root:
cd backend
.\mvnw.cmd spring-boot:runThe server starts on http://localhost:8080.
Verify health:
curl http://localhost:8080/api/v1/health
# β {"status":"UP","engine":"Java 25 / Spring Boot 4"}Open a separate terminal:
cd frontend
npm run devThe dev server starts on http://localhost:3000 with Turbopack.
- Open
http://localhost:3000in your browser - Click "Connect Wallet" in the header
- Approve the connection in Phantom (or your Solana wallet)
- The frontend automatically registers your wallet with the backend:
You'll see
POST /api/v1/wallets/active { "address": "your_wallet_address" }[WALLET-REGISTRAR] β Registered wallet with backendin the browser console.
- Click "Send Memo" button
- Approve the transaction in your wallet
- Watch the backend terminal for detection:
[SOLANA-OBSERVER] π’ Transaction verified and saved: {signature} (owner=..., amount=... lamports) - Verify in the database:
docker exec claudepractice-db psql -U claudepractice -d claudepractice \ -c "SELECT * FROM transactions;"
# Kill stale Java processes (if port 8080 is in use)
Get-Process -Name java | Stop-Process -Force
# Start backend with dynamic wallet registry (no env var needed)
cd backend; .\mvnw.cmd spring-boot:run
# Start frontend
cd frontend; npm run dev
# Query PostgreSQL
docker exec -it claudepractice-db psql -U claudepractice -d claudepractice
# List active wallet addresses being watched
curl http://localhost:8080/api/v1/wallets/activePrivate β experimental research sandbox for AI-assisted engineering practices.