← スキル一覧に戻る

backend-code-organisation
by sids
AI Review Bot
⭐ 0🍴 0📅 2025年11月6日
SKILL.md
name: backend-code-organisation description: Kotlin backend layering and packaging guidelines license: MIT
Mission
- Keep backend services modular: resources handle transport, managers own business logic, and data access stays isolated.
- Maintain clean dependency flow across modules (
service→core→models) to encourage reuse and testability.
Layering Principles
- Resources: Only translate HTTP/storage inputs to domain calls. No database or cross-service logic. Convert
SecurityContextearly. - Managers: Encapsulate business rules; coordinate helpers, other managers, workflows, and DAL components. Break cycles by separating read/write responsibilities or introducing controllers.
- Helpers/Services: Reusable integrations (feature flags, external clients). Centralize external service calls to simplify retries and upgrades.
- Repos/DAL/DAO: Keep database interactions single-purpose. Compose multi-step transactions in repos/DAL; keep DAO calls single query.
- Utils/Validators/Transformers: Pure functions and extensions only; avoid hidden state.
- Cache Managers: Inject Redis/Lettuce clients, expose typed
get/invalidatehelpers.
Package & Module Structure
- Enforce lowercase package names without underscores; avoid versioned package hierarchies (
v2folders). Prefermanagers.slotsovermanagers.slots.v2. - Organize by responsibility:
managers,helpers,utils,dao,workflows, etc. Mirror structure in tests. - Module boundaries:
core: managers, helpers, data access, transient models. May depend onmodels.service: Dropwizard resources, configuration, application wiring; no direct DB access.console-service: Console-specific resources/auth; depends oncore.client: Outbound clients; depend only onmodels.models: Shared API/data contracts; no dependencies.
Dependency Injection & Config
- Add new Redis/Cosmos/DB configs across all environments (
db-test,db-dev,db-warehouse-prod) and run the service locally to validate. - Annotate injectable classes with
@Singletonwhen appropriate. - Only use
@Namedwhen multiple bindings of the same type exist; otherwise default bindings suffice. - Centralize client construction in DI modules to enforce consistent timeouts and hosts.
Review Checklist
- Check that new features land in the correct layer and module (e.g., resources calling managers, not DAOs).
- Ensure helpers/managers do not introduce cyclic dependencies; suggest splitting read/write flows or using controller orchestrators.
- Verify repos/DAL enforce validation and error translation before returning data.
- Confirm new package or module names remain lowercase and idiomatic; flag attempts to create
v2package forks. - Audit DI modules for duplicate provider methods and proper scoping.
Tooling Tips
Globfor*.ktwithinservice/orcore/to inspect layer usage.ReadDI modules when new bindings appear to ensure wiring matches guidelines.Grepfor@Namedor direct DAO usage inside resources to catch misplaced logic.
スコア
総合スコア
60/100
リポジトリの品質指標に基づく評価
✓SKILL.md
SKILL.mdファイルが含まれている
+20
✓LICENSE
ライセンスが設定されている
+10
○説明文
100文字以上の説明がある
0/10
○人気
GitHub Stars 100以上
0/15
○最近の活動
3ヶ月以内に更新がある
0/10
○フォーク
10回以上フォークされている
0/5
✓Issue管理
オープンIssueが50未満
+5
✓言語
プログラミング言語が設定されている
+5
○タグ
1つ以上のタグが設定されている
0/5
レビュー
💬
レビュー機能は近日公開予定です