Skip to content

Commit 1666676

Browse files
committed
chore: implement professional github workflows and high-impact documentation
1 parent 975d6c8 commit 1666676

7 files changed

Lines changed: 289 additions & 40 deletions

File tree

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
name: Bug Report
2+
description: Report a bug to help us improve Naru
3+
labels: ["bug"]
4+
body:
5+
- type: markdown
6+
attributes:
7+
value: |
8+
Thanks for taking the time to fill out this bug report!
9+
- type: textarea
10+
id: what-happened
11+
attributes:
12+
label: What happened?
13+
description: Also tell us what you expected to happen
14+
placeholder: Describe the bug here...
15+
validations:
16+
required: true
17+
- type: textarea
18+
id: reproduction
19+
attributes:
20+
label: Steps to Reproduce
21+
description: How can we reproduce this?
22+
placeholder: |
23+
1. Run 'naru ...'
24+
2. See error...
25+
validations:
26+
required: true
27+
- type: input
28+
id: version
29+
attributes:
30+
label: Naru Version
31+
placeholder: e.g., v0.1.0
32+
validations:
33+
required: true

.github/workflows/ci.yml

Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,42 @@
1+
name: CI
2+
3+
on:
4+
push:
5+
branches: [ master, main ]
6+
pull_request:
7+
branches: [ master, main ]
8+
9+
env:
10+
CARGO_TERM_COLOR: always
11+
12+
jobs:
13+
test:
14+
name: Test & Coverage
15+
runs-on: ubuntu-latest
16+
steps:
17+
- uses: actions/checkout@v4
18+
- uses: dtolnay/rust-toolchain@stable
19+
- name: Run tests
20+
run: cargo test --verbose
21+
22+
lint:
23+
name: Rustfmt & Clippy
24+
runs-on: ubuntu-latest
25+
steps:
26+
- uses: actions/checkout@v4
27+
- uses: dtolnay/rust-toolchain@stable
28+
with:
29+
components: rustfmt, clippy
30+
- name: Check formatting
31+
run: cargo fmt --all -- --check
32+
- name: Clippy
33+
run: cargo clippy -- -D warnings
34+
35+
security_audit:
36+
name: Security Audit
37+
runs-on: ubuntu-latest
38+
steps:
39+
- uses: actions/checkout@v4
40+
- uses: rustsec/audit-check@v1.4.1
41+
with:
42+
token: ${{ secrets.GITHUB_TOKEN }}

.github/workflows/release.yml

Lines changed: 74 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,74 @@
1+
name: Release
2+
3+
on:
4+
push:
5+
tags:
6+
- 'v*'
7+
8+
jobs:
9+
build:
10+
name: Build Release Binaries
11+
strategy:
12+
matrix:
13+
include:
14+
- target: x86_64-unknown-linux-gnu
15+
os: ubuntu-latest
16+
name: naru-linux-x64
17+
- target: x86_64-apple-darwin
18+
os: macos-latest
19+
name: naru-macos-x64
20+
- target: aarch64-apple-darwin
21+
os: macos-latest
22+
name: naru-macos-arm64
23+
- target: x86_64-pc-windows-msvc
24+
os: windows-latest
25+
name: naru-windows-x64.exe
26+
27+
runs-on: ${{ matrix.os }}
28+
steps:
29+
- uses: actions/checkout@v4
30+
- uses: dtolnay/rust-toolchain@stable
31+
with:
32+
targets: ${{ matrix.target }}
33+
34+
- name: Build
35+
run: cargo build --release --target ${{ matrix.target }}
36+
37+
- name: Rename binary
38+
shell: bash
39+
run: |
40+
if [[ "${{ matrix.os }}" == "windows-latest" ]]; then
41+
mv target/${{ matrix.target }}/release/naru.exe ${{ matrix.name }}
42+
else
43+
mv target/${{ matrix.target }}/release/naru ${{ matrix.name }}
44+
fi
45+
46+
- name: Upload Artifacts
47+
uses: actions/upload-artifact@v4
48+
with:
49+
name: ${{ matrix.name }}
50+
path: ${{ matrix.name }}
51+
52+
publish:
53+
name: Create GitHub Release
54+
needs: build
55+
runs-on: ubuntu-latest
56+
permissions:
57+
contents: write
58+
steps:
59+
- uses: actions/checkout@v4
60+
- name: Download all artifacts
61+
uses: actions/download-artifact@v4
62+
- name: Release
63+
uses: softprops/action-gh-release@v2
64+
with:
65+
files: |
66+
naru-linux-x64/naru-linux-x64
67+
naru-macos-x64/naru-macos-x64
68+
naru-macos-arm64/naru-macos-arm64
69+
naru-windows-x64.exe/naru-windows-x64.exe
70+
body_path: CHANGELOG.md
71+
draft: false
72+
prerelease: false
73+
env:
74+
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}

