├── .devcontainer
└── devcontainer.json
├── .evidence
└── customization
│ └── custom-formatting.json
├── .gitignore
├── .npmrc
├── .vscode
└── extensions.json
├── README.md
├── degit.json
├── evidence.config.yaml
├── package-lock.json
├── package.json
├── pages
└── index.md
├── scripts
└── update-evidence-packages.js
└── sources
└── needful_things
├── connection.yaml
├── needful_things.duckdb
└── orders.sql
/.devcontainer/devcontainer.json:
--------------------------------------------------------------------------------
1 | {
2 | // This file is only used in Codespaces. If you are developing locally, you can remove the .devcontainer directory without consequences
3 |
4 | "image": "mcr.microsoft.com/devcontainers/javascript-node:0-20-bullseye",
5 |
6 | "hostRequirements": {
7 | "cpus": 4,
8 | "memory": "4gb",
9 | "storage": "32gb"
10 | },
11 |
12 | // Use 'postCreateCommand' to run commands after the container is created.
13 | "postCreateCommand": "rm .vscode/extensions.json && rmdir .vscode",
14 | // Configure tool-specific properties
15 | "customizations": {
16 | "vscode": {
17 | "extensions": [
18 | // "GitHub.codespaces",
19 | "evidence.evidence-vscode",
20 | "svelte.svelte-vscode"
21 | ]
22 | }
23 | }
24 | // "forwardPorts": [3000]
25 | }
26 | // For format details, see https://aka.ms/devcontainer.json. For config options, see the
27 | // README at: https://github.com/devcontainers/templates/tree/main/src/python
28 |
--------------------------------------------------------------------------------
/.evidence/customization/custom-formatting.json:
--------------------------------------------------------------------------------
1 | {
2 | "version": "1.0",
3 | "customFormats": []
4 | }
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | .evidence/template
2 | .svelte-kit
3 | build
4 | node_modules
5 | .DS_Store
6 | static/data
7 | *.options.yaml
8 | .vscode/settings.json
9 | .env
10 | .evidence/meta
11 |
--------------------------------------------------------------------------------
/.npmrc:
--------------------------------------------------------------------------------
1 | loglevel=error
2 | audit=false
3 | fund=false
4 |
--------------------------------------------------------------------------------
/.vscode/extensions.json:
--------------------------------------------------------------------------------
1 | {
2 | "recommendations": [
3 | "evidence.evidence-vscode"
4 | ]
5 | }
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # Evidence Template Project
2 |
3 | ## Using Codespaces
4 |
5 | If you are using this template in Codespaces, click the `Start Evidence` button in the bottom status bar. This will install dependencies and open a preview of your project in your browser - you should get a popup prompting you to open in browser.
6 |
7 | Or you can use the following commands to get started:
8 |
9 | ```bash
10 | npm install
11 | npm run sources
12 | npm run dev -- --host 0.0.0.0
13 | ```
14 |
15 | See [the CLI docs](https://docs.evidence.dev/cli/) for more command information.
16 |
17 | **Note:** Codespaces is much faster on the Desktop app. After the Codespace has booted, select the hamburger menu → Open in VS Code Desktop.
18 |
19 | ## Get Started from VS Code
20 |
21 | The easiest way to get started is using the [VS Code Extension](https://marketplace.visualstudio.com/items?itemName=Evidence.evidence-vscode):
22 |
23 |
24 |
25 | 1. Install the extension from the VS Code Marketplace
26 | 2. Open the Command Palette (Ctrl/Cmd + Shift + P) and enter `Evidence: New Evidence Project`
27 | 3. Click `Start Evidence` in the bottom status bar
28 |
29 | ## Get Started using the CLI
30 |
31 | ```bash
32 | npx degit evidence-dev/template my-project
33 | cd my-project
34 | npm install
35 | npm run sources
36 | npm run dev
37 | ```
38 |
39 | Check out the docs for [alternative install methods](https://docs.evidence.dev/getting-started/install-evidence) including Docker, Github Codespaces, and alongside dbt.
40 |
41 |
42 |
43 | ## Learning More
44 |
45 | - [Docs](https://docs.evidence.dev/)
46 | - [Github](https://github.com/evidence-dev/evidence)
47 | - [Slack Community](https://slack.evidence.dev/)
48 | - [Evidence Home Page](https://www.evidence.dev)
49 |
--------------------------------------------------------------------------------
/degit.json:
--------------------------------------------------------------------------------
1 | [
2 | {
3 | "action": "remove",
4 | "files": [
5 | ".devcontainer",
6 | ".github",
7 | "scripts"
8 | ]
9 | }
10 | ]
--------------------------------------------------------------------------------
/evidence.config.yaml:
--------------------------------------------------------------------------------
1 | appearance:
2 | default: system
3 | switcher: true
4 |
5 | theme:
6 | colorPalettes:
7 | default:
8 | light:
9 | - "#236aa4"
10 | - "#45a1bf"
11 | - "#a5cdee"
12 | - "#8dacbf"
13 | - "#85c7c6"
14 | - "#d2c6ac"
15 | - "#f4b548"
16 | - "#8f3d56"
17 | - "#71b9f4"
18 | - "#46a485"
19 | dark:
20 | - "#236aa4"
21 | - "#45a1bf"
22 | - "#a5cdee"
23 | - "#8dacbf"
24 | - "#85c7c6"
25 | - "#d2c6ac"
26 | - "#f4b548"
27 | - "#8f3d56"
28 | - "#71b9f4"
29 | - "#46a485"
30 | colorScales:
31 | default:
32 | light:
33 | - "#ADD8E6"
34 | - "#00008B"
35 | dark:
36 | - "#ADD8E6"
37 | - "#00008B"
38 | colors:
39 | primary:
40 | light: "#2563eb"
41 | dark: "#3b82f6"
42 | accent:
43 | light: "#c2410c"
44 | dark: "#fdba74"
45 | base:
46 | light: "#ffffff"
47 | dark: "#09090b"
48 | info:
49 | light: "#0284c7"
50 | dark: "#38bdf8"
51 | positive:
52 | light: "#16a34a"
53 | dark: "#4ade80"
54 | warning:
55 | light: "#f8c900"
56 | dark: "#fbbf24"
57 | negative:
58 | light: "#dc2626"
59 | dark: "#f87171"
60 |
61 | plugins:
62 | components:
63 | # This loads all of evidence's core charts and UI components
64 | # You probably don't want to edit this dependency unless you know what you are doing
65 | "@evidence-dev/core-components": {}
66 |
67 | datasources:
68 | # You can add additional datasources here by adding npm packages.
69 | # Make to also add them to `package.json`.
70 | "@evidence-dev/bigquery": { }
71 | "@evidence-dev/csv": { }
72 | "@evidence-dev/databricks": { }
73 | "@evidence-dev/duckdb": { }
74 | "@evidence-dev/mssql": { }
75 | "@evidence-dev/mysql": { }
76 | "@evidence-dev/postgres": { }
77 | "@evidence-dev/source-javascript": { }
78 | "@evidence-dev/snowflake": { }
79 | "@evidence-dev/sqlite": { }
80 | "@evidence-dev/trino": { }
81 | "@evidence-dev/motherduck": { }
82 |
--------------------------------------------------------------------------------
/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "my-evidence-project",
3 | "version": "0.0.1",
4 | "scripts": {
5 | "build": "evidence build",
6 | "build:strict": "evidence build:strict",
7 | "dev": "evidence dev --open /",
8 | "test": "evidence build",
9 | "sources": "evidence sources",
10 | "sources:strict": "evidence sources --strict",
11 | "preview": "evidence preview"
12 | },
13 | "engines": {
14 | "npm": ">=7.0.0",
15 | "node": ">=18.0.0"
16 | },
17 | "type": "module",
18 | "dependencies": {
19 | "@evidence-dev/bigquery": "^2.0.10",
20 | "@evidence-dev/core-components": "^5.2.2",
21 | "@evidence-dev/csv": "^1.0.14",
22 | "@evidence-dev/databricks": "^1.0.8",
23 | "@evidence-dev/duckdb": "^1.0.13",
24 | "@evidence-dev/evidence": "^40.1.2",
25 | "@evidence-dev/motherduck": "^1.0.4",
26 | "@evidence-dev/mssql": "^1.1.2",
27 | "@evidence-dev/mysql": "^1.1.4",
28 | "@evidence-dev/postgres": "^1.0.7",
29 | "@evidence-dev/snowflake": "^1.2.2",
30 | "@evidence-dev/source-javascript": "^0.0.3",
31 | "@evidence-dev/sqlite": "^2.0.7",
32 | "@evidence-dev/trino": "^1.0.9"
33 | },
34 | "overrides": {
35 | "jsonwebtoken": "9.0.0",
36 | "trim@<0.0.3": ">0.0.3",
37 | "sqlite3": "5.1.5",
38 | "axios": "^1.7.4"
39 | }
40 | }
41 |
--------------------------------------------------------------------------------
/pages/index.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: Welcome to Evidence
3 | ---
4 |
5 |
6 |
7 | This page can be found in your project at `/pages/index.md`. Make a change to the markdown file and save it to see the change take effect in your browser.
8 |
9 |
10 | ```sql categories
11 | select
12 | category
13 | from needful_things.orders
14 | group by category
15 | ```
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 | ```sql orders_by_category
29 | select
30 | date_trunc('month', order_datetime) as month,
31 | sum(sales) as sales_usd,
32 | category
33 | from needful_things.orders
34 | where category like '${inputs.category.value}'
35 | and date_part('year', order_datetime) like '${inputs.year.value}'
36 | group by all
37 | order by sales_usd desc
38 | ```
39 |
40 |
47 |
48 | ## What's Next?
49 | - [Connect your data sources](settings)
50 | - Edit/add markdown files in the `pages` folder
51 | - Deploy your project with [Evidence Cloud](https://evidence.dev/cloud)
52 |
53 | ## Get Support
54 | - Message us on [Slack](https://slack.evidence.dev/)
55 | - Read the [Docs](https://docs.evidence.dev/)
56 | - Open an issue on [Github](https://github.com/evidence-dev/evidence)
57 |
--------------------------------------------------------------------------------
/scripts/update-evidence-packages.js:
--------------------------------------------------------------------------------
1 | #!/usr/bin/env node
2 |
3 | import fs from "node:fs";
4 | import { spawnSync } from "node:child_process";
5 |
6 | /** @returns {Record} */
7 | const readEvidencePackages = () => {
8 | const packageJson = JSON.parse(fs.readFileSync("package.json", "utf8"));
9 | return Object.fromEntries(
10 | Object.entries(packageJson.dependencies)
11 | .filter(([dep]) => dep.startsWith("@evidence-dev/"))
12 | .map(([dep, version]) => [dep, version.replaceAll(/[^\d\.]/g, "")])
13 | );
14 | };
15 |
16 | const initialEvidencePackages = readEvidencePackages();
17 |
18 | const longestPackageName = Object.keys(initialEvidencePackages).reduce(
19 | (acc, dep) => Math.max(acc, dep.length),
20 | 0
21 | );
22 |
23 | const evidencePackagesWithLatest = Object.keys(initialEvidencePackages)
24 | .map((dep) => `${dep}@latest`)
25 | .join(" ");
26 | const updateCommand = `npm install ${evidencePackagesWithLatest} --package-lock-only --verbose`;
27 |
28 | // Delete node_modules and package-lock.json
29 | process.stdout.write("Deleting node_modules and package-lock.json...");
30 | fs.rmSync("node_modules", { recursive: true, force: true });
31 | fs.rmSync("package-lock.json", { force: true });
32 | console.log(" Done");
33 |
34 | // Install
35 | console.log("Installing latest versions of evidence packages...");
36 | spawnSync(updateCommand, { shell: true, stdio: "inherit" });
37 |
38 | const finalEvidencePackages = readEvidencePackages();
39 |
40 | const unchangedPackages = Object.keys(finalEvidencePackages).filter(
41 | (dep) => initialEvidencePackages[dep] === finalEvidencePackages[dep]
42 | );
43 | const updatedPackages = Object.keys(finalEvidencePackages).filter(
44 | (dep) => initialEvidencePackages[dep] !== finalEvidencePackages[dep]
45 | );
46 |
47 | console.log("\nUpdated packages:");
48 | if (updatedPackages.length === 0) {
49 | console.log(" None");
50 | } else {
51 | updatedPackages.forEach((dep) => {
52 | const dots = ".".repeat(longestPackageName - dep.length);
53 | console.log(
54 | ` ${dep} ...${dots} ${initialEvidencePackages[dep]} -> ${finalEvidencePackages[dep]}`
55 | );
56 | });
57 | }
58 |
59 | console.log("\nUnchanged packages:");
60 | if (unchangedPackages.length === 0) {
61 | console.log(" None");
62 | } else {
63 | unchangedPackages.forEach((dep) => {
64 | const dots = ".".repeat(longestPackageName - dep.length);
65 | console.log(` ${dep} ...${dots} ${finalEvidencePackages[dep]}`);
66 | });
67 | }
68 |
--------------------------------------------------------------------------------
/sources/needful_things/connection.yaml:
--------------------------------------------------------------------------------
1 | # This file was automatically generated
2 | name: needful_things
3 | type: duckdb
4 | options:
5 | filename: needful_things.duckdb
6 |
--------------------------------------------------------------------------------
/sources/needful_things/needful_things.duckdb:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/evidence-dev/template/87cbf3e2a80d31b85e2940e7e84e3e7e95bf33cf/sources/needful_things/needful_things.duckdb
--------------------------------------------------------------------------------
/sources/needful_things/orders.sql:
--------------------------------------------------------------------------------
1 | select * from orders
--------------------------------------------------------------------------------