An open API service indexing awesome lists of open source software.

https://github.com/theoliverlear/sigwarth-software-suite

A repository for Maven, NPM, PyPI, and NuGet utility projects made by Sigwarth Software.
https://github.com/theoliverlear/sigwarth-software-suite

github-actions java-library library maven npm pip tools

Last synced: 2 months ago
JSON representation

A repository for Maven, NPM, PyPI, and NuGet utility projects made by Sigwarth Software.

Awesome Lists containing this project

README

          

# Sigwarth Software Suite ✨
## Focused libraries, better solutions. ⚡

---

Sigwarth Software Suite is a collection of Java modules that solve common
problems so you can ship faster. Each module is self‑contained and published
under the MIT License.

This repository is a Maven multi‑module project. You can use modules
individually or together.

## ⭐️ What’s inside
- Java-Suite (parent for Java libraries) 📦
- Builder-Suite — tiny factory/builder helper interfaces to standardize object construction.
- Net-Suite — simple HTTP/HTTPS utilities for fetching data with minimal setup.
- OpenAi-Suite — minimal wrappers for calling the OpenAI API using Java 11+ HttpClient.
- Spring-Boot-Suite 🌱
- Spring-Boot-Communication — small DTOs and helpers for API responses.
- Spring-Boot-Config — common Spring beans (e.g., ObjectMapper), basic security config.
- Spring-Boot-WebSocket — base WebSocket handler that parses requests and serializes responses.
- String-Suite — tiny string utilities (e.g., title case formatting). ✂️
- Npm-Suite (parent for NPM packages) 📦
- Angular-Suite — prebuilt Angular components, directives, and services (Angular 18+).
- Styles-Suite — SCSS variables, mixins, and utility classes for consistent styling.

## 🧭 Typical use cases
- Quickly add a generic WebSocket handler and focus only on your Request-to-Response logic.
- Fetch data from an HTTPS endpoint without pulling in a large HTTP client stack.
- Call OpenAI’s Chat Completions with a minimal, readable wrapper.
- Share common Spring Boot configuration across services.
- Perform simple string transformations in utilities or services.

## ✅ Why it’s handy
- Small and focused: minimal code, easy to read, easy to extend.
- Modular: depend on only what you need.
- Modern Java: builds against Java 23 (compatible with current JDKs in CI).
- MIT licensed: permissive and business‑friendly.

## 🚀 Quick start

1) Clone and build all modules locally 🛠️
- Prereqs: JDK 23+ and Maven 3.9+ 📚
- Windows PowerShell:

```
# From the repository root
mvn -T 1C -DskipTests install
```

2) Add a module to your project (example: String-Suite) ➕

- pom.xml
```

com.sigwarthsoftware
string-suite
0.0.6

```

If you prefer consuming from GitHub Packages instead of a local install, add the GitHub Packages repository to your pom.xml or settings.xml and use the same coordinates. See the parent pom for the distributionManagement configuration. 📦

3) Add an NPM package (example: @theoliverlear/styles-suite) 🧶

- .npmrc
```
@theoliverlear:registry=https://npm.pkg.github.com
```

- Install
```
npm install @theoliverlear/styles-suite
```

## 📦 Npm-Suite in detail

Npm-Suite contains production-ready packages published to GitHub Packages under the @theoliverlear scope. Below is a quick tour of what you get and how to use it.