CHANGELOG.md

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
# Changelog
2+
3+
All notable changes to this project will be documented in this file.
4+
5+
## [0.1.0] - 2026-01-25
6+
### Added
7+
- Initial release of Naru.
8+
- AES-256-GCM encryption for secret values.
9+
- Schema validation support (String, Integer, Boolean).
10+
- Multi-environment support (dev, staging, prod).
11+
- Audit logging system with sensitive value masking.
12+
- Import/Export functionality for .env, JSON, and YAML.
13+
- Interactive schema wizard.
14+
- Professional GitHub CI/CD workflows and documentation.

CONTRIBUTING.md

Lines changed: 47 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,47 @@
1+
# Contributing to Naru
2+
3+
First off, thank you for considering contributing to Naru! It's people like you that make Naru such a great tool.
4+
5+
## 🌈 Code of Conduct
6+
By participating in this project, you agree to abide by our terms. Please be respectful and professional in all interactions.
7+
8+
## 🚀 How Can I Contribute?
9+
10+
### Reporting Bugs
11+
- Use the **Bug Report** template on GitHub.
12+
- Describe the expected behavior vs actual behavior.
13+
- Include your OS and Naru version.
14+
15+
### Suggesting Enhancements
16+
- Check if the feature has already been suggested.
17+
- Provide a clear use-case for the enhancement.
18+
19+
### Pull Requests
20+
1. Fork the repo and create your branch from `master`.
21+
2. If you've added code that should be tested, add tests.
22+
3. Ensure the test suite passes (`cargo test`).
23+
4. Format your code with `cargo fmt`.
24+
5. Run `cargo clippy` to check for common mistakes.
25+
6. Issue the PR!
26+
27+
## 💻 Development Setup
28+
29+
```bash
30+
# Install Rust
31+
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
32+
33+
# Clone your fork
34+
git clone https://github.com/YOUR_USERNAME/naru.git
35+
cd naru
36+
37+
# Build and test
38+
cargo build
39+
cargo test
40+
```
41+
42+
## 📜 Style Guide
43+
- Follow standard Rust naming conventions (`snake_case` for functions/variables, `PascalCase` for types).
44+
- Use `anyhow` for application-level error handling.
45+
- Keep functions small and focused on a single responsibility.
46+
47+
Thank you for your support!

LICENSE

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
MIT License
2+
3+
Copyright (c) 2026 Luvion1
4+
5+
Permission is hereby granted, free of charge, to any person obtaining a copy
6+
of this software and associated documentation files (the "Software"), to deal
7+
in the Software without restriction, including without limitation the rights
8+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9+
copies of the Software, and to permit persons to whom the Software is
10+
furnished to do so, subject to the following conditions:
11+
12+
The above copyright notice and this permission notice shall be included in all
13+
copies or substantial portions of the Software.
14+
15+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21+
SOFTWARE.

README.md

Lines changed: 58 additions & 40 deletions
Original file line numberDiff line numberDiff line change
@@ -1,62 +1,80 @@
1-
# Naru - Secure Configuration Manager
1+
# 🛡️ Naru
22

