Skip to content

lbdudc/variablens

Repository files navigation

VariaBlens

Manage and analyse Feature Models written in Universal Variability Language (UVL).

  • Import FMs from UVLHub or upload them locally
  • Edit models in a Monaco editor with UVL syntax highlighting
  • Chat with an AI assistant to run analysis via the Flamapy MCP — dead features, satisfiability, configurations count, and more
  • Switch between AI providers (Claude, OpenAI, Ollama) from within the app

Built with Vue 3 + Node.js. GitHub OAuth for authentication.

Author: Víctor Lamas — victor.lamas@udc.es · Live demo: variablens.lbd.org.es

VariaBlens app screenshot


Setup

1. Prerequisites

  • Node.js ≥ 18 (or Docker)
  • A GitHub OAuth App for login

Create the GitHub OAuth App

  1. Go to github.com/settings/developersNew OAuth App
  2. Homepage URL: http://localhost:5173
  3. Authorization callback URL: http://localhost:3000/auth/github/callback
  4. Save the Client ID and Client Secret

2. Server env

cd server
cp .env.example .env.local

Fill in server/.env.local:

Variable Value
GITHUB_CLIENT_ID From your OAuth App
GITHUB_CLIENT_SECRET From your OAuth App
JWT_SECRET Any random string ≥ 32 characters
UVLHUB_API_KEY Your UVLHub account API key (optional — only needed for UVLHub import)

AI provider keys (Anthropic, OpenAI, Ollama) are configured inside the app after login — no env setup needed.


3. Run locally

Server

cd server
npm install
npm run dev

Client

cd client
npm install
npm run dev

App → http://localhost:5173 · API → http://localhost:3000


4. Docker Compose

# server/.env.local must be filled in (step 2)
docker compose up --build

App → http://localhost:5173


5. Production

Server

cd server
cp .env.example .env.prod
# set NODE_ENV=production, FRONTEND_URL to your domain

Client

cd client
cp .env.example .env.prod
# set VITE_BACKEND_URL to your production domain
npm run build -- --mode prod

Env file reference

server/
├── .env          # Base defaults — ports, URLs (gitignored)
├── .env.local    # Your dev secrets — overrides .env (gitignored)
├── .env.example  # Template ✅ committed
└── .env.prod     # Production secrets (gitignored)
client/
├── .env          # Vite URLs for local dev (gitignored)
├── .env.example  # Template ✅ committed
└── .env.prod     # Production URLs (gitignored)

The server loads server/.env then server/.env.local on top (server/dotenvLoad.js).

About

UVL feature model manager with AI-powered analysis. Import from UVLHub or locally, edit models, and chat with Flamapy MCP to detect dead features, check satisfiability, and more.

Resources

License

Stars

Watchers

Forks

Packages

 
 
 

Contributors