├── .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 --------------------------------------------------------------------------------