Project Layout - struct-by-lightning/wpi-suite GitHub Wiki

WPI Suite is made up of a number of Eclipse projects that are responsible for certain pieces of functionality. The individual parts of these projects are explained in depth in Architecture Overview.

Core

The Core will be referred to often and actually contains two projects: WPISuite and WPISuite-Interfaces. These projects contain the code that is run on the server and make up the backbone of WPI Suite.

### WPISuite This is the core server project. It provides persistence, an HTTP API for clients, and allows modules to be loaded server-side in order to extend functionality. The Manager Layer where Entity Managers are registered is located in this project, along with database implementations and core User and Project functionality.

### WPISuite-Interfaces This project currently holds any files used in the core that Janeway or module projects also depend on. Many interfaces and abstract classes are in this project. Architecture Overview explains those individual components.

### Janeway This is the Swing client that end users can use to interact with the server. The "Janeway" name comes from Captain Janeway, who commands the USS Voyager, just as this client commands the WPI Suite core. Janeway also uses modules to provide extensibility. Janeway modules are loaded dynamically according to the project configuration in the core. To find out more about Janeway, see Janeway Architecture.

### Network This project is a generalized networking library used in Janeway. It allows modules to make asynchronous HTTP requests in a convenient way. Janeway configures the Network singleton at startup so that modules don't have to worry about the server URL or managing standard HTTP headers. The Network project also provides a convenient dummy server for testing purposes. To better understand the Network, see Networking with janeway.

### Module projects The repository will contain a number of module projects. Modules currently present include the PostBoard, RequirementManager and DefectTracker. Modules provide an entry point for both Janeway and the Core. Since they're located in the same project, both components can easily share functionality.