MCPcopy Index your code
hub / github.com/akvo/akvo-lumen

github.com/akvo/akvo-lumen @v0.31.0

Chat with this repo
repository ↗ · DeepWiki ↗ · release v0.31.0 ↗ · + Follow
1,383 symbols 3,006 edges 243 files 0 documented · 0%

Browse by type

Functions 1,203 Types & classes 180
What it actually does AI analysis from the code graph — generated when you open this
loading…
README

Development setup

Akvo Lumen provides a Docker Compose file to start the whole system in development mode.

This Docker Compose environment will have:

  • Two tenants
  • A KeyCloak server with some accounts setup
  • A PostgreSQL DB
  • A Backend server with a REPL
  • A Client with hot reloading
  • A Windshaft server
  • A Redis DB

Hosts

Akvo Lumen is a multi tenant system and to do enable local routing to the tenants the following hosts must be defined in your /etc/hosts file:

127.0.0.1 t1.lumen.local
127.0.0.1 t2.lumen.local
127.0.0.1 auth.lumen.local

Or just

sudo sh -c 'echo "127.0.0.1 t1.lumen.local t2.lumen.local auth.lumen.local" >> /etc/hosts'

Start development environment

Before starting the following ports that must be free: 8080, 3000, 3030, 47480, 5432

To start:

docker-compose up --build -d && docker-compose logs -f --tail=10

To stop:

docker-compose down -v

Keycloak

Keycloack is available at http://auth.lumen.local:8080/

The admin password for keycloak is "admin" / "password". There is an "akvo" realm, where two tenants (t1 & t2) and they are represesnted by the following groups:

akvo
└── lumen
    ├── t1
    │   └── admin
    └── t2
        └── admin

Available users are:

  • "lumen" service account
  • "jerome" t1 admin
  • "salim" t1 user
  • "ruth" t2 admin
  • "harry" t2 user
  • "kaj" keycloak user not on a tenant

All passwords are "password".

Client

The Akvo Lumen UI should be accessible at:

  • http://t1.lumen.local:3030/
  • http://t2.lumen.local:3030/

The Docker Compose file mounts the "client" directory, so any changes in the source directory should be picked up automatically by the Webpack server.

Tests

Run:

docker-compose exec client npm test

Backend

The tenants api root should be accessible at - http://t1.lumen.local:3000/api - http://t2.lumen.local:3000/api

Hitting that endpoint should print the tenants dns label and connection pool.

A Clojure REPL should be available on port 47480.

Puppeteer

To run the test of the puppeteer user simulator, just go to lumen main folder and run:

./ci/e2e-test.sh

Tests

To run the tests, either do it from the REPL or run:

docker-compose exec backend lein test

Postgres

To connect to the postgres server connect using something like:

psql --host=akvolumen_postgres_1 --port=5432 --dbname=lumen_tenant_1 --username=lumen --password

Windshaft

This container has a development version of the Windshaft container, with plenty of hardcoded assumptions.

The Windshaft server is not exposed directly to the external world, but it is proxied by the Webpack server on the url http://t1.lumen.local:3030/maps/**. That url forwards the requests to "windshaft:4000".

Legal

Copyright © 2016 - present Akvo Foundation

Thanks

BrowserStack is supporting Akvo, allowing us to use their service and infrastructure to test the code in this repository. Thank you for supporting the open source community!

Core symbols most depended-on inside this repo

Shape

Function 653
Method 550
Class 180

Languages

TypeScript100%

Modules by API surface

docs/js/jquery.min.js76 symbols
client/src/actions/dataset.js44 symbols
client/src/utilities/chart.js28 symbols
client/src/actions/raster.js28 symbols
client/src/components/dataset/DatasetTable.jsx27 symbols
client/src/containers/Dashboard.jsx26 symbols
client/src/containers/Visualisation.jsx23 symbols
client/src/domain/entity.js21 symbols
client/src/components/dataset/sidebars/ExtractMultiple.jsx21 symbols
client/src/components/dashboard/DashboardEditor.jsx21 symbols
client/src/components/modals/createDataset/AkvoFlowDataSourceSettings.jsx20 symbols
client/src/containers/Dataset.jsx18 symbols

Datastores touched

lumenDatabase · 1 repos

For agents

$ claude mcp add akvo-lumen \
  -- python -m otcore.mcp_server <graph>

⬇ download graph artifact

Ask about this repo answers extend the page