@reallavo/clonecheck 0.1.0

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.
Files changed (94) hide show
  1. package/.env.example +2 -0
  2. package/.gitattributes +1 -0
  3. package/.github/workflows/ci.yml +24 -0
  4. package/CONTRIBUTING.md +22 -0
  5. package/LICENSE +21 -0
  6. package/README.md +205 -0
  7. package/action/README.md +34 -0
  8. package/action/action.yml +50 -0
  9. package/clonecheck.config.json +5 -0
  10. package/docs/checks.md +44 -0
  11. package/docs/config.md +36 -0
  12. package/docs/scoring.md +20 -0
  13. package/eslint.config.js +29 -0
  14. package/examples/docker-compose-missing-env/.env.example +1 -0
  15. package/examples/docker-compose-missing-env/README.md +5 -0
  16. package/examples/docker-compose-missing-env/docker-compose.yml +12 -0
  17. package/examples/node-basic/.env.example +1 -0
  18. package/examples/node-basic/README.md +8 -0
  19. package/examples/node-basic/package.json +15 -0
  20. package/examples/node-basic/pnpm-lock.yaml +5 -0
  21. package/examples/node-basic/src-index.ts +1 -0
  22. package/examples/node-missing-env/.env.example +1 -0
  23. package/examples/node-missing-env/README.md +8 -0
  24. package/examples/node-missing-env/package.json +11 -0
  25. package/examples/node-missing-env/pnpm-lock.yaml +5 -0
  26. package/examples/node-missing-env/src/app.ts +14 -0
  27. package/examples/python-basic/.env.example +1 -0
  28. package/examples/python-basic/README.md +8 -0
  29. package/examples/python-basic/app.py +6 -0
  30. package/examples/python-basic/requirements.txt +1 -0
  31. package/package.json +40 -0
  32. package/packages/cli/LICENSE +21 -0
  33. package/packages/cli/README.md +15 -0
  34. package/packages/cli/package.json +55 -0
  35. package/packages/cli/src/index.ts +186 -0
  36. package/packages/cli/tsconfig.json +11 -0
  37. package/packages/core/LICENSE +21 -0
  38. package/packages/core/README.md +11 -0
  39. package/packages/core/package.json +51 -0
  40. package/packages/core/src/checks/ciPresence.ts +35 -0
  41. package/packages/core/src/checks/dockerComposeEnv.ts +61 -0
  42. package/packages/core/src/checks/envExample.ts +31 -0
  43. package/packages/core/src/checks/helpers.ts +54 -0
  44. package/packages/core/src/checks/index.ts +24 -0
  45. package/packages/core/src/checks/packageManagerConsistency.ts +65 -0
  46. package/packages/core/src/checks/portDocumentation.ts +62 -0
  47. package/packages/core/src/checks/projectFiles.ts +77 -0
  48. package/packages/core/src/checks/readmeCommands.ts +87 -0
  49. package/packages/core/src/checks/scriptsAvailability.ts +69 -0
  50. package/packages/core/src/config.ts +96 -0
  51. package/packages/core/src/detectors/dockerCompose.ts +62 -0
  52. package/packages/core/src/detectors/env.ts +189 -0
  53. package/packages/core/src/detectors/packageManager.ts +54 -0
  54. package/packages/core/src/detectors/ports.ts +99 -0
  55. package/packages/core/src/detectors/project.ts +50 -0
  56. package/packages/core/src/detectors/readme.ts +131 -0
  57. package/packages/core/src/index.ts +31 -0
  58. package/packages/core/src/reporters/index.ts +3 -0
  59. package/packages/core/src/reporters/json.ts +5 -0
  60. package/packages/core/src/reporters/labels.ts +40 -0
  61. package/packages/core/src/reporters/markdown.ts +63 -0
  62. package/packages/core/src/reporters/text.ts +108 -0
  63. package/packages/core/src/run.ts +111 -0
  64. package/packages/core/src/scoring.ts +60 -0
  65. package/packages/core/src/types.ts +85 -0
  66. package/packages/core/src/utils/files.ts +109 -0
  67. package/packages/core/tests/config.test.ts +53 -0
  68. package/packages/core/tests/detectors.test.ts +127 -0
  69. package/packages/core/tests/fixtures/docker-compose-missing-env/.env.example +1 -0
  70. package/packages/core/tests/fixtures/docker-compose-missing-env/README.md +5 -0
  71. package/packages/core/tests/fixtures/docker-compose-missing-env/docker-compose.yml +6 -0
  72. package/packages/core/tests/fixtures/env-missing/.env.example +1 -0
  73. package/packages/core/tests/fixtures/env-missing/README.md +6 -0
  74. package/packages/core/tests/fixtures/env-missing/package-lock.json +4 -0
  75. package/packages/core/tests/fixtures/env-missing/package.json +8 -0
  76. package/packages/core/tests/fixtures/env-missing/src.py +4 -0
  77. package/packages/core/tests/fixtures/node-pnpm-readme-npm/.env.example +1 -0
  78. package/packages/core/tests/fixtures/node-pnpm-readme-npm/README.md +8 -0
  79. package/packages/core/tests/fixtures/node-pnpm-readme-npm/package.json +8 -0
  80. package/packages/core/tests/fixtures/node-pnpm-readme-npm/pnpm-lock.yaml +1 -0
  81. package/packages/core/tests/fixtures/node-pnpm-readme-npm/src.ts +3 -0
  82. package/packages/core/tests/reporters.test.ts +43 -0
  83. package/packages/core/tests/run.test.ts +37 -0
  84. package/packages/core/tests/scoring.test.ts +33 -0
  85. package/packages/core/tsconfig.json +8 -0
  86. package/packages/npm/LICENSE +21 -0
  87. package/packages/npm/README.md +17 -0
  88. package/packages/npm/package.json +54 -0
  89. package/packages/npm/src/index.ts +2 -0
  90. package/packages/npm/tsconfig.json +12 -0
  91. package/pnpm-workspace.yaml +4 -0
  92. package/prettier.config.js +5 -0
  93. package/scripts/build-package.mjs +30 -0
  94. package/tsconfig.base.json +17 -0
