Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions .github/ISSUE_TEMPLATE/config.yml
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
blank_issues_enabled: false
contact_links:
- name: GitHub Discussions
url: https://github.com/umesh0492/go-app-kit/discussions
url: https://github.com/Abeta-dev/go-app-kit/discussions
about: Ask questions, share architecture designs, and discuss ideas with the community.
- name: Security Vulnerability Report
url: https://github.com/umesh0492/go-app-kit/security/advisories/new
url: https://github.com/Abeta-dev/go-app-kit/security/advisories/new
about: Privately report a security vulnerability according to our security policy.
2 changes: 1 addition & 1 deletion CODE_OF_CONDUCT.md
Original file line number Diff line number Diff line change
Expand Up @@ -59,7 +59,7 @@ representative at an online or offline event.
## Enforcement

Instances of abusive, harassing, or otherwise unacceptable behavior may be
reported to the community leaders at [umesh0492@gmail.com](mailto:umesh0492@gmail.com) or via GitHub private reporting.
reported to the community leaders at [security@abeta.dev](mailto:security@abeta.dev) or via GitHub private reporting.
All complaints will be reviewed and investigated promptly and fairly.

All community leaders are obligated to respect the privacy and security of the
Expand Down
2 changes: 1 addition & 1 deletion CONTRIBUTING.md
Original file line number Diff line number Diff line change
Expand Up @@ -151,5 +151,5 @@ This removes local build binaries (`invoice_service`, `examples/invoice_service/

## 6. Need Help?

- **Questions & Discussions**: Open a [GitHub Discussion](https://github.com/umesh0492/go-app-kit/discussions) for architecture or design questions.
- **Questions & Discussions**: Open a [GitHub Discussion](https://github.com/Abeta-dev/go-app-kit/discussions) for architecture or design questions.
- **Security Inquiries**: Please consult [SECURITY.md](SECURITY.md) for our private vulnerability disclosure process. Do NOT file public issues for security vulnerabilities.
2 changes: 1 addition & 1 deletion LICENSE
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
MIT License

Copyright (c) 2026 Umesh Gupta (umesh0492)
Copyright (c) 2026 Abeta.

Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
Expand Down
8 changes: 4 additions & 4 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,15 +2,15 @@

> Current main-line published release: `v0.3.2`. The lightweight `v0.3.0` tag points to an earlier commit and remains an immutable, separate artifact. See [Release Baseline](docs/RELEASE_BASELINE.md) before selecting a release or publishing a reconciliation.

[![CI](https://github.com/umesh0492/go-app-kit/actions/workflows/ci.yml/badge.svg)](https://github.com/umesh0492/go-app-kit/actions/workflows/ci.yml)
[![CI](https://github.com/Abeta-dev/go-app-kit/actions/workflows/ci.yml/badge.svg)](https://github.com/Abeta-dev/go-app-kit/actions/workflows/ci.yml)
[![Code Quality: golangci-lint](https://img.shields.io/badge/code%20quality-golangci--lint-brightgreen?logo=go)](https://golangci-lint.run/)
[![Go Version](https://img.shields.io/badge/Go-1.26.0-00ADD8?logo=go)](https://go.dev/)
[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](LICENSE)
[![Vulnerabilities](https://img.shields.io/badge/govulncheck-0%20vulns-brightgreen)](https://pkg.go.dev/golang.org/x/vuln/cmd/govulncheck)

**Production-grade enterprise application and domain accelerator kit for Go.**

While [`go-libs`](https://github.com/umesh0492/go-libs) provides low-level, zero-dependency microservice systems engineering (resilience, concurrency pools, rate limiting, SRE golden signals), **`go-app-kit`** delivers high-velocity business capabilities: **Indian localized fintech helpers (GSTIN, PAN, IFSC, Aadhaar), transactional outbox with PostgreSQL DDL, multi-channel notifications, PDF document generation with GST invoice templates, partitioned compliance audit logging, and streaming data exports**.
While [`go-libs`](https://github.com/Abeta-dev/go-libs) provides low-level, zero-dependency microservice systems engineering (resilience, concurrency pools, rate limiting, SRE golden signals), **`go-app-kit`** delivers high-velocity business capabilities: **Indian localized fintech helpers (GSTIN, PAN, IFSC, Aadhaar), transactional outbox with PostgreSQL DDL, multi-channel notifications, PDF document generation with GST invoice templates, partitioned compliance audit logging, and streaming data exports**.

---

Expand Down Expand Up @@ -70,7 +70,7 @@ With `go.work` in place, any changes in `go-libs` are immediately reflected in `
`go-app-kit` contains no local `replace` directives. Published builds resolve `github.com/umesh0492/go-libs@v0.2.1` and `github.com/umesh0492/go-fintech-india@v0.2.3` from the Go proxy. The repository's immutable release and isolated-consumer verification are documented in [Release Baseline](docs/RELEASE_BASELINE.md).

### Concurrency Architecture & Dependency on `go-libs/workerpool`
`go-app-kit`'s asynchronous background execution in `notifications` (async multi-channel fan-out) and `audit` (asynchronous audit log ingestion) imports [`go-libs/workerpool`](https://github.com/umesh0492/go-libs/tree/main/workerpool) directly. It leverages bounded concurrency, graceful draining, panic resilience, and Prometheus saturation metrics without maintaining any duplicated forks.
`go-app-kit`'s asynchronous background execution in `notifications` (async multi-channel fan-out) and `audit` (asynchronous audit log ingestion) imports [`go-libs/workerpool`](https://github.com/Abeta-dev/go-libs/tree/main/workerpool) directly. It leverages bounded concurrency, graceful draining, panic resilience, and Prometheus saturation metrics without maintaining any duplicated forks.

---

Expand Down Expand Up @@ -127,7 +127,7 @@ pdfBuf, err := pdf.GenerateFromTemplate(pdf.GSTInvoiceTemplate, invoiceData,
---

### 3. `notifications` - Multi-Channel Notification Dispatcher
Central broker powered by bounded workerpools (adhering to the [`go-libs/workerpool`](https://github.com/umesh0492/go-libs/tree/main/workerpool) concurrency architecture) supporting sync and async delivery:
Central broker powered by bounded workerpools (adhering to the [`go-libs/workerpool`](https://github.com/Abeta-dev/go-libs/tree/main/workerpool) concurrency architecture) supporting sync and async delivery:
- **SMTP Email** (`NewEmailSender`): RFC 2822 / MIME multipart messaging (text/plain, text/html, attachments, and authentication).
- **Slack** (`NewSlackSender`): Structured Slack Webhook adapter with priority color bars (Red for Critical, Orange for High, Blue for Normal, Green for Low) and metadata fields.
- **Webhook** (`NewWebhookSender`, `VerifyWebhook`, `WebhookVerifier`): HTTP POST webhook with `X-Signature-SHA256` HMAC tamper-proofing, replay prevention via timestamp binding, and constant-time signature verification.
Expand Down
4 changes: 2 additions & 2 deletions SECURITY.md
Original file line number Diff line number Diff line change
Expand Up @@ -21,13 +21,13 @@ Instead, report vulnerabilities through one of the following confidential channe

### 1. GitHub Private Vulnerability Reporting (Preferred)
Submit a confidential advisory directly via GitHub:
- Navigate to the **Security** tab of `github.com/umesh0492/go-app-kit`.
- Navigate to the **Security** tab of `github.com/Abeta-dev/go-app-kit`.
- Click **"Report a vulnerability"** to open a private advisory draft.
- Include a description, affected package(s), minimal reproduction or proof-of-concept (PoC), and potential impact.

### 2. Direct Security Contact
If you cannot use GitHub Security Advisories, email the maintainer directly:
- **Email**: [umesh0492@gmail.com](mailto:umesh0492@gmail.com)
- **Email**: [security@abeta.dev](mailto:security@abeta.dev)
- **Subject**: `[SECURITY] go-app-kit Vulnerability Report: <Package Name>`
- Please include full reproduction steps and environment details.

Expand Down
4 changes: 2 additions & 2 deletions india/aadhaar.go
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@ var (

// ValidateAadhaar verifies that an Aadhaar number is 12 digits, does not start with 0 or 1,
// and satisfies the official UIDAI Verhoeff dihedral D5 checksum.
// Delegates statutory validation to github.com/umesh0492/go-fintech-india.
// Delegates statutory validation to Abeta go-fintech-india.
func ValidateAadhaar(aadhaar string) error {
clean := strings.ReplaceAll(strings.ReplaceAll(strings.TrimSpace(aadhaar), "-", ""), " ", "")
if len(clean) != 12 {
Expand Down Expand Up @@ -65,7 +65,7 @@ func MaskAadhaar(aadhaar string) string {
}

// FormatAadhaar formats an Aadhaar into standard 4-digit groups (e.g., "1234 5678 9012").
// Delegates formatting to github.com/umesh0492/go-fintech-india.
// Delegates formatting to Abeta go-fintech-india.
func FormatAadhaar(aadhaar string) string {
clean := strings.ReplaceAll(strings.ReplaceAll(strings.TrimSpace(aadhaar), "-", ""), " ", "")
if len(clean) != 12 {
Expand Down
4 changes: 2 additions & 2 deletions india/currency.go
Original file line number Diff line number Diff line change
Expand Up @@ -9,14 +9,14 @@ import (
// FormatINRPaise formats an exact integer amount in paise (1 INR = 100 paise)
// into Indian currency format with comma placements and two decimal digits.
// e.g. 123456789 -> "12,34,567.89", -5000 -> "-50.00"
// Delegates formatting to github.com/umesh0492/go-fintech-india.
// Delegates formatting to Abeta go-fintech-india.
func FormatINRPaise(paise int64) string {
return fintechin.FormatINR(paise)
}

// AmountToWordsINR converts an integer rupee amount into words following the Indian numbering system.
// Supports amounts up to arbitrary Crores (Crore, Lakh, Thousand, Hundred).
// Delegates word conversion to github.com/umesh0492/go-fintech-india.
// Delegates word conversion to Abeta go-fintech-india.
func AmountToWordsINR(amount int64) string {
if amount == 0 {
return "Zero Rupees Only"
Expand Down
2 changes: 1 addition & 1 deletion india/doc.go
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,6 @@
// and formatting helpers tailored for Indian enterprise SaaS and fintech workflows.
//
// Deprecated: This package is maintained solely as a backward-compatibility façade.
// Developers should import github.com/umesh0492/go-fintech-india directly for
// Developers should import the Abeta Indian fintech library directly for
// statutory Indian fintech primitives (Aadhaar, GSTIN, PAN, IFSC, etc.).
package india
2 changes: 1 addition & 1 deletion india/fy.go
Original file line number Diff line number Diff line change
Expand Up @@ -49,7 +49,7 @@ type FinancialYear struct {
// Converts timestamps to Asia/Kolkata IST location before computing calendar year, month, or day boundaries
// to prevent 5.5h/day UTC shift errors.
// In India, the Financial Year begins on April 1st and ends on March 31st.
// Delegates statutory financial year calculation to github.com/umesh0492/go-fintech-india.
// Delegates statutory financial year calculation to Abeta go-fintech-india.
func GetFinancialYear(t time.Time) FinancialYear {
tIST := t.In(istLocation)
finFY := fintechin.FYFromDate(tIST)
Expand Down
4 changes: 2 additions & 2 deletions india/gstin.go
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,7 @@ type GSTINDetails struct {
}

// ValidateGSTIN checks length, regex format, state code, and the official mod-36 checksum.
// Delegates statutory validation to github.com/umesh0492/go-fintech-india.
// Delegates statutory validation to Abeta go-fintech-india.
func ValidateGSTIN(gstin string) error {
clean := strings.ToUpper(strings.TrimSpace(gstin))
if len(clean) != 15 {
Expand Down Expand Up @@ -81,7 +81,7 @@ func ParseGSTIN(gstin string) (*GSTINDetails, error) {
}

// CalculateGSTINCheckDigit computes the official mod-36 checksum character for the first 14 chars.
// Delegates calculation to github.com/umesh0492/go-fintech-india.
// Delegates calculation to Abeta go-fintech-india.
func CalculateGSTINCheckDigit(input14 string) byte {
clean := strings.ToUpper(strings.TrimSpace(input14))
check, err := fintechin.CalculateGSTINChecksum(clean)
Expand Down
6 changes: 3 additions & 3 deletions india/ifsc.go
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@ var (
)

// ValidateIFSC checks the structural validity of an Indian Financial System Code.
// Delegates statutory validation to github.com/umesh0492/go-fintech-india.
// Delegates statutory validation to Abeta go-fintech-india.
func ValidateIFSC(code string) error {
clean := strings.ToUpper(strings.TrimSpace(code))
if len(clean) != 11 {
Expand All @@ -44,7 +44,7 @@ func IsValidIFSC(code string) bool {
}

// GetBankCode extracts the 4-letter bank identifier prefix from an IFSC code.
// Delegates extraction to github.com/umesh0492/go-fintech-india.
// Delegates extraction to Abeta go-fintech-india.
func GetBankCode(code string) (string, error) {
if err := ValidateIFSC(code); err != nil {
return "", err
Expand All @@ -54,7 +54,7 @@ func GetBankCode(code string) (string, error) {
}

// GetBranchCode extracts the 6-character branch identifier from an IFSC code.
// Delegates extraction to github.com/umesh0492/go-fintech-india.
// Delegates extraction to Abeta go-fintech-india.
func GetBranchCode(code string) (string, error) {
if err := ValidateIFSC(code); err != nil {
return "", err
Expand Down
2 changes: 1 addition & 1 deletion india/money.go
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@ var (

// Money represents a monetary value in Indian Rupees stored as an exact integer count of paise (1 INR = 100 paise).
// This eliminates IEEE-754 floating-point inaccuracies in financial and accounting operations.
// Delegates underlying monetary arithmetic to github.com/umesh0492/go-fintech-india.
// Delegates underlying monetary arithmetic to Abeta go-fintech-india.
type Money struct {
inner fintechin.Money
}
Expand Down
2 changes: 1 addition & 1 deletion india/pan.go
Original file line number Diff line number Diff line change
Expand Up @@ -41,7 +41,7 @@ type PANDetails struct {
}

// ValidatePAN verifies the structural validity of a 10-character Indian PAN card number.
// Delegates statutory validation to github.com/umesh0492/go-fintech-india.
// Delegates statutory validation to Abeta go-fintech-india.
func ValidatePAN(pan string) error {
clean := strings.ToUpper(strings.TrimSpace(pan))
if len(clean) != 10 {
Expand Down
Loading