jupyterlab-db-explorer 0.4.0__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- jupyterlab_db_explorer-0.4.0/.claude/scheduled_tasks.lock +1 -0
- jupyterlab_db_explorer-0.4.0/.claude/settings.local.json +25 -0
- jupyterlab_db_explorer-0.4.0/.claude/skills/data4now-design/README.md +293 -0
- jupyterlab_db_explorer-0.4.0/.claude/skills/data4now-design/SKILL.md +28 -0
- jupyterlab_db_explorer-0.4.0/.claude/skills/data4now-design/assets/data4now-logo.png +0 -0
- jupyterlab_db_explorer-0.4.0/.claude/skills/data4now-design/assets/divider-teal-magenta.png +0 -0
- jupyterlab_db_explorer-0.4.0/.claude/skills/data4now-design/assets/logo-gpsdd.png +0 -0
- jupyterlab_db_explorer-0.4.0/.claude/skills/data4now-design/assets/logo-sdsn.png +0 -0
- jupyterlab_db_explorer-0.4.0/.claude/skills/data4now-design/assets/logo-statin.png +0 -0
- jupyterlab_db_explorer-0.4.0/.claude/skills/data4now-design/assets/logo-un-desa-full.png +0 -0
- jupyterlab_db_explorer-0.4.0/.claude/skills/data4now-design/assets/logo-un-desa-statistics.png +0 -0
- jupyterlab_db_explorer-0.4.0/.claude/skills/data4now-design/assets/logo-undp.png +0 -0
- jupyterlab_db_explorer-0.4.0/.claude/skills/data4now-design/assets/logo-worldbank.png +0 -0
- jupyterlab_db_explorer-0.4.0/.claude/skills/data4now-design/assets/partner-gpsdd.png +0 -0
- jupyterlab_db_explorer-0.4.0/.claude/skills/data4now-design/assets/partner-statin.png +0 -0
- jupyterlab_db_explorer-0.4.0/.claude/skills/data4now-design/assets/partner-undesa-full.png +0 -0
- jupyterlab_db_explorer-0.4.0/.claude/skills/data4now-design/assets/partner-undesa.png +0 -0
- jupyterlab_db_explorer-0.4.0/.claude/skills/data4now-design/colors_and_type.css +369 -0
- jupyterlab_db_explorer-0.4.0/.claude/skills/data4now-design/fonts/README.md +13 -0
- jupyterlab_db_explorer-0.4.0/.claude/skills/data4now-design/preview/badges.html +36 -0
- jupyterlab_db_explorer-0.4.0/.claude/skills/data4now-design/preview/buttons.html +34 -0
- jupyterlab_db_explorer-0.4.0/.claude/skills/data4now-design/preview/cards.html +26 -0
- jupyterlab_db_explorer-0.4.0/.claude/skills/data4now-design/preview/colors-brand.html +24 -0
- jupyterlab_db_explorer-0.4.0/.claude/skills/data4now-design/preview/colors-medallion.html +30 -0
- jupyterlab_db_explorer-0.4.0/.claude/skills/data4now-design/preview/colors-neutrals.html +32 -0
- jupyterlab_db_explorer-0.4.0/.claude/skills/data4now-design/preview/colors-semantic.html +26 -0
- jupyterlab_db_explorer-0.4.0/.claude/skills/data4now-design/preview/doc-callouts.html +224 -0
- jupyterlab_db_explorer-0.4.0/.claude/skills/data4now-design/preview/doc-page.html +370 -0
- jupyterlab_db_explorer-0.4.0/.claude/skills/data4now-design/preview/duotone-hero.html +22 -0
- jupyterlab_db_explorer-0.4.0/.claude/skills/data4now-design/preview/forms.html +27 -0
- jupyterlab_db_explorer-0.4.0/.claude/skills/data4now-design/preview/iconography.html +39 -0
- jupyterlab_db_explorer-0.4.0/.claude/skills/data4now-design/preview/logo.html +36 -0
- jupyterlab_db_explorer-0.4.0/.claude/skills/data4now-design/preview/pipeline-flow.html +31 -0
- jupyterlab_db_explorer-0.4.0/.claude/skills/data4now-design/preview/radii.html +25 -0
- jupyterlab_db_explorer-0.4.0/.claude/skills/data4now-design/preview/section-header.html +25 -0
- jupyterlab_db_explorer-0.4.0/.claude/skills/data4now-design/preview/shadows.html +24 -0
- jupyterlab_db_explorer-0.4.0/.claude/skills/data4now-design/preview/spacing-scale.html +29 -0
- jupyterlab_db_explorer-0.4.0/.claude/skills/data4now-design/preview/tables.html +344 -0
- jupyterlab_db_explorer-0.4.0/.claude/skills/data4now-design/preview/type-body.html +25 -0
- jupyterlab_db_explorer-0.4.0/.claude/skills/data4now-design/preview/type-display.html +24 -0
- jupyterlab_db_explorer-0.4.0/.claude/skills/data4now-design/preview/type-mono.html +29 -0
- jupyterlab_db_explorer-0.4.0/.copier-answers.yml +14 -0
- jupyterlab_db_explorer-0.4.0/.devcontainer/.env +4 -0
- jupyterlab_db_explorer-0.4.0/.devcontainer/.env.sample +13 -0
- jupyterlab_db_explorer-0.4.0/.devcontainer/Dockerfile +162 -0
- jupyterlab_db_explorer-0.4.0/.devcontainer/README.md +100 -0
- jupyterlab_db_explorer-0.4.0/.devcontainer/devcontainer.json +60 -0
- jupyterlab_db_explorer-0.4.0/.devcontainer/docker-compose.yaml +104 -0
- jupyterlab_db_explorer-0.4.0/.devcontainer/init-postgres/01-sample-data.sql +31 -0
- jupyterlab_db_explorer-0.4.0/.devcontainer/init-starrocks/01-sample-data.sql +39 -0
- jupyterlab_db_explorer-0.4.0/.devcontainer/trino-catalog/postgresql.properties +4 -0
- jupyterlab_db_explorer-0.4.0/.devcontainer/trino-catalog/tpcds.properties +1 -0
- jupyterlab_db_explorer-0.4.0/.devcontainer/trino-catalog/tpch.properties +1 -0
- jupyterlab_db_explorer-0.4.0/.gitattributes +1 -0
- jupyterlab_db_explorer-0.4.0/.gitignore +130 -0
- jupyterlab_db_explorer-0.4.0/.prettierignore +7 -0
- jupyterlab_db_explorer-0.4.0/.vscode/debug.env +13 -0
- jupyterlab_db_explorer-0.4.0/.vscode/launch.json +56 -0
- jupyterlab_db_explorer-0.4.0/.vscode/settings.json +8 -0
- jupyterlab_db_explorer-0.4.0/.yarnrc.yml +2 -0
- jupyterlab_db_explorer-0.4.0/CHANGELOG.md +28 -0
- jupyterlab_db_explorer-0.4.0/LICENSE +29 -0
- jupyterlab_db_explorer-0.4.0/PKG-INFO +457 -0
- jupyterlab_db_explorer-0.4.0/README.md +378 -0
- jupyterlab_db_explorer-0.4.0/RELEASE.md +110 -0
- jupyterlab_db_explorer-0.4.0/babel.config.js +1 -0
- jupyterlab_db_explorer-0.4.0/conftest.py +8 -0
- jupyterlab_db_explorer-0.4.0/evolutions.txt +0 -0
- jupyterlab_db_explorer-0.4.0/install.json +5 -0
- jupyterlab_db_explorer-0.4.0/jest.config.js +36 -0
- jupyterlab_db_explorer-0.4.0/jupyter-config/nb-config/jupyterlab-db-explorer.json +7 -0
- jupyterlab_db_explorer-0.4.0/jupyter-config/server-config/jupyterlab-db-explorer.json +7 -0
- jupyterlab_db_explorer-0.4.0/jupyterlab_db_explorer/__init__.py +31 -0
- jupyterlab_db_explorer-0.4.0/jupyterlab_db_explorer/_version.py +4 -0
- jupyterlab_db_explorer-0.4.0/jupyterlab_db_explorer/const.py +49 -0
- jupyterlab_db_explorer-0.4.0/jupyterlab_db_explorer/db.py +345 -0
- jupyterlab_db_explorer-0.4.0/jupyterlab_db_explorer/engine.py +828 -0
- jupyterlab_db_explorer-0.4.0/jupyterlab_db_explorer/handlers.py +363 -0
- jupyterlab_db_explorer-0.4.0/jupyterlab_db_explorer/labextension/package.json +285 -0
- jupyterlab_db_explorer-0.4.0/jupyterlab_db_explorer/labextension/schemas/jupyterlab-db-explorer/package.json.orig +280 -0
- jupyterlab_db_explorer-0.4.0/jupyterlab_db_explorer/labextension/schemas/jupyterlab-db-explorer/plugin.json +8 -0
- jupyterlab_db_explorer-0.4.0/jupyterlab_db_explorer/labextension/static/202.ec233cfb6cc343efc6ad.js +1 -0
- jupyterlab_db_explorer-0.4.0/jupyterlab_db_explorer/labextension/static/216.19e3e4ed0474dfd21302.js +1 -0
- jupyterlab_db_explorer-0.4.0/jupyterlab_db_explorer/labextension/static/491.97e62561c8f1cab4d325.js +1 -0
- jupyterlab_db_explorer-0.4.0/jupyterlab_db_explorer/labextension/static/591.a043d09f38182ef57613.js +1 -0
- jupyterlab_db_explorer-0.4.0/jupyterlab_db_explorer/labextension/static/713.2c04f3ab79b65d2c33a6.js +1 -0
- jupyterlab_db_explorer-0.4.0/jupyterlab_db_explorer/labextension/static/747.d5e370ec12c94a60a63c.js +1 -0
- jupyterlab_db_explorer-0.4.0/jupyterlab_db_explorer/labextension/static/932.b30fee4043181b58d103.js +1 -0
- jupyterlab_db_explorer-0.4.0/jupyterlab_db_explorer/labextension/static/remoteEntry.c30f65e645898e0a5a58.js +1 -0
- jupyterlab_db_explorer-0.4.0/jupyterlab_db_explorer/labextension/static/style.js +4 -0
- jupyterlab_db_explorer-0.4.0/jupyterlab_db_explorer/labextension/static/third-party-licenses.json +70 -0
- jupyterlab_db_explorer-0.4.0/jupyterlab_db_explorer/result_session.py +612 -0
- jupyterlab_db_explorer-0.4.0/jupyterlab_db_explorer/serializer.py +41 -0
- jupyterlab_db_explorer-0.4.0/jupyterlab_db_explorer/task.py +239 -0
- jupyterlab_db_explorer-0.4.0/jupyterlab_db_explorer/tests/__init__.py +1 -0
- jupyterlab_db_explorer-0.4.0/jupyterlab_db_explorer/tests/test_cursor_pagination.py +312 -0
- jupyterlab_db_explorer-0.4.0/jupyterlab_db_explorer/tests/test_handlers.py +114 -0
- jupyterlab_db_explorer-0.4.0/jupyterlab_db_explorer/tests/test_jwt_auth.py +283 -0
- jupyterlab_db_explorer-0.4.0/jupyterlab_db_explorer/tests/test_sort_filter.py +126 -0
- jupyterlab_db_explorer-0.4.0/jupyterlab_db_explorer/tests/test_sqlite.py +63 -0
- jupyterlab_db_explorer-0.4.0/jupyterlab_db_explorer/tests/test_utils.py +47 -0
- jupyterlab_db_explorer-0.4.0/jupyterlab_db_explorer/tests/test_vault.py +177 -0
- jupyterlab_db_explorer-0.4.0/package.json +280 -0
- jupyterlab_db_explorer-0.4.0/preview.gif +0 -0
- jupyterlab_db_explorer-0.4.0/pyproject.toml +101 -0
- jupyterlab_db_explorer-0.4.0/schema/plugin.json +8 -0
- jupyterlab_db_explorer-0.4.0/screenshot.png +0 -0
- jupyterlab_db_explorer-0.4.0/setup.py +1 -0
- jupyterlab_db_explorer-0.4.0/src/JpServices.ts +15 -0
- jupyterlab_db_explorer-0.4.0/src/SqlWidget.tsx +70 -0
- jupyterlab_db_explorer-0.4.0/src/__tests__/dialect.spec.ts +121 -0
- jupyterlab_db_explorer-0.4.0/src/__tests__/formatter.spec.ts +64 -0
- jupyterlab_db_explorer-0.4.0/src/__tests__/jupyterlab-db-explorer.spec.ts +9 -0
- jupyterlab_db_explorer-0.4.0/src/__tests__/lazyTableModel.spec.ts +220 -0
- jupyterlab_db_explorer-0.4.0/src/__tests__/model.spec.ts +148 -0
- jupyterlab_db_explorer-0.4.0/src/__tests__/treeModel.spec.ts +264 -0
- jupyterlab_db_explorer-0.4.0/src/cmd_menu.ts +49 -0
- jupyterlab_db_explorer-0.4.0/src/components/ActionBtn.tsx +38 -0
- jupyterlab_db_explorer-0.4.0/src/components/ask_pass.tsx +113 -0
- jupyterlab_db_explorer-0.4.0/src/components/dbTree.tsx +1123 -0
- jupyterlab_db_explorer-0.4.0/src/components/loading.tsx +7 -0
- jupyterlab_db_explorer-0.4.0/src/components/new_conn.tsx +1145 -0
- jupyterlab_db_explorer-0.4.0/src/components/sqlPanel.tsx +72 -0
- jupyterlab_db_explorer-0.4.0/src/components/styles.ts +36 -0
- jupyterlab_db_explorer-0.4.0/src/components/treeModel.ts +0 -0
- jupyterlab_db_explorer-0.4.0/src/handler.ts +293 -0
- jupyterlab_db_explorer-0.4.0/src/icons.ts +116 -0
- jupyterlab_db_explorer-0.4.0/src/index.ts +148 -0
- jupyterlab_db_explorer-0.4.0/src/interfaces.ts +143 -0
- jupyterlab_db_explorer-0.4.0/src/model.ts +501 -0
- jupyterlab_db_explorer-0.4.0/src/react-window.d.ts +1 -0
- jupyterlab_db_explorer-0.4.0/src/sqlConsole/ColumnProfileHeader.ts +515 -0
- jupyterlab_db_explorer-0.4.0/src/sqlConsole/ResultsTable.ts +172 -0
- jupyterlab_db_explorer-0.4.0/src/sqlConsole/Table.ts +283 -0
- jupyterlab_db_explorer-0.4.0/src/sqlConsole/columnHeaderPopover.tsx +300 -0
- jupyterlab_db_explorer-0.4.0/src/sqlConsole/completer.ts +86 -0
- jupyterlab_db_explorer-0.4.0/src/sqlConsole/console.ts +372 -0
- jupyterlab_db_explorer-0.4.0/src/sqlConsole/customDialects.ts +230 -0
- jupyterlab_db_explorer-0.4.0/src/sqlConsole/dialect.ts +142 -0
- jupyterlab_db_explorer-0.4.0/src/sqlConsole/docs.ts +1068 -0
- jupyterlab_db_explorer-0.4.0/src/sqlConsole/editor.ts +209 -0
- jupyterlab_db_explorer-0.4.0/src/sqlConsole/formatter.ts +41 -0
- jupyterlab_db_explorer-0.4.0/src/sqlConsole/index.ts +1 -0
- jupyterlab_db_explorer-0.4.0/src/sqlConsole/lazyTableModel.ts +332 -0
- jupyterlab_db_explorer-0.4.0/src/sqlConsole/snippets.ts +138 -0
- jupyterlab_db_explorer-0.4.0/src/sqlConsole/toolbar.tsx +218 -0
- jupyterlab_db_explorer-0.4.0/src/svg.d.ts +13 -0
- jupyterlab_db_explorer-0.4.0/style/base.css +5 -0
- jupyterlab_db_explorer-0.4.0/style/d4n-completer.css +99 -0
- jupyterlab_db_explorer-0.4.0/style/d4n-form.css +864 -0
- jupyterlab_db_explorer-0.4.0/style/d4n-results.css +647 -0
- jupyterlab_db_explorer-0.4.0/style/d4n-tree.css +773 -0
- jupyterlab_db_explorer-0.4.0/style/db-icons/apachehive.svg +1 -0
- jupyterlab_db_explorer-0.4.0/style/db-icons/microsoftsqlserver.svg +1 -0
- jupyterlab_db_explorer-0.4.0/style/db-icons/mysql.svg +8 -0
- jupyterlab_db_explorer-0.4.0/style/db-icons/oracle.svg +1 -0
- jupyterlab_db_explorer-0.4.0/style/db-icons/postgresql.svg +1 -0
- jupyterlab_db_explorer-0.4.0/style/db-icons/sqlite.svg +1 -0
- jupyterlab_db_explorer-0.4.0/style/db-icons/starrocks.svg +12 -0
- jupyterlab_db_explorer-0.4.0/style/db-icons/trino.svg +1 -0
- jupyterlab_db_explorer-0.4.0/style/icons/column.svg +1 -0
- jupyterlab_db_explorer-0.4.0/style/icons/conn-add.svg +1 -0
- jupyterlab_db_explorer-0.4.0/style/icons/conn.svg +1 -0
- jupyterlab_db_explorer-0.4.0/style/icons/delete.svg +1 -0
- jupyterlab_db_explorer-0.4.0/style/icons/error.svg +1 -0
- jupyterlab_db_explorer-0.4.0/style/icons/hive.svg +1 -0
- jupyterlab_db_explorer-0.4.0/style/icons/mysql.svg +1 -0
- jupyterlab_db_explorer-0.4.0/style/icons/oracle.svg +1 -0
- jupyterlab_db_explorer-0.4.0/style/icons/pgsql.svg +1 -0
- jupyterlab_db_explorer-0.4.0/style/icons/query.svg +1 -0
- jupyterlab_db_explorer-0.4.0/style/icons/root.svg +1 -0
- jupyterlab_db_explorer-0.4.0/style/icons/sql.svg +1 -0
- jupyterlab_db_explorer-0.4.0/style/icons/sql_script.svg +1 -0
- jupyterlab_db_explorer-0.4.0/style/icons/sqlite.svg +1 -0
- jupyterlab_db_explorer-0.4.0/style/icons/sqlserver.svg +1 -0
- jupyterlab_db_explorer-0.4.0/style/icons/starrocks.svg +4 -0
- jupyterlab_db_explorer-0.4.0/style/icons/table.svg +1 -0
- jupyterlab_db_explorer-0.4.0/style/icons/trino.svg +4 -0
- jupyterlab_db_explorer-0.4.0/style/icons/view.svg +1 -0
- jupyterlab_db_explorer-0.4.0/style/index.css +5 -0
- jupyterlab_db_explorer-0.4.0/style/index.js +4 -0
- jupyterlab_db_explorer-0.4.0/tsconfig.json +25 -0
- jupyterlab_db_explorer-0.4.0/tsconfig.test.json +6 -0
- jupyterlab_db_explorer-0.4.0/ui-tests/README.md +167 -0
- jupyterlab_db_explorer-0.4.0/ui-tests/jupyter_server_test_config.py +12 -0
- jupyterlab_db_explorer-0.4.0/ui-tests/package.json +15 -0
- jupyterlab_db_explorer-0.4.0/ui-tests/playwright.config.js +14 -0
- jupyterlab_db_explorer-0.4.0/ui-tests/tests/jupyterlab-db-explorer.spec.ts +23 -0
- jupyterlab_db_explorer-0.4.0/ui-tests/yarn.lock +4236 -0
- jupyterlab_db_explorer-0.4.0/webpack.partial.config.js +15 -0
- jupyterlab_db_explorer-0.4.0/yarn.lock +11783 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"sessionId":"aefbd20c-fc74-4d9b-853f-41f0d0152b79","pid":48857,"procStart":"7315673","acquiredAt":1779054779409}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
{
|
|
2
|
+
"permissions": {
|
|
3
|
+
"allow": [
|
|
4
|
+
"Read",
|
|
5
|
+
"Write",
|
|
6
|
+
"Edit",
|
|
7
|
+
"MultiEdit",
|
|
8
|
+
"Glob",
|
|
9
|
+
"Grep",
|
|
10
|
+
"LS",
|
|
11
|
+
"Task",
|
|
12
|
+
"WebFetch",
|
|
13
|
+
"WebSearch",
|
|
14
|
+
"TodoWrite",
|
|
15
|
+
"Bash(*)",
|
|
16
|
+
"mcp__docfork__search_docs",
|
|
17
|
+
"mcp__docfork__fetch_doc",
|
|
18
|
+
"Read(//home/jupyter/.claude/plans/**)",
|
|
19
|
+
"Bash(mkdir -p /home/jupyter/.claude/plans/)",
|
|
20
|
+
"Skill(memsearch:memory-recall)"
|
|
21
|
+
]
|
|
22
|
+
},
|
|
23
|
+
"enableAllProjectMcpServers": true,
|
|
24
|
+
"enabledMcpjsonServers": ["docfork", "brave-search"]
|
|
25
|
+
}
|
|
@@ -0,0 +1,293 @@
|
|
|
1
|
+
# Data4Now Design System
|
|
2
|
+
|
|
3
|
+
A foundation for designing **production interfaces, decks, and prototypes** in the Data4Now visual language.
|
|
4
|
+
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
## Who is Data4Now?
|
|
8
|
+
|
|
9
|
+
**Data4Now** is a data-architecture and statistics-modernization consultancy. Their work helps **National Statistical Offices (NSOs) and government data agencies** move off ad-hoc spreadsheet workflows onto modern, on-premises data lakes — Apache NiFi, MinIO, Trino, Apache Airflow, JupyterHub, all stitched together with Active Directory and Kubernetes.
|
|
10
|
+
|
|
11
|
+
The deck we received (`uploads/D4N-STATIN-Datalake-Architecture.pptx`) is a worked example: a proposed datalake architecture for **STATIN — the Statistical Institute of Jamaica** — covering ingestion, medallion-storage zones (Raw → Anonymized → Staging → Aggregated → Archive), federation, orchestration, and how the lake plugs into existing Nutanix/Veeam/SQL Server infrastructure without rip-and-replace.
|
|
12
|
+
|
|
13
|
+
The brand sits at the intersection of **public-sector trust** and **modern data tooling**. It needs to read as serious enough for a UN/World Bank partner room and clear enough for a working ministry IT team.
|
|
14
|
+
|
|
15
|
+
### Partners visible in the source deck
|
|
16
|
+
|
|
17
|
+
- **Statistical Institute of Jamaica (STATIN)** — client in this engagement
|
|
18
|
+
- **United Nations DESA Statistics**
|
|
19
|
+
- **The World Bank**
|
|
20
|
+
- **Global Partnership for Sustainable Development Data**
|
|
21
|
+
- **Sustainable Development Solutions Network**
|
|
22
|
+
|
|
23
|
+
These are referenced as ecosystem partners — useful context for understanding tone and audience, not part of the Data4Now brand itself.
|
|
24
|
+
|
|
25
|
+
### Surfaces this system covers
|
|
26
|
+
|
|
27
|
+
1. **Slide decks** — client-facing technical proposals (the primary output we have evidence of).
|
|
28
|
+
2. **Web/marketing surface** — implied by the standalone logo, but not provided. UI kit included is a _plausible_ recreation flagged below.
|
|
29
|
+
3. **Internal tooling** — could be built on these tokens; no direct evidence in source.
|
|
30
|
+
|
|
31
|
+
> ⚠️ **Source-fidelity caveat.** The only authoritative material we received is the logo PNG and one PPTX deck. The marketing-site UI kit in `ui_kits/website/` is therefore an **inferred reconstruction** built from the visual DNA of those two assets — not a recreation of an existing site. Please flag corrections.
|
|
32
|
+
|
|
33
|
+
---
|
|
34
|
+
|
|
35
|
+
## Sources
|
|
36
|
+
|
|
37
|
+
| Path | What it is |
|
|
38
|
+
| ----------------------------------------------- | ------------------------------------------------------------------------------ |
|
|
39
|
+
| `uploads/datafornow_logos-original.png` | Original full-color logo (transparent PNG, 960×675) |
|
|
40
|
+
| `uploads/D4N-STATIN-Datalake-Architecture.pptx` | 20-slide technical proposal — primary source for tone, layout, and color usage |
|
|
41
|
+
| `assets/pptx-media/` | Images extracted from the PPTX (cover art, partner logos, diagrams) |
|
|
42
|
+
| `assets/data4now-logo.png` | Working copy of the logo |
|
|
43
|
+
|
|
44
|
+
No Figma file, no codebase, no website URL was provided. If you have any of those, please attach them via the Import menu so we can raise this from "informed inference" to "verified recreation."
|
|
45
|
+
|
|
46
|
+
---
|
|
47
|
+
|
|
48
|
+
## CONTENT FUNDAMENTALS — how Data4Now writes
|
|
49
|
+
|
|
50
|
+
Tone is observed from the STATIN deck: confident technical consulting, not marketing fluff. Voice is **plain-spoken expert**, not breathless or buzzword-heavy.
|
|
51
|
+
|
|
52
|
+
### Voice characteristics
|
|
53
|
+
|
|
54
|
+
- **Plain English, not jargon-laden.** When jargon must appear (NiFi, Trino, ODBC), it is named once and immediately translated. Example from the deck: _"Trino federates queries to SQL Server and MariaDB via ODBC/JDBC."_ The reader is treated as competent but not assumed to know every product name.
|
|
55
|
+
- **Direct, declarative sentences.** Short. Verb-first when possible. Example: _"No data is copied. Trino pushes filters down to each source and merges results in memory."_
|
|
56
|
+
- **Problem → solution framing.** Almost every slide pairs a "Today" pain point with a "Tomorrow" answer. Example: _"Today: admin manually checks SFTP, downloads, renames, moves to folder"_ → followed by a numbered NiFi pipeline that automates it. Replicate this structure in marketing copy and case studies.
|
|
57
|
+
- **Comparative language.** "Replaces:" callouts are used heavily. Each component card answers _what does this remove from your life?_
|
|
58
|
+
- **No hype words.** No "revolutionary," "AI-powered," "next-gen," "seamless." If you find yourself reaching for one, name the concrete capability instead.
|
|
59
|
+
- **Plural "we" / second-person "you."** The deck speaks _to_ the client: _"the data lake complements your current infrastructure"_, _"connecting to your existing systems"_. Use "you" for clients, "we" for Data4Now, "they" for downstream stakeholders.
|
|
60
|
+
|
|
61
|
+
### Casing rules
|
|
62
|
+
|
|
63
|
+
- **Sentence case** for almost all UI labels, body, and slide bullet text.
|
|
64
|
+
- **Title Case** only for slide titles and section headers (e.g. "Current Challenges & Opportunities", "Data Organization: Medallion Architecture").
|
|
65
|
+
- **UPPERCASE** sparingly — for eyebrow labels above slide titles, status pills, and table headers. Wide letter-spacing required when uppercase.
|
|
66
|
+
- **PRODUCT NAMES** are written exactly as the vendor writes them: `MinIO` (not Minio), `JupyterHub`, `JupyterLab`, `Apache NiFi`, `Apache Airflow`, `Trino`, `Veeam`, `Nutanix`, `MariaDB`, `Kubernetes`, `SQL Server`, `Active Directory`.
|
|
67
|
+
- **ACRONYMS** stay all-caps and unspaced: `STATIN`, `NSO`, `CPI`, `SFTP`, `JDBC`, `ODBC`, `RBAC`, `DAG`, `MDA`, `SDMX`, `RAW/ANONYMIZED/STAGING/AGGREGATED/ARCHIVE` (the medallion zones are styled all-caps in the deck).
|
|
68
|
+
|
|
69
|
+
### Punctuation & symbols
|
|
70
|
+
|
|
71
|
+
- **Em dashes** with spaces (`word — word`) for parenthetical asides. Used heavily.
|
|
72
|
+
- **Arrow glyphs** to show pipeline flow: `→` between data zones, `▶` to step through DAGs, `▼` between vertical stages. These are an _intentional motif_ — keep them.
|
|
73
|
+
- **Bullet markers** in source decks use `·` or plain bullets. Avoid emoji bullets.
|
|
74
|
+
- **Ampersand** is fine in headings (`Versioning & Volume Backup`); avoid in body.
|
|
75
|
+
- **Colons** introduce examples and lists. Used naturally.
|
|
76
|
+
|
|
77
|
+
### Vocabulary anchors (terms to keep using)
|
|
78
|
+
|
|
79
|
+
**Pipeline** · **Federate** · **Ingest** · **Provenance** · **Medallion** (Raw/Anonymized/Staging/Aggregated/Archive) · **Orchestration** · **DAG** · **Bucket** · **Schema** · **Single source of truth** · **No rip-and-replace** · **Audit trail** · **Backfill** · **Notebook** · **Statistician** · **Ministry** · **Agency**
|
|
80
|
+
|
|
81
|
+
### What to avoid
|
|
82
|
+
|
|
83
|
+
- **No emoji** in the brand voice. The PPTX has none. Don't introduce any.
|
|
84
|
+
- **No exclamation points.**
|
|
85
|
+
- **No "magic" / "delightful" / "beautifully" / "gorgeously"** language. Data4Now is selling _trustworthy infrastructure_, not delight.
|
|
86
|
+
- **No "leverage", "synergy", "stakeholder alignment"** McKinsey-speak. The voice is engineer-meets-statistician, not management consultant.
|
|
87
|
+
- **No first-person singular ("I").** Always plural or institutional.
|
|
88
|
+
|
|
89
|
+
### Worked sample — the same idea in three contexts
|
|
90
|
+
|
|
91
|
+
| Surface | Example |
|
|
92
|
+
| ---------------- | ------------------------------------------------------------------------------------------ |
|
|
93
|
+
| Slide bullet | _"Trino federates SQL Server + MariaDB + MinIO — one query, no exports."_ |
|
|
94
|
+
| Marketing hero | _"Query every database you already have. From one place. With the SQL you already write."_ |
|
|
95
|
+
| Case-study quote | _"We replaced six weeks of CSV-juggling with a single SELECT statement."_ |
|
|
96
|
+
|
|
97
|
+
---
|
|
98
|
+
|
|
99
|
+
## VISUAL FOUNDATIONS
|
|
100
|
+
|
|
101
|
+
### Color philosophy
|
|
102
|
+
|
|
103
|
+
The brand runs on **three colors plus a cool-neutral spine**:
|
|
104
|
+
|
|
105
|
+
- **Navy `#0F3D6E`** is the workhorse — letterforms, headlines, primary buttons, dense text. The deck uses it as the dominant ink color.
|
|
106
|
+
- **Teal `#1FA0A0`** is structural support — section dividers, secondary CTAs, the "FOR" pillar in the wordmark. It carries the _flow / pipeline_ metaphor.
|
|
107
|
+
- **Magenta `#E63558`** is the **single point of emphasis** — used the way the pie wedge is used in the logo: small, intentional, never decorative. Reserve for the one thing on a slide / page that matters most.
|
|
108
|
+
|
|
109
|
+
Never blend all three in equal weight. A typical slide is ~70% navy/neutral, ~20% teal supporting, ~10% magenta accent (often only one element).
|
|
110
|
+
|
|
111
|
+
The cool neutral spine (`--d4n-paper` → `--d4n-fog` → `--d4n-mist` → `--d4n-slate` → `--d4n-graphite` → `--d4n-ink`) is biased slightly toward navy, not pure gray. This keeps surfaces feeling related to the brand even with no chromatic color in view.
|
|
112
|
+
|
|
113
|
+
**Status colors** (`success`, `warning`, `danger`, `info`) are tuned to coexist with brand: danger reuses the magenta (so it doesn't introduce a fourth accent hue), info reuses teal. Success and warning are introduced fresh but desaturated so they don't shout.
|
|
114
|
+
|
|
115
|
+
**Pipeline colors** (raw / anonymized / staging / aggregated / archive) are a domain-specific scale — bronze/silver/gold conventions from the medallion architecture pattern, but desaturated to fit the brand's cool tone.
|
|
116
|
+
|
|
117
|
+
### Typography
|
|
118
|
+
|
|
119
|
+
- **Display / headings:** Montserrat — geometric, slightly condensed feel, the same family used for the wordmark itself. Weights 600/700.
|
|
120
|
+
- **Body:** Roboto — neutral, highly legible at small sizes, familiar to readers of government and academic material. Weights 400/500.
|
|
121
|
+
- **Mono:** JetBrains Mono — for code samples, file paths, SQL.
|
|
122
|
+
|
|
123
|
+
Display is set **tight** (line-height 1.12–1.28, letter-spacing slightly negative) for confident headlines. Body is set **relaxed** (line-height 1.5–1.65) for readability of dense technical content. Eyebrow labels use **wide tracking + uppercase** — a strong recognizable signature.
|
|
124
|
+
|
|
125
|
+
### Backgrounds
|
|
126
|
+
|
|
127
|
+
- **No gradients** as a default. The PPTX is almost entirely flat color.
|
|
128
|
+
- **No hand-drawn illustrations.**
|
|
129
|
+
- **No repeating patterns / textures** — keep surfaces clean.
|
|
130
|
+
- **Duotone photography** is permitted as a hero device. The cover slide demonstrates it: a real photograph (industrial / civic / landscape) split or overlaid in two of the brand colors (teal + magenta). Use sparingly — title slide, section openers, occasional case-study hero.
|
|
131
|
+
- **Full-bleed flat-color sections** in navy or paper-cream are the standard background pattern. Alternate them for vertical rhythm.
|
|
132
|
+
|
|
133
|
+
### Animation
|
|
134
|
+
|
|
135
|
+
- **Fades + small translates only.** 200–320ms with `cubic-bezier(0.2, 0, 0.1, 1)`.
|
|
136
|
+
- **No bouncy / spring** animations. The brand is technical, not playful.
|
|
137
|
+
- **No parallax** on scroll.
|
|
138
|
+
- Pipeline diagrams may animate with a _flow_ — arrows or zone-fills sequencing left-to-right — but only on user demand (hover / click), not autoplay.
|
|
139
|
+
|
|
140
|
+
### Hover & press states
|
|
141
|
+
|
|
142
|
+
- **Buttons & primary CTAs:** hover darkens the fill ~10% (use `--d4n-navy-deep`, `--d4n-teal-deep`, `--d4n-magenta-deep`); pressed darkens further and translates 1px on Y.
|
|
143
|
+
- **Links:** hover shifts color from `--fg-link` (teal-deep) to `--d4n-magenta`. This is one of the few places magenta appears as a non-emphasis element.
|
|
144
|
+
- **Cards & rows:** hover lifts shadow from `sm` to `md` and slightly raises (`translateY(-2px)`); no border color change.
|
|
145
|
+
- **Icon buttons:** hover background `--d4n-fog`; pressed background `--d4n-mist`.
|
|
146
|
+
- **Disabled:** opacity 0.5, cursor `not-allowed`, no hover effect.
|
|
147
|
+
|
|
148
|
+
### Borders & dividers
|
|
149
|
+
|
|
150
|
+
- **Standard hairline:** 1px solid `--border-1` (`--d4n-fog`).
|
|
151
|
+
- **Stronger card border:** 1px solid `--border-2` (`--d4n-mist`).
|
|
152
|
+
- **Sectional dividers:** 2px solid `--d4n-teal` for visual emphasis.
|
|
153
|
+
- **Focus rings:** 3px `rgba(31,160,160,0.30)` (teal at 30% alpha) — never blue browser default.
|
|
154
|
+
|
|
155
|
+
### Shadow system
|
|
156
|
+
|
|
157
|
+
Cool-tinted, shifted toward navy not pure black:
|
|
158
|
+
|
|
159
|
+
- `--shadow-xs` — input fields at rest
|
|
160
|
+
- `--shadow-sm` — cards at rest
|
|
161
|
+
- `--shadow-md` — cards on hover, dropdowns
|
|
162
|
+
- `--shadow-lg` — modals, popovers
|
|
163
|
+
- `--shadow-xl` — full-screen overlays, key callouts
|
|
164
|
+
- `--shadow-focus` — teal focus halo
|
|
165
|
+
|
|
166
|
+
No inner shadows by default. Avoid the dribbble "neumorphic" double-shadow look.
|
|
167
|
+
|
|
168
|
+
### Cards & containers
|
|
169
|
+
|
|
170
|
+
The default card pattern:
|
|
171
|
+
|
|
172
|
+
```
|
|
173
|
+
background: white
|
|
174
|
+
border: 1px solid var(--d4n-mist)
|
|
175
|
+
border-radius: var(--r-lg) /* 10px */
|
|
176
|
+
shadow: var(--shadow-sm)
|
|
177
|
+
padding: var(--sp-6) /* 24px */
|
|
178
|
+
```
|
|
179
|
+
|
|
180
|
+
For **emphasis cards** (hero stats, key takeaways), elevate to navy fill with white text and _no border_. For **subtle cards** (in dense lists), drop shadow and use only `border: 1px solid var(--border-1)` plus `var(--bg-page)` background.
|
|
181
|
+
|
|
182
|
+
### Capsules / pills
|
|
183
|
+
|
|
184
|
+
Status pills, tags, and labels use `border-radius: var(--r-pill)`, with a colored background at ~10% alpha and text at full saturation. e.g. `background: var(--status-info-bg); color: var(--status-info)`.
|
|
185
|
+
|
|
186
|
+
### Corner radii
|
|
187
|
+
|
|
188
|
+
- `4px` — input fields, small buttons, code chips
|
|
189
|
+
- `6px` — buttons, default UI
|
|
190
|
+
- `10px` — cards, panels (the most-used radius)
|
|
191
|
+
- `16px` — hero blocks, large feature cards
|
|
192
|
+
- `pill` — status badges, tags
|
|
193
|
+
|
|
194
|
+
Never circular except for avatars and round icon buttons.
|
|
195
|
+
|
|
196
|
+
### Layout rules
|
|
197
|
+
|
|
198
|
+
- **12-column grid** at 1280px max width for desktop content.
|
|
199
|
+
- **Header height fixed** at 64px.
|
|
200
|
+
- **Generous vertical rhythm** between sections — 96px (`--sp-24`) on desktop, 64px (`--sp-16`) on tablet.
|
|
201
|
+
- **Slide content** is set on a 1920×1080 canvas with a strong left/right margin (96–120px) and a clear "title strip" at the top.
|
|
202
|
+
- Slide titles get a consistent **left-aligned eyebrow + title pattern** plus a small horizontal teal rule under the eyebrow.
|
|
203
|
+
|
|
204
|
+
### Transparency & blur
|
|
205
|
+
|
|
206
|
+
Used **rarely**. Acceptable cases:
|
|
207
|
+
|
|
208
|
+
- Sticky header with `backdrop-filter: blur(12px)` and `background: rgba(255,255,255,0.85)` — the only place blur appears in the system.
|
|
209
|
+
- Duotone photo overlays — solid-color rectangles at 75–85% opacity over the photo.
|
|
210
|
+
|
|
211
|
+
No frosted-glass cards. No semi-transparent buttons.
|
|
212
|
+
|
|
213
|
+
### Imagery vibe
|
|
214
|
+
|
|
215
|
+
- **Cool color grading** preferred — slight desaturation, no warm filters.
|
|
216
|
+
- **Real photography** of civic/industrial/landscape subjects — never stock-photo office laptops.
|
|
217
|
+
- **Duotone treatment** in brand colors (teal + magenta) is the signature device for hero images. Reference: PPTX cover slide.
|
|
218
|
+
- **Black & white** imagery is acceptable for portrait headshots.
|
|
219
|
+
- No stylized 3D renders, no gradients-as-imagery, no AI-looking abstract shapes.
|
|
220
|
+
|
|
221
|
+
---
|
|
222
|
+
|
|
223
|
+
## ICONOGRAPHY
|
|
224
|
+
|
|
225
|
+
The source deck does **not** use a consistent icon library — most "icons" are actually small product logos (Apache NiFi feather, MinIO logo, Trino bunny, JupyterHub planet) and number badges. Where decorative icons appear, they tend to be **monochrome line icons** in navy or teal at consistent stroke weight.
|
|
226
|
+
|
|
227
|
+
### Approach
|
|
228
|
+
|
|
229
|
+
- **Vendor / product logos** ship as PNGs in `assets/product-logos/` (extracted from the PPTX). Use them at their native form when referencing a specific tool.
|
|
230
|
+
- **Generic UI icons** use **Lucide** via CDN — outline style, 1.5–2px stroke, rounded line caps. Lucide is closest in spirit to the deck's monochrome line treatment.
|
|
231
|
+
|
|
232
|
+
```html
|
|
233
|
+
<script src="https://unpkg.com/lucide@latest"></script>
|
|
234
|
+
<i data-lucide="database" class="d4n-icon"></i>
|
|
235
|
+
<script>
|
|
236
|
+
lucide.createIcons();
|
|
237
|
+
</script>
|
|
238
|
+
```
|
|
239
|
+
|
|
240
|
+
- **Stroke weight** standard: 1.75px. Set via `stroke-width` on `<svg>` or pass `--lucide-stroke-width: 1.75` if using the loader.
|
|
241
|
+
- **Sizes:** 16, 20, 24, 32. Use 20 as default in body UI.
|
|
242
|
+
- **Color:** `currentColor` — icons inherit the surrounding text color. Default to `--fg-2`.
|
|
243
|
+
- **Pipeline / flow glyphs** — `→`, `▶`, `▼`, `·` — are typographic, not iconographic. Keep them as Unicode characters; they're part of the brand's content style.
|
|
244
|
+
|
|
245
|
+
### Substitution flag
|
|
246
|
+
|
|
247
|
+
⚠️ Lucide is a **substitute**, not a verified Data4Now choice. If Data4Now uses (or wants to standardize on) Heroicons, Phosphor, Material Symbols, or a custom set, swap accordingly and update this section.
|
|
248
|
+
|
|
249
|
+
### Emoji
|
|
250
|
+
|
|
251
|
+
**Not used.** The brand voice is technical/civic; emoji would undermine it. Do not introduce them in slides, marketing, or product copy.
|
|
252
|
+
|
|
253
|
+
### Logo & wordmark
|
|
254
|
+
|
|
255
|
+
The wordmark is the primary brand mark. Three components:
|
|
256
|
+
|
|
257
|
+
1. The **DATA / NOW** stacked navy letterforms (tightly set, condensed).
|
|
258
|
+
2. The **vertical "FOR" pillar** in teal between them.
|
|
259
|
+
3. The **pie-chart "O"** in the word "NOW" — navy with a magenta wedge.
|
|
260
|
+
|
|
261
|
+
Do not separate these into individual marks. The pie wedge is the only place magenta appears in the logo and should not be re-colored.
|
|
262
|
+
|
|
263
|
+
Logo files in `assets/`:
|
|
264
|
+
|
|
265
|
+
- `data4now-logo.png` — full color, transparent background
|
|
266
|
+
|
|
267
|
+
Clearspace: equal to the height of the "F" in "FOR" on all sides. Minimum on-screen width: 120px. Minimum print width: 1 inch.
|
|
268
|
+
|
|
269
|
+
---
|
|
270
|
+
|
|
271
|
+
## INDEX — what's in this folder
|
|
272
|
+
|
|
273
|
+
| Path | Purpose |
|
|
274
|
+
| -------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------- |
|
|
275
|
+
| `README.md` | This file — start here |
|
|
276
|
+
| `SKILL.md` | Agent-Skills-compatible loader |
|
|
277
|
+
| `colors_and_type.css` | All design tokens — colors, type, spacing, radii, shadows, motion |
|
|
278
|
+
| `fonts/` | Font notes (Montserrat + Roboto loaded from Google Fonts) |
|
|
279
|
+
| `assets/data4now-logo.png` | Primary wordmark |
|
|
280
|
+
| `assets/product-logos/` | Vendor logos referenced in materials (NiFi, MinIO, Trino, etc.) |
|
|
281
|
+
| `assets/pptx-media/` | Raw images extracted from the source deck |
|
|
282
|
+
| `preview/` | Design-system specimen cards (one HTML file per token group) — incl. `tables.html`, `doc-callouts.html`, `doc-page.html` for DOCX-style document work |
|
|
283
|
+
| `slides/` | Slide templates — `index.html` + per-layout JSX components, modeled on the STATIN deck |
|
|
284
|
+
| `ui_kits/website/` | Inferred marketing-site UI kit (homepage hero, features, pricing-style sections, footer) |
|
|
285
|
+
| `uploads/` | Original user-supplied files (don't edit) |
|
|
286
|
+
|
|
287
|
+
---
|
|
288
|
+
|
|
289
|
+
## How to use this system
|
|
290
|
+
|
|
291
|
+
- **For decks:** start from `slides/index.html` — it loads `colors_and_type.css` and the slide templates. Pick a layout, fill in content, swap imagery from `assets/pptx-media/` or supply your own.
|
|
292
|
+
- **For marketing surfaces:** start from `ui_kits/website/index.html`. Components live as JSX modules — import what you need.
|
|
293
|
+
- **For tokens in any new file:** `<link rel="stylesheet" href="path/to/colors_and_type.css">` and use the CSS variables. Don't hardcode hex values.
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: data4now-design
|
|
3
|
+
description: Use this skill to generate well-branded interfaces and assets for Data4Now, either for production or throwaway prototypes/mocks/etc. Contains essential design guidelines, colors, type, fonts, assets, and UI kit components for prototyping.
|
|
4
|
+
user-invocable: true
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
Read the README.md file within this skill, and explore the other available files.
|
|
8
|
+
|
|
9
|
+
If creating visual artifacts (slides, mocks, throwaway prototypes, etc), copy assets out and create static HTML files for the user to view. If working on production code, you can copy assets and read the rules here to become an expert in designing with this brand.
|
|
10
|
+
|
|
11
|
+
If the user invokes this skill without any other guidance, ask them what they want to build or design, ask some questions, and act as an expert designer who outputs HTML artifacts _or_ production code, depending on the need.
|
|
12
|
+
|
|
13
|
+
## Quick map
|
|
14
|
+
|
|
15
|
+
- `README.md` — full system docs (content fundamentals, visual foundations, iconography)
|
|
16
|
+
- `colors_and_type.css` — design tokens (always link this in new HTML)
|
|
17
|
+
- `slides/index.html` — 8 slide templates with `<deck-stage>` host
|
|
18
|
+
- `ui_kits/website/index.html` — marketing-site components
|
|
19
|
+
- `assets/` — logo, partner logos, hero photo, architecture diagrams
|
|
20
|
+
- `preview/` — specimen cards (one per token group)
|
|
21
|
+
|
|
22
|
+
## Brand at a glance
|
|
23
|
+
|
|
24
|
+
- **Colors:** Navy `#0F3D6E` (primary), Teal `#1FA0A0` (structural), Magenta `#E63558` (single point of emphasis only).
|
|
25
|
+
- **Type:** Montserrat (display) · Roboto (body) · JetBrains Mono (code) — all Google Fonts.
|
|
26
|
+
- **Voice:** Plain-spoken expert. Problem → solution framing. No emoji, no hype words, no exclamation marks. "Replaces:" callouts. Em dashes with spaces. Pipeline arrows (`→ ▶ ▼`) as a content motif.
|
|
27
|
+
- **Audience:** National Statistical Offices, government data agencies, public-sector IT teams.
|
|
28
|
+
- **Don't:** invent gradients, use bouncy animations, introduce a fourth accent color, mix all three brand colors at equal weight.
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
jupyterlab_db_explorer-0.4.0/.claude/skills/data4now-design/assets/logo-un-desa-statistics.png
ADDED
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|