OneLiteFeatherNET / OneLiteFeatherNET/Voyager

feat(arch): introduce shared/api module for pure interfaces, enums and exceptions

Open
#144 0 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

P1 technic
Dominant language
Java
Stars
0
Forks
0
Avg merge
2d 21h
Merged PRs (30d)
12

Description

Context

Currently shared/common acts as both the API boundary (interfaces, enums, exceptions) and the implementation layer. ManisGame separates these cleanly into a shared/api module (zero implementations, no platform imports) and a shared/common module (implementations only).

Goal

Extract the following from shared/common into a new :shared:api Gradle module:

  • All domain interfaces (e.g. CupService, MapService, LanguageService)
  • All enums used across modules
  • All domain-specific exception classes

Acceptance Criteria

  • :shared:api module exists in settings.gradle.kts
  • shared/api has zero implementation classes
  • shared/api has no Minestom or Paper imports
  • shared/common depends on :shared:api, not the other way around
  • ArchUnit rule shared_common_must_not_use_minestom still passes
  • ADR written before any code moves

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start with settings.gradle.kts and inspect shared/common to inventory the interfaces, enums, and domain exceptions named in the issue. Write the ADR before moving code, then verify that shared/api contains no implementations or Minestom/Paper imports, shared/common depends on it, and the shared_common_must_not_use_minestom ArchUnit rule still passes.

Written by the indexing model from the issue text.

Assessment

Tech stack
java
Domain
backend
Issue type
Refactor
Difficulty
5/5
Estimated time
Over a week
Activity status
Quiet
Clarity
Mostly clear
Newbie friendliness
38/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.