package/.env.example ADDED
@@ -0,0 +1,2 @@
1
+ DEBUG=
2
+ NO_COLOR=
package/.gitattributes ADDED
@@ -0,0 +1 @@
1
+ * text=auto eol=lf
@@ -0,0 +1,24 @@
1
+ name: CI
2
+
3
+ on:
4
+ pull_request:
5
+ push:
6
+ branches: [main]
7
+
8
+ jobs:
9
+ ci:
10
+ runs-on: ubuntu-latest
11
+
12
+ steps:
13
+ - uses: actions/checkout@v4
14
+ - uses: pnpm/action-setup@v4
15
+ with:
16
+ version: 10.23.0
17
+ - uses: actions/setup-node@v4
18
+ with:
19
+ node-version: 20
20
+ cache: pnpm
21
+ - run: pnpm install
22
+ - run: pnpm lint
23
+ - run: pnpm test
24
+ - run: pnpm build
@@ -0,0 +1,22 @@
1
+ # Contributing
2
+
3
+ Thanks for helping improve clonecheck.
4
+
5
+ ## Local Setup
6
+
7
+ ```bash
8
+ pnpm install
9
+ pnpm build
10
+ pnpm test
11
+ pnpm lint
12
+ ```
13
+
14
+ Run the CLI against an example fixture:
15
+
16
+ ```bash
17
+ pnpm --filter @clonecheck/cli dev -- scan ./examples/node-missing-env
18
+ ```
19
+
20
+ ## Pull Requests
21
+
22
+ Keep changes focused, add or update tests for scanner behavior, and document new checks in `docs/checks.md`.
package/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026 clonecheck contributors
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
package/README.md ADDED
@@ -0,0 +1,205 @@
1
+ # clonecheck
2
+
3
+ Know if your repo is actually cloneable.
4
+
5
+ Most tools tell you whether your code is secure or formatted.
6
+ clonecheck tells you whether your repo is actually usable by a new contributor.
7
+
8
+ clonecheck is a CLI and GitHub Action that checks whether a repository is cloneable, runnable, and contributor-friendly. It answers one concrete question:
9
+
10
+ > Can a new developer clone this repo and understand how to run it within 10 minutes?
11
+
12
+ It does not run installs, execute Docker, or call external APIs. The MVP is static analysis for repository usability.
13
+
14
+ ## Example Output
15
+
16
+ ```txt
17
+ clonecheck v0.1.0
18
+
19
+ Repository: my-app
20
+ Path: /Users/me/my-app
21
+
22
+ Score: 72/100
23
+ Status: Needs work
24
+
25
+ Checks:
26
+ ✅ package-manager-consistency
27
+ package manager is consistent: pnpm
28
+
29
+ ✅ scripts-availability
30
+ package scripts include an obvious local workflow
31
+
32
+ ⚠️ env-example
33
+ Environment variable DATABASE_URL is used but missing from .env.example or another env template.
34
+ Environment variable JWT_SECRET is used but missing from .env.example or another env template.
35
+
36
+ ⚠️ readme-commands
37
+ README uses npm commands, but the detected package manager is pnpm.
38
+
39
+ Suggestions:
40
+ 1. Add DATABASE_URL= to .env.example.
41
+ 2. Add JWT_SECRET= to .env.example.
42
+ 3. Update README commands to use pnpm.
43
+ ```
44
+
45
+ ## Installation
46
+
47
+ ```bash
48
+ npm install --save-dev clonecheck
49
+ ```
50
+
51
+ Run without installing:
52
+
53
+ ```bash
54
+ npx clonecheck scan
55
+ ```
56
+
57
+ Scoped package users can also run:
58
+
59
+ ```bash
60
+ npx @clonecheck/cli scan
61
+ ```
62
+
63
+ pnpm users:
64
+
65
+ ```bash
66
+ pnpm add -D clonecheck
67
+ pnpm dlx clonecheck scan
68
+ ```
69
+
70
+ From this repository:
71
+
72
+ ```bash
73
+ pnpm install
74
+ pnpm build
75
+ pnpm --filter clonecheck scan
76
+ ```
77
+
78
+ ## CLI Usage
79
+
80
+ ```bash
81
+ clonecheck scan
82
+ clonecheck scan .
83
+ clonecheck scan ./some-repo
84
+ clonecheck scan --format text
85
+ clonecheck scan --format json
86
+ clonecheck scan --format markdown
87
+ clonecheck scan --output clonecheck-report.md
88
+ clonecheck scan --strict
89
+ clonecheck generate-env-example
90
+ clonecheck generate-env-example --write
91
+ clonecheck init
92
+ clonecheck --version
93
+ clonecheck --help
94
+ ```
95
+
96
+ During local development:
97
+
98
+ ```bash
99
+ pnpm --filter @clonecheck/cli dev -- scan ./examples/node-missing-env
100
+ ```
101
+
102
+ ## GitHub Action
103
+
104
+ ```yaml
105
+ name: Clonecheck
106
+
107
+ on:
108
+ pull_request:
109
+ push:
110
+ branches: [main]
111
+
112
+ jobs:
113
+ clonecheck:
114
+ runs-on: ubuntu-latest
115
+ steps:
116
+ - uses: actions/checkout@v4
117
+ - uses: reallav0/clonecheck@v1
118
+ with:
119
+ format: markdown
120
+ output: clonecheck-report.md
121
+ strict: false
122
+ ```
123
+
124
+ ## Checks
125
+
126
+ | Check | What it finds |
127
+ |---|---|
128
+ | `package-manager-consistency` | README commands that do not match the detected lockfile. |
129
+ | `scripts-availability` | Missing `dev`, `start`, `test`, or `build` scripts in Node projects. |
130
+ | `env-example` | Environment variables used in code but missing from env example files. |
131
+ | `readme-commands` | Missing setup commands or README commands that conflict with the package manager. |
132
+ | `port-documentation` | README localhost ports that do not match likely app ports. |
133
+ | `docker-compose-env` | Compose `${VARIABLE}` references missing from env examples. |
134
+ | `project-files` | Missing README, `.gitignore`, contributing guide, or license. |
135
+ | `ci-presence` | Missing GitHub Actions workflow. |
136
+
137
+ See [docs/checks.md](docs/checks.md) for details.
138
+
139
+ ## Configuration
140
+
141
+ Create a config file:
142
+
143
+ ```bash
144
+ clonecheck init
145
+ ```
146
+
147
+ Example:
148
+
149
+ ```json
150
+ {
151
+ "ignore": ["examples/**", "fixtures/**"],
152
+ "ignoreEnvVars": ["NODE_ENV", "CUSTOM_IGNORE"],
153
+ "checks": {
154
+ "ci-presence": false,
155
+ "license": false
156
+ }
157
+ }
158
+ ```
159
+
160
+ Supported filenames:
161
+
162
+ - `clonecheck.config.json`
163
+ - `.clonecheckrc`
164
+ - `.clonecheckrc.json`
165
+
166
+ See [docs/config.md](docs/config.md).
167
+
168
+ ## Environment Examples
169
+
170
+ Generate a suggested env example:
171
+
172
+ ```bash
173
+ clonecheck generate-env-example
174
+ ```
175
+
176
+ Write missing variables to `.env.example`:
177
+
178
+ ```bash
179
+ clonecheck generate-env-example --write
180
+ ```
181
+
182
+ Existing variables and comments are preserved.
183
+
184
+ ## Roadmap
185
+
186
+ - More language-specific detectors for Rails, Laravel, Django, and Phoenix.
187
+ - Package-manager-aware README command suggestions.
188
+ - Optional PR comments for the GitHub Action.
189
+ - Repository templates for common project types.
190
+ - Future opt-in command execution mode for smoke tests.
191
+
192
+ ## Contributing
193
+
194
+ Issues and pull requests are welcome. Before opening a PR, run:
195
+
196
+ ```bash
197
+ pnpm install
198
+ pnpm lint
199
+ pnpm test
200
+ pnpm build
201
+ ```
202
+
203
+ ## License
204
+
205
+ MIT
@@ -0,0 +1,34 @@
1
+ # Clonecheck GitHub Action
2
+
3
+ Run clonecheck in CI to catch repository usability problems before contributors hit them.
4
+
5
+ ```yaml
6
+ name: Clonecheck
7
+
8
+ on:
9
+ pull_request:
10
+ push:
11
+ branches: [main]
12
+
13
+ jobs:
14
+ clonecheck:
15
+ runs-on: ubuntu-latest
16
+ steps:
17
+ - uses: actions/checkout@v4
18
+ - uses: reallav0/clonecheck@v1
19
+ with:
20
+ format: markdown
21
+ output: clonecheck-report.md
22
+ strict: false
23
+ ```
24
+
25
+ ## Inputs
26
+
27
+ | Input | Default | Description |
28
+ |---|---:|---|
29
+ | `path` | `.` | Repository path to scan. |
30
+ | `format` | `markdown` | Report format: `text`, `json`, or `markdown`. |
31
+ | `output` | empty | Optional file path for the generated report. |
32
+ | `strict` | `false` | Exit with code `1` when the score is below `75`. |
33
+
34
+ The MVP action installs dependencies and builds the local CLI before running it with Node.
@@ -0,0 +1,50 @@
1
+ name: Clonecheck
2
+ description: Know if your repo is actually cloneable.
3
+ author: clonecheck contributors
4
+
5
+ inputs:
6
+ path:
7
+ description: Repository path to scan.
8
+ required: false
9
+ default: "."
10
+ format:
11
+ description: Report format. One of text, json, or markdown.
12
+ required: false
13
+ default: markdown
14
+ output:
15
+ description: Optional output file path.
16
+ required: false
17
+ default: ""
18
+ strict:
19
+ description: Exit with code 1 when the clonecheck score is below 75.
20
+ required: false
21
+ default: "false"
22
+
23
+ runs:
24
+ using: composite
25
+ steps:
26
+ - name: Enable pnpm
27
+ shell: bash
28
+ run: corepack enable
29
+
30
+ - name: Install clonecheck dependencies
31
+ shell: bash
32
+ run: pnpm install --frozen-lockfile
33
+ working-directory: ${{ github.action_path }}/..
34
+
35
+ - name: Build clonecheck
36
+ shell: bash
37
+ run: pnpm build
38
+ working-directory: ${{ github.action_path }}/..
39
+
40
+ - name: Run clonecheck
41
+ shell: bash
42
+ run: |
43
+ args=(scan "${{ inputs.path }}" --format "${{ inputs.format }}")
44
+ if [ -n "${{ inputs.output }}" ]; then
45
+ args+=(--output "${{ inputs.output }}")
46
+ fi
47
+ if [ "${{ inputs.strict }}" = "true" ]; then
48
+ args+=(--strict)
49
+ fi
50
+ node "${{ github.action_path }}/../packages/cli/dist/index.js" "${args[@]}"
@@ -0,0 +1,5 @@
1
+ {
2
+ "ignore": ["examples/**", "packages/**/tests/**"],
3
+ "ignoreEnvVars": ["INIT_CWD"],
4
+ "checks": {}
5
+ }
package/docs/checks.md ADDED
@@ -0,0 +1,44 @@
1
+ # Checks
2
+
3
+ clonecheck ships with practical static checks focused on whether a new contributor can clone, configure, and run a repository quickly.
4
+
5
+ ## package-manager-consistency
6
+
7
+ Detects the package manager from lockfiles and compares it with package-manager commands in README shell blocks.
8
+
9
+ - `pnpm-lock.yaml` means `pnpm`
10
+ - `yarn.lock` means `yarn`
11
+ - `package-lock.json` means `npm`
12
+ - `bun.lockb` or `bun.lock` means `bun`
13
+
14
+ ## scripts-availability
15
+
16
+ For Node projects, checks `package.json` for `dev`, `start`, `test`, and `build` scripts.
17
+
18
+ - Missing all run scripts is an error.
19
+ - Missing `test` is a warning.
20
+ - Having `dev` or `start` is enough for a basic local run path.
21
+
22
+ ## env-example
23
+
24
+ Scans JavaScript, TypeScript, Python, Go, and Rust files for environment variable usage and compares detected variables against `.env.example`, `.env.sample`, `.env.template`, and `example.env`.
25
+
26
+ ## readme-commands
27
+
28
+ Extracts shell code blocks from README files and checks for setup and run commands. It warns when README commands conflict with the detected package manager.
29
+
30
+ ## port-documentation
31
+
32
+ Detects likely app ports from source files and common config files, then compares them with README localhost URLs.
33
+
34
+ ## docker-compose-env
35
+
36
+ Scans Compose files for `${VARIABLE}` references and verifies that each variable is documented in an env example file.
37
+
38
+ ## project-files
39
+
40
+ Checks for `README.md`, `CONTRIBUTING.md`, `LICENSE`, and `.gitignore`.
41
+
42
+ ## ci-presence
43
+
44
+ Checks for at least one `.github/workflows/*.yml` or `.github/workflows/*.yaml` file.
package/docs/config.md ADDED
@@ -0,0 +1,36 @@
1
+ # Configuration
2
+
3
+ clonecheck looks for config files in this order:
4
+
5
+ 1. `clonecheck.config.json`
6
+ 2. `.clonecheckrc`
7
+ 3. `.clonecheckrc.json`
8
+
9
+ You can also pass a specific file:
10
+
11
+ ```bash
12
+ clonecheck scan --config ./clonecheck.config.json
13
+ ```
14
+
15
+ ## Example
16
+
17
+ ```json
18
+ {
19
+ "ignore": ["examples/**", "fixtures/**"],
20
+ "ignoreEnvVars": ["NODE_ENV", "CUSTOM_IGNORE"],
21
+ "checks": {
22
+ "ci-presence": false,
23
+ "license": false
24
+ }
25
+ }
26
+ ```
27
+
28
+ ## Fields
29
+
30
+ | Field | Description |
31
+ |---|---|
32
+ | `ignore` | Additional glob patterns to exclude from file discovery. |
33
+ | `ignoreEnvVars` | Environment variable names that should not require documentation. |
34
+ | `checks` | Map of check IDs to booleans. `false` disables a check. |
35
+
36
+ `license` and `contributing` can be disabled as sub-checks of `project-files`.
@@ -0,0 +1,20 @@
1
+ # Scoring
2
+
3
+ clonecheck starts every repository at `100` and subtracts points for issues.
4
+
5
+ | Severity | Default | Strict |
6
+ |---|---:|---:|
7
+ | `error` | 15 | 15 |
8
+ | `warning` | 7 | 10 |
9
+ | `info` | 2 | 3 |
10
+
11
+ Scores never go below `0`.
12
+
13
+ | Score | Status |
14
+ |---:|---|
15
+ | 90-100 | Excellent |
16
+ | 75-89 | Good |
17
+ | 50-74 | Needs work |
18
+ | 0-49 | Poor |
19
+
20
+ `--strict` does not make the scanner run commands. It only makes warnings and info issues cost more and exits with code `1` when the score is below `75`.
@@ -0,0 +1,29 @@
1
+ import eslint from "@eslint/js";
2
+ import tseslint from "typescript-eslint";
3
+
4
+ export default tseslint.config(
5
+ {
6
+ ignores: ["**/dist/**", "**/coverage/**", "**/tests/fixtures/**", "node_modules/**"]
7
+ },
8
+ eslint.configs.recommended,
9
+ ...tseslint.configs.recommended,
10
+ {
11
+ files: ["**/*.ts"],
12
+ languageOptions: {
13
+ parserOptions: {
14
+ projectService: true,
15
+ tsconfigRootDir: import.meta.dirname
16
+ }
17
+ },
18
+ rules: {
19
+ "@typescript-eslint/no-explicit-any": "error",
20
+ "@typescript-eslint/no-unused-vars": [
21
+ "error",
22
+ {
23
+ "argsIgnorePattern": "^_",
24
+ "varsIgnorePattern": "^_"
25
+ }
26
+ ]
27
+ }
28
+ }
29
+ );
@@ -0,0 +1 @@
1
+ DATABASE_URL=
@@ -0,0 +1,5 @@
1
+ # Docker Compose Missing Env
2
+
3
+ ```bash
4
+ docker compose up
5
+ ```
@@ -0,0 +1,12 @@
1
+ services:
2
+ db:
3
+ image: postgres:16
4
+ environment:
5
+ POSTGRES_PASSWORD: ${POSTGRES_PASSWORD}
6
+ POSTGRES_DB: app
7
+ web:
8
+ image: node:20
9
+ environment:
10
+ DATABASE_URL: ${DATABASE_URL:-postgres://postgres:postgres@db:5432/app}
11
+ ports:
12
+ - "3000:3000"
@@ -0,0 +1 @@
1
+ VITE_API_URL=
@@ -0,0 +1,8 @@
1
+ # Node Basic
2
+
3
+ ```bash
4
+ pnpm install
5
+ pnpm dev
6
+ ```
7
+
8
+ Open http://localhost:5173.
@@ -0,0 +1,15 @@
1
+ {
2
+ "name": "node-basic",
3
+ "private": true,
4
+ "scripts": {
5
+ "dev": "vite --host 0.0.0.0 --port 5173",
6
+ "build": "vite build",
7
+ "test": "vitest run"
8
+ },
9
+ "dependencies": {
10
+ "vite": "^6.0.0"
11
+ },
12
+ "devDependencies": {
13
+ "vitest": "^2.1.8"
14
+ }
15
+ }
@@ -0,0 +1,5 @@
1
+ lockfileVersion: '9.0'
2
+
3
+ settings:
4
+ autoInstallPeers: true
5
+ excludeLinksFromLockfile: false
@@ -0,0 +1 @@
1
+ console.log(import.meta.env.VITE_API_URL);
@@ -0,0 +1 @@
1
+ DATABASE_URL=
@@ -0,0 +1,8 @@
1
+ # Node Missing Env
2
+
3
+ ```bash
4
+ npm install
5
+ npm run dev
6
+ ```
7
+
8
+ Open http://localhost:3000.
@@ -0,0 +1,11 @@
1
+ {
2
+ "name": "node-missing-env",
3
+ "private": true,
4
+ "scripts": {
5
+ "dev": "vite --port 5173",
6
+ "build": "vite build"
7
+ },
8
+ "dependencies": {
9
+ "vite": "^6.0.0"
10
+ }
11
+ }
@@ -0,0 +1,5 @@
1
+ lockfileVersion: '9.0'
2
+
3
+ settings:
4
+ autoInstallPeers: true
5
+ excludeLinksFromLockfile: false
@@ -0,0 +1,14 @@
1
+ const databaseUrl = process.env.DATABASE_URL;
2
+ const jwtSecret = process.env["JWT_SECRET"];
3
+ const stripeSecretKey = process.env['STRIPE_SECRET_KEY'];
4
+ const apiUrl = import.meta.env.NEXT_PUBLIC_API_URL;
5
+
6
+ export function config() {
7
+ return {
8
+ databaseUrl,
9
+ jwtSecret,
10
+ stripeSecretKey,
11
+ apiUrl,
12
+ port: 5173
13
+ };
14
+ }
@@ -0,0 +1 @@
1
+ DATABASE_URL=
@@ -0,0 +1,8 @@
1
+ # Python Basic
2
+
3
+ ```bash
4
+ python -m venv .venv
5
+ python app.py
6
+ ```
7
+
8
+ Open http://localhost:8000.
@@ -0,0 +1,6 @@
1
+ import os
2
+
3
+ DATABASE_URL = os.getenv("DATABASE_URL")
4
+ PORT = 8000
5
+
6
+ print(f"Running with {DATABASE_URL} on port {PORT}")
@@ -0,0 +1 @@
1
+ flask==3.1.0
package/package.json ADDED
@@ -0,0 +1,40 @@
1
+ {
2
+ "name": "@reallavo/clonecheck",
3
+ "version": "0.1.0",
4
+ "description": "Know if your repo is actually cloneable.",
5
+ "type": "module",
6
+ "packageManager": "pnpm@10.23.0",
7
+ "engines": {
8
+ "node": ">=20"
9
+ },
10
+ "scripts": {
11
+ "build": "pnpm -r build",
12
+ "dev": "pnpm --filter @clonecheck/cli dev",
13
+ "lint": "pnpm -r lint",
14
+ "scan": "pnpm --filter clonecheck scan",
15
+ "test": "pnpm -r test",
16
+ "typecheck": "pnpm -r typecheck",
17
+ "format": "prettier --check .",
18
+ "format:write": "prettier --write ."
19
+ },
20
+ "keywords": [
21
+ "cli",
22
+ "developer-experience",
23
+ "repository",
24
+ "readme",
25
+ "github-action"
26
+ ],
27
+ "license": "MIT",
28
+ "devDependencies": {
29
+ "@eslint/js": "^9.18.0",
30
+ "@types/js-yaml": "^4.0.9",
31
+ "@types/node": "^22.10.7",
32
+ "eslint": "^9.18.0",
33
+ "prettier": "^3.4.2",
34
+ "tsup": "^8.3.5",
35
+ "tsx": "^4.19.2",
36
+ "typescript": "^5.7.3",
37
+ "typescript-eslint": "^8.20.0",
38
+ "vitest": "^2.1.8"
39
+ }
40
+ }