Skip to content

Latest commit

 

History

3 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

FutureScope

FutureScope is a lightweight technology radar for teams that need to record, review and explain technology choices. It stores radar entries in CSV and keeps configuration, access rules, discussions and audit data in readable files.

FutureScope wordmark

What it does

  • Shows radars in Zalando-style, ThoughtWorks-style and sortable table views.
  • Supports one to eight sectors, configurable rings, captions, keys and sector filters.
  • Provides pan, zoom, fullscreen and presentation controls for dense radars.
  • Lets editors add, change and remove blips from a form or the table.
  • Provides undo and redo in table view.
  • Adds threaded discussions, resolution state and an audit trail without mixing comments with blip data.
  • Gives each user read, comment or edit access to each radar.
  • Exports radar data as CSV and diagrams as PNG or SVG.

ThoughtWorks-style FutureScope radar with rings, sectors, and blips

The ThoughtWorks-style view makes each sector and adoption ring easy to scan during a planning discussion.

FutureScope captions mode showing explanatory text for radar regions

Captions mode explains the purpose of sectors and rings directly on the radar, so people do not need a separate guide to interpret it.

FutureScope table mode showing sortable radar entries

Table mode turns the same radar into a sortable, editable list for reviewing fields, filtering entries, and making precise updates.

FutureScope radar selector showing multiple managed radars

Teams can manage several radars in one workspace and switch between them without losing each radar's independent settings and history.

The Tech

The server is the current multi-user runtime. It supports local accounts, Google/OIDC sign-in, server-side sessions, user administration and file persistence. The standalone build stores its working state in IndexedDB; Git sync, invitations and review publication are not connected yet. It runs with the Go server or as an in-progress standalone browser build.

Data

Each radar is a CSV file. Its required columns are:

id,name,sector,ring
1,PostgreSQL,Data,Adopt

FutureScope preserves extra columns. Import sample-fintech-ai-tech-radar.csv from the dashboard to try it.

Server state has this layout:

data/
  futurescope.json
  radars/*.csv
  audit/**

Run only one server process against a data directory.

Build prerequisites

FutureScope requires:

  • Go 1.25 or later (the version declared in go.mod)
  • Node.js 24 or later and its bundled npm
  • Git, when you want to clone the repository or push changes to GitHub

On macOS, run the interactive setup script. It prints every detected tool and asks before installing or upgrading anything through Homebrew:

./setup.sh

Then install the locked JavaScript dependencies and build the server web bundle before building the Go executable:

npm ci
npm --prefix web ci
npm run build:shared
npm --prefix web run build
go build -o build/futurescope ./cmd/futurescope

The standalone browser artifact is built separately with npm run build:standalone.

An optional container build requires Docker Desktop with its daemon running:

docker build -t futurescope .

Repository hygiene

The repository tracks source code, tests, configuration, documentation, images used by the documentation, and both package-lock.json files. It deliberately does not track installed dependencies, generated binaries or web bundles, runtime data, secrets, or test and visual-audit output. These paths are covered by .gitignore, so a clean clone is prepared with the prerequisite and build commands above.

Run locally

For local development, start with authentication disabled:

./build/futurescope serve --data-dir ./data --dev-open

Open http://127.0.0.1:8080. Development-open mode accepts only loopback connections unless you also pass --allow-insecure-dev-network.

To use local accounts, initialise a fresh data directory and follow the password prompt:

./build/futurescope init --data-dir ./local-data --admin-user admin
./build/futurescope serve --data-dir ./local-data

Useful server options are:

Option Purpose
--data-dir Select the configuration, radar and audit directory.
--listen Set a port such as 8080, or an advanced host:port address. Omitting it listens locally on port 8080.
--public-url Set the browser-visible base URL used by OIDC.
--tls-cert, --tls-key Serve HTTPS; both must be set.

Configure Google sign-in

Create a Google OAuth web client. For the default local address, register this redirect URI:

http://127.0.0.1:8080/api/v1/auth/oidc/google/callback

Then start the server with its client credentials:

export FUTURESCOPE_GOOGLE_CLIENT_ID='your-client-id.apps.googleusercontent.com'
export FUTURESCOPE_GOOGLE_CLIENT_SECRET='your-client-secret'
./build/futurescope serve \
  --data-dir ./local-data \
  --public-url http://127.0.0.1:8080

Do not commit the client secret. Outside loopback, authenticated installations need an HTTPS public URL. Configure other OIDC providers in futurescope.json while the server is stopped. Load their secrets from an environment variable or file.

Standalone build

Build the plain-file version:

npm run build:standalone

Open web/dist-standalone/index.html directly. The built folder does not require Node.js or a FutureScope server on the user's computer. For local UI work without authentication, add ?dev-open=1 to its file URL.

Google sign-in from file:// still needs live provider verification. The standalone completion plan does not assume a hosted service or deployment.

Test

npm run test:shared
npm --prefix web test
npm run build:standalone
go test ./...

Design and status

About

A technology radar for teams to map, discuss and review technology choices, with several views, access controls, audit log, CSV storage, and PNG/SVG export

Topics

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages