Skip to content

sofianbll/Rage-UI

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

24 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

License: MIT Version Stars

View Demo · Report Bug · Request Feature

Rage UI logo

Rage UI

Local-first secrets dashboard and GitOps `.env` injector.

🇬🇧 English · 🇫🇷 Français

Table of Contents

Table of Contents
  1. What is this?
  2. Built With
  3. Quick Start
  4. How it works
  5. Configuration
  6. Docker
  7. API
  8. Project Structure
  9. Documentation
  10. Tests
  11. License
  12. Contributing

What is this?

Rage UI is a local-first web dashboard for managing shared and per-project secrets. It stores secrets as SOPS/Age-encrypted JSON files, lets you edit them from a React UI, and injects them into project .env files from templates.

Built for personal infrastructure, homelabs, and small project fleets where the same tokens or API keys are reused across several apps but should stay encrypted in Git.

graph LR
    UI[React UI] --> API[Bun + Express API]
    API --> SOPS[SOPS / Age]
    API --> Git[Git]
    SOPS --> Global[global/secrets.enc.json]
    SOPS --> Project[project/secrets.enc.json]
    Global --> Inject[Template injector]
    Project --> Inject
    Template[.env.template] --> Inject
    Inject --> Env[generated .env]
Loading

(back to top)

Built With

  • Bun — JavaScript runtime & backend
  • React — UI framework
  • Express — HTTP server
  • Vite — Frontend build tool
  • TypeScript — Backend type safety
  • SOPS — Secrets encryption
  • Docker — Container deployment
  • Playwright — E2E testing
  • Vitest — Unit testing

(back to top)

Quick Start

git clone https://github.com/Sofian-bll/Rage-UI.git
cd Rage-UI

# Backend (Bun)
cd backend && bun install && bun run server.ts

# Frontend (Vite + React) — second terminal
cd frontend && npm install && npm run dev

Backend: http://localhost:3000 · Frontend: http://localhost:5173

(back to top)

How it works

  1. Keep shared secrets in global/
  2. Define .env.template with {{GLOBAL.KEY}} and {{KEY}} placeholders
  3. Click Inject .env to merge global + local into a generated .env
  4. Sync encrypted files through Git from the UI
PROJECTS_DIR/
├── global/secrets.enc.json
├── pokedex/.env.template + secrets.enc.json
└── api_meteo/.env.template

(back to top)

Configuration

Variable Purpose Default
PROJECTS_DIR Projects directory ./projects
APP_API_KEY Optional API key for write routes unset
SOPS_AGE_KEY_FILE Age key path SOPS default

(back to top)

Docker

docker-compose up -d --build

Mounts: SOPS Age key, SSH key, projects directory.

(back to top)

API

Method Route Auth
GET /api/projects public
GET /api/secrets/:project public
POST /api/secrets/:project API key
POST /api/inject/:project API key
GET /api/git/status public
POST /api/git/sync API key

(back to top)

Project Structure

Rage-UI/
├── docs/
│   ├── assets/                (logo + screenshot)
│   ├── superpowers/           (plans & specs)
│   └── index.html             (landing page)
├── backend/
│   ├── app.ts                 (API routes)
│   ├── app.test.ts
│   ├── server.ts              (entry point)
│   ├── projects/              (sample data: api_meteo, pokedex)
│   └── secrets.json           (dev secrets)
├── e2e/
│   ├── tests/                 (app.spec.ts, screenshot.spec.ts)
│   └── playwright.config.ts
├── frontend/
│   ├── src/                   (App, editor, gitpanel, shell, settings)
│   └── vite.config.js
├── Dockerfile
├── docker-compose.yml
├── LICENSE
├── README.md
└── README.fr.md

(back to top)

Documentation

Resource Description
README.fr.md French version
docs/index.html Landing page
backend/README.md Backend notes
frontend/README.md Frontend notes

(back to top)

Tests

cd backend && bun test          # Backend
cd frontend && npm run test      # Frontend
cd e2e && npm run test           # E2E (needs backend + frontend running)

(back to top)

License

Rage UI is released under the MIT License.

(back to top)

Contributing

Issues and improvements welcome. Keep changes focused, update tests, and never commit real secrets or .env files.

Contributors

(back to top)


Star History Chart

About

Local-first secrets dashboard and GitOps .env injector — SOPS/Age encryption, React UI, Bun API

Topics

Resources

Stars

Watchers

Forks

Releases

Packages

Contributors

Languages