3-
Naru is a CLI tool designed for secure, structured, and schema-aware application configuration management. It ensures the integrity of your configuration data across environments (development, staging, production) with automatic encryption and a strict auditing system.
3+
[![CI](https://github.com/Luvion1/naru/actions/workflows/ci.yml/badge.svg)](https://github.com/Luvion1/naru/actions/workflows/ci.yml)
4+
[![Release](https://github.com/Luvion1/naru/actions/workflows/release.yml/badge.svg)](https://github.com/Luvion1/naru/releases)
5+
[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)
6+
[![Rust](https://img.shields.io/badge/rust-stable-brightgreen.svg)](https://www.rust-lang.org/)
47

5-
## 🚀 Key Features
8+
**Naru** is a high-performance, security-first CLI tool for structured configuration management. Built with Rust for speed and safety, it provides an industrial-grade layer for handling sensitive environment variables and application settings with built-in schema enforcement and cryptographic protection.
69

7-
- **AES-GCM Encryption**: Automatically secures sensitive data using industry standards.
8-
- **Schema Validation**: Ensures configuration values match expected data types (string, integer, boolean) and rules (min/max).
9-
- **Multi-Environment**: Separate management for different development environments.
10-
- **Audit System**: Records every change (Set, Import, Env, Schema) with sensitive value masking.
11-
- **Flexible Import/Export**: Supports `.env`, `YAML`, and `JSON` formats.
12-
- **Interactive Wizard**: Built-in interactive schema editor for easy data rule maintenance.
10+
[Explore Documentation](./docs/architecture.md)[Report Bug](https://github.com/Luvion1/naru/issues)[Request Feature](https://github.com/Luvion1/naru/issues)
1311

14-
## 🛠️ Installation
12+
---
13+
14+
## ✨ Core Pillars
15+
16+
### 🔒 Zero-Trust Security
17+
All sensitive values are encrypted using **AES-256-GCM**. Naru ensures that secrets are never stored in plain text, even in your local configuration files.
18+
19+
### 📐 Schema-Driven Integrity
20+
Forget about runtime crashes due to missing environment variables. Naru enforces strict schema validation (types, ranges, regex) before your configuration is ever deployed.
21+
22+
### 🕵️ Immutable Auditing
23+
Every operation—from manual sets to bulk imports—is cryptographically hashed and logged. Know exactly **who** changed **what** and **when**, with sensitive data automatically masked in logs.
24+
25+
### 🔄 Seamless Interop
26+
Native support for `.env`, `YAML`, and `JSON`. Import your existing configurations and Naru will automatically upgrade them with security and validation.
1527

16-
Naru is built with Rust. Ensure you have the latest Rust toolchain installed.
28+
---
29+
30+
## 🚀 Quick Start
1731

32+
### Installation
1833
```bash
19-
# Clone the repository
34+
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
2035
git clone https://github.com/Luvion1/naru.git
2136
cd naru
22-
23-
# Build the project
2437
cargo build --release
2538
```
2639

27-
The binary will be available at `target/release/naru`.
40+
### The 60-Second Workflow
41+
1. **Initialize**: `naru init`
42+
2. **Secure Schema**: `naru schema --interactive`
43+
3. **Set Secrets**: `naru set DB_PASSWORD "p@ssword" --secret`
44+
4. **Validation Check**: `naru validate`
45+
5. **Export**: `naru export --format yaml`
2846

29-
## 📖 Usage Quick Start
47+
---
3048

31-
### 1. Initialize a Project
32-
```bash
33-
naru init
34-
```
49+
## 🛠️ Technology Stack
3550

36-
### 2. Create a Schema (Interactive)
37-
```bash
38-
naru schema --interactive
39-
```
51+
- **Core**: Rust (2024 Edition)
52+
- **Encryption**: `aes-gcm` (Authenticated Encryption)
53+
- **CLI**: `clap` v4 (Derive API)
54+
- **Serialization**: `serde` (High-performance JSON/YAML/TOML)
55+
- **Terminal UI**: `dialoguer` & `console`
4056

41-
### 3. Set a Configuration
42-
```bash
43-
naru set KEY VALUE --env production --secret
44-
```
57+
---
4558

46-
### 4. Export Configurations
47-
```bash
48-
naru export --format yaml --output config.yaml
49-
```
59+
## 📖 Deep Dive Documentation
60+
61+
| Document | Description |
62+
| :--- | :--- |
63+
| [**CLI Guide**](./docs/cli-guide.md) | Comprehensive reference for all commands and flags. |
64+
| [**Architecture**](./docs/architecture.md) | Detailed breakdown of the internal DDD-inspired design. |
65+
| [**Security Model**](./docs/security-model.md) | Technical specs on the encryption and threat model. |
66+
| [**Validation**](./docs/validation-schema.md) | How to write complex validation rules for your data. |
67+
| [**Audit System**](./docs/audit-system.md) | Understanding the tamper-evident logging system. |
68+
69+
---
70+
71+
## 🤝 Contributing
5072

51-
## 📁 Detailed Documentation
73+
We welcome contributions! Please see our [Contributing Guidelines](CONTRIBUTING.md) to get started.
5274

53-
For more in-depth information, please refer to the documents in the `docs/` directory:
75+
## 📄 License
5476

55-
1. [**CLI Reference**](./docs/cli-guide.md) - Complete command reference.
56-
2. [**Core Architecture**](./docs/architecture.md) - Internal design and structure.
57-
3. [**Security Model**](./docs/security-model.md) - Encryption and data protection details.
58-
4. [**Audit System**](./docs/audit-system.md) - How Naru tracks activities.
59-
5. [**Validation Schema**](./docs/validation-schema.md) - Creating data validation rules.
77+
Distributed under the MIT License. See `LICENSE` for more information.
6078

6179
---
62-
© 2026 Naru Project. Built for DevOps security and efficiency.
80+
<p align="center">Built with ❤️ for the DevOps community by <b>Luvion1</b></p>

0 commit comments

Comments
 (0)