- @theoliverlear/angular-suite — Angular components, directives, and services (Angular 18+)
- Install: `npm install @theoliverlear/angular-suite`
- Peer deps: @angular/* 18+, rxjs 7.8+, zone.js 0.15+, crypto-js
- What’s inside (selected):
- Components: `ss-anchor`, `ss-button`, `ss-footer`, `ss-head`, `ss-img`, `ss-input`, `ss-paragraph`, `ss-title`
- Directives: `[undraggable]`, `[unoptimizedImage]`
- Services: `DelayService`, `EmailValidatorService`, `HttpClientService`, `WebSocketService`
- Models: `TagType`, `ElementSize`, `ElementLink`, `TextElementLink`, `TargetType`
- Example usage:
- Module import:
```ts
import { AngularSuiteModule } from '@theoliverlear/angular-suite';

@NgModule({ imports: [AngularSuiteModule] })
export class AppModule {}
```
- ss-anchor (internal vs external links):
```ts
import { TextElementLink } from '@theoliverlear/angular-suite';
import { TargetType, TagType } from '@theoliverlear/angular-suite';

link = new TextElementLink('/dashboard', TargetType.SELF, true, 'Go to dashboard', TagType.SPAN);
// template
//
```

- @theoliverlear/styles-suite — SCSS functions and mixins for layouts and sizing
- Install: `npm install @theoliverlear/styles-suite`
- Entry: `index.scss` (Sass module system via @use/@forward)
- Mixins: `flex`, `size`, `square-size`, `basic-margin-padding`
- Functions: `calc-size`, `simple-calc`, `simplest-calc`, `simple-pixel-calc`, `add-alpha`
- Example usage (Sass):
```scss
@use "@theoliverlear/styles-suite" as ss;

.container { @include ss.flex(space-between, center, column); }
.box { @include ss.square-size(3rem); }
.title { font-size: ss.calc-size(50, 30, 0.5); }
```

## 🧩 Usage examples

- String-Suite (TitleFormatter) 🔡
```java
import com.sigwarthsoftware.string.TitleFormatter;

String once = TitleFormatter.formatTitleCase("hello world"); // "Hello world"
String words = TitleFormatter.formatTitleCases("hello big world"); // "Hello Big World"
```

- Net-Suite (ApiDataRetriever) 🌐
```java
import com.sigwarthsoftware.net.ApiDataRetriever;

ApiDataRetriever retriever = new ApiDataRetriever("https://api.github.com");
String json = retriever.getResponse();
```

- Spring-Boot-WebSocket (base handler) 🔌
```java
import com.sigwarthsoftware.springboot.websocket.WebSocketHandler;

import org.springframework.stereotype.Component;

class EchoRequest { public String message; }
class EchoResponse { public String message; }

@Component
public class EchoHandler extends WebSocketHandler {
@Override
public EchoResponse makeResponse(EchoRequest request) {
EchoResponse response = new EchoResponse();
response.message = "Echo: " + request.message;
return response;
}
}
```

- OpenAi-Suite (simple chat request) 🤖
```java
import com.sigwarthsoftware.openai.message.ApiCall;
import com.sigwarthsoftware.openai.message.ApiSettings;
import com.sigwarthsoftware.openai.model.AiModel;

ApiCall call = new ApiCall(AiModel.GPT_4, ApiSettings.DEFAULT, "Say hello");
call.fetchResponse();
String aiResponse = call.getResponse();
```
Note: Set environment variable OPENAI_KEY before running. 🔐

## 🛣️ Roadmap / Ecosystems
Beyond Java, the suite aims to provide helpers and publishing for multiple ecosystems:
- NPM (Node.js) 📦 — utilities and tooling published to the npm registry.
- PyPI (Pip) 🐍 — Python helpers available via pip install.
- NuGet (.NET) 💠 — .NET packages for common tasks.

This README will evolve as cross-language modules land. Contributions are welcome! 🙌

## 🛠️ Technology
- Language: Java 23 ☕, JavaScript (Node.js), TypeScript (Node.js), Sass (SCSS)
- Build: Maven (multi‑module reactor), GitHub Actions, Node.js
- Libraries: Spring Boot (select modules), SLF4J, Lombok, Java HttpClient
- NPM: Angular 18+, SCSS, TypeScript, RxJS, Zone.js, CryptoJS

## ❓ Questions or help
Email Oliver Lear Sigwarth (@theoliverlear): sigwarthsoftware@gmail.com 📬

## 📄 License
MIT — see the license section in the project [pom.xml](./pom.xml) for details.