chore: initialize nomadcode monorepo scaffold

This commit is contained in:
toki 2026-05-21 13:35:09 +09:00
commit 6f5e3a119f
13 changed files with 167 additions and 0 deletions

35
.gitignore vendored Normal file
View file

@ -0,0 +1,35 @@
# OS/editor
.DS_Store
.idea/
.vscode/
# Local env
.env
.env.*
!.env.example
# Logs and generated task archives
*.log
agent-task/archive/
# Node
node_modules/
dist/
coverage/
# Go
bin/*.test
*.out
# Flutter/Dart
.dart_tool/
.flutter-plugins
.flutter-plugins-dependencies
.packages
build/
# Native build outputs
DerivedData/
Pods/
*.xcworkspace/xcuserdata/
*.xcodeproj/xcuserdata/

24
README.md Normal file
View file

@ -0,0 +1,24 @@
# NomadCode
NomadCode is the monorepo for the mobile app, web console, core service, shared contracts, and agent-operation rules that coordinate AI-assisted development workflows.
## Workspace
- `apps/mobile`: Flutter client.
- `apps/web`: React/Vite web console.
- `services/core`: Go backend and orchestration service.
- `packages/contracts`: shared API contracts and generated client boundary.
- `agent-ops`: root-level rules, skills, and routing context for AI agents.
- `docs`: architecture and operations notes.
- `bin`: workspace helper commands.
## Common Commands
```sh
bin/test
bin/build
bin/lint
bin/dev
```
Each command delegates to the projects that are present in the workspace.

10
agent-ops/README.md Normal file
View file

@ -0,0 +1,10 @@
# Agent Ops
Root-level agent instructions and reusable workflows for the NomadCode monorepo.
Domain rules should describe ownership boundaries and quality gates for:
- `core`
- `web`
- `mobile`
- `contracts`

View file

@ -0,0 +1,5 @@
# Contracts Domain Rules
- Own shared schemas, OpenAPI/protobuf definitions, generated clients, and compatibility notes under `packages/contracts`.
- Contract changes should be reviewed with every affected runtime in the same branch.
- Prefer additive changes unless a coordinated breaking change is explicitly planned.

View file

@ -0,0 +1,5 @@
# Core Domain Rules
- Own backend orchestration, persistence, scheduling, workflow execution, and service adapters under `services/core`.
- Keep API behavior explicit through shared contracts when clients depend on it.
- Add or update focused Go tests for scheduler, adapter, persistence, and HTTP behavior changes.

View file

@ -0,0 +1,5 @@
# Mobile Domain Rules
- Own Flutter mobile and desktop surfaces under `apps/mobile`.
- Keep platform-specific native changes isolated and document required capabilities.
- Add widget or service tests for notification, auth, and local workflow behavior changes.

View file

@ -0,0 +1,5 @@
# Web Domain Rules
- Own browser console, project workspace, agent workspace, and backend integration under `apps/web`.
- Keep UI state predictable and align API assumptions with `packages/contracts` or `services/core`.
- Prefer focused component, store, and API-client tests as the web surface grows.

16
bin/build Executable file
View file

@ -0,0 +1,16 @@
#!/usr/bin/env bash
set -euo pipefail
root="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)"
if [ -f "$root/services/core/go.mod" ]; then
(cd "$root/services/core" && go build ./...)
fi
if [ -f "$root/apps/web/package.json" ]; then
(cd "$root/apps/web" && npm run build)
fi
if [ -f "$root/apps/mobile/pubspec.yaml" ]; then
(cd "$root/apps/mobile" && flutter build web)
fi

14
bin/dev Executable file
View file

@ -0,0 +1,14 @@
#!/usr/bin/env bash
set -euo pipefail
root="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)"
cat <<EOF
NomadCode development entrypoints:
core: cd "$root/services/core" && bin/run
web: cd "$root/apps/web" && npm run dev
mobile: cd "$root/apps/mobile" && flutter run
Start the services you need in separate terminals.
EOF

16
bin/lint Executable file
View file

@ -0,0 +1,16 @@
#!/usr/bin/env bash
set -euo pipefail
root="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)"
if [ -f "$root/services/core/go.mod" ]; then
(cd "$root/services/core" && go vet ./...)
fi
if [ -f "$root/apps/web/package.json" ]; then
(cd "$root/apps/web" && npm run lint --if-present)
fi
if [ -f "$root/apps/mobile/pubspec.yaml" ]; then
(cd "$root/apps/mobile" && flutter analyze)
fi

16
bin/test Executable file
View file

@ -0,0 +1,16 @@
#!/usr/bin/env bash
set -euo pipefail
root="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)"
if [ -f "$root/services/core/go.mod" ]; then
(cd "$root/services/core" && go test ./...)
fi
if [ -f "$root/apps/web/package.json" ]; then
(cd "$root/apps/web" && npm test -- --run)
fi
if [ -f "$root/apps/mobile/pubspec.yaml" ]; then
(cd "$root/apps/mobile" && flutter test)
fi

11
docs/monorepo.md Normal file
View file

@ -0,0 +1,11 @@
# Monorepo Layout
The workspace is organized by runtime boundary rather than by task.
- `services/core` owns orchestration, persistence, scheduling, and external model/service adapters.
- `apps/web` owns the operator console and browser-based agent workspace.
- `apps/mobile` owns the mobile and desktop Flutter surfaces.
- `packages/contracts` owns schemas shared across clients and services.
- `agent-ops` owns root agent routing, domain rules, and repeatable task workflows.
Keep feature work scoped by domain, but land cross-boundary changes in one branch when API contracts, generated clients, and UI behavior must move together.

View file

@ -0,0 +1,5 @@
# Contracts
Shared API contracts live here.
Use this package for OpenAPI specs, protobuf files, generated clients, fixtures, and compatibility notes that need to be consumed by more than one NomadCode runtime.