Skip to content
This repository was archived by the owner on Jan 14, 2026. It is now read-only.
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 5 additions & 0 deletions .env.example
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
GITHUB_TOKEN=""
GITLAB_TOKEN=""
UPSTASH_REDIS_URL=""
UPSTASH_REDIS_TOKEN=""
DATABASE_URL=""
15 changes: 15 additions & 0 deletions .github/FUNDING.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
# These are supported funding model platforms

github: [ieedan]
patreon: # Replace with a single Patreon username
open_collective: # Replace with a single Open Collective username
ko_fi: # Replace with a single Ko-fi username
tidelift: # Replace with a single Tidelift platform-name/package-name e.g., npm/babel
community_bridge: # Replace with a single Community Bridge project-name e.g., cloud-foundry
liberapay: # Replace with a single Liberapay username
issuehunt: # Replace with a single IssueHunt username
lfx_crowdfunding: # Replace with a single LFX Crowdfunding project-name e.g., cloud-foundry
polar: # Replace with a single Polar username
buy_me_a_coffee: # Replace with a single Buy Me a Coffee username
thanks_dev: # Replace with a single thanks.dev username
custom: # Replace with up to 4 custom sponsorship URLs e.g., ['link1', 'link2']
22 changes: 22 additions & 0 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
name: CI

on:
pull_request:

jobs:
CI:
runs-on: ubuntu-latest

steps:
- uses: actions/checkout@v4
- uses: pnpm/action-setup@v4
- uses: actions/setup-node@v4
with:
node-version: '20'
cache: pnpm

- name: Install dependencies
run: pnpm install

- name: Check Types
run: pnpm lint
25 changes: 25 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
node_modules

# Output
.output
.vercel
.velite
.netlify
.wrangler
/.svelte-kit
/build
/static/search.json

# OS
.DS_Store
Thumbs.db

# Env
.env
.env.*
!.env.example
!.env.test

# Vite
vite.config.js.timestamp-*
vite.config.ts.timestamp-*
1 change: 1 addition & 0 deletions .npmrc
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
engine-strict=true
4 changes: 4 additions & 0 deletions .prettierignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
# Package Managers
package-lock.json
pnpm-lock.yaml
yarn.lock
15 changes: 15 additions & 0 deletions .prettierrc
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
{
"useTabs": true,
"singleQuote": true,
"trailingComma": "none",
"printWidth": 100,
"plugins": ["prettier-plugin-svelte", "prettier-plugin-tailwindcss"],
"overrides": [
{
"files": "*.svelte",
"options": {
"parser": "svelte"
}
}
]
}
44 changes: 42 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,2 +1,42 @@
# docs
The documentation site for jsrepo.
<p align="center">
<a href="https://jsrepo.dev">
<picture>
<img src="https://github.com/user-attachments/assets/fb4b84c3-8f81-4e1d-a049-ed909c3dae68">
</picture>
<h1 align="center">jsrepo</h1>
</a>
</p>

# jsrepo docs

The docs site for jsrepo

## Development

```bash
pnpm install

pnpm dev
```

### Environment variables

You'll need to provide the following environment variables:

```.env
GITHUB_TOKEN=""
GITLAB_TOKEN=""
UPSTASH_REDIS_URL=""
UPSTASH_REDIS_TOKEN=""
DATABASE_URL="" # postgres db
```

## Contributing

Make sure to format and lint the code before submitting a PR!

```bash
pnpm format

pnpm lint
```
17 changes: 17 additions & 0 deletions components.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
{
"$schema": "https://next.shadcn-svelte.com/schema.json",
"style": "new-york",
"tailwind": {
"config": "tailwind.config.ts",
"css": "src/app.css",
"baseColor": "zinc"
},
"aliases": {
"components": "$lib/components",
"utils": "$lib/utils",
"ui": "$lib/components/ui",
"hooks": "$lib/hooks"
},
"typescript": true,
"registry": "https://next.shadcn-svelte.com/registry"
}
55 changes: 55 additions & 0 deletions eslint.config.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,55 @@
import prettier from 'eslint-config-prettier';
import js from '@eslint/js';
import { includeIgnoreFile } from '@eslint/compat';
import svelte from 'eslint-plugin-svelte';
import globals from 'globals';
import { fileURLToPath } from 'node:url';
import ts from 'typescript-eslint';
import svelteConfig from './svelte.config.js';

const gitignorePath = fileURLToPath(new URL('./.gitignore', import.meta.url));

export default ts.config(
includeIgnoreFile(gitignorePath),
js.configs.recommended,
...ts.configs.recommended,
...svelte.configs['flat/recommended'],
prettier,
...svelte.configs['flat/prettier'],
{
languageOptions: {
globals: {
...globals.browser,
...globals.node
}
},
rules: {
'@typescript-eslint/no-unused-vars': [
'error',
{
varsIgnorePattern: '^_',
argsIgnorePattern: '^_'
}
],
'no-prototype-builtins': 'off',
'no-useless-escape': 'warn'
}
},
{
files: ['**/*.svelte', '**/*.svelte.ts', '**/*.svelte.js'],

languageOptions: {
parserOptions: {
// only enable this if you want linting to take 3 minutes
// projectService: true,
extraFileExtensions: ['.svelte'],
parser: ts.parser,
svelteConfig
}
},
rules: {
'svelte/no-at-html-tags': 'warn',
'svelte/no-useless-mustaches': 'warn'
}
}
);
16 changes: 16 additions & 0 deletions jsrepo.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
{
"$schema": "https://unpkg.com/jsrepo@1.47.0/schemas/project-config.json",
"repos": ["github/ieedan/std", "github/ieedan/shadcn-svelte-extras"],
"includeTests": false,
"watermark": true,
"formatter": "prettier",
"configFiles": {},
"paths": {
"*": "./src/lib/blocks",
"ts": "$lib/ts",
"ui": "$lib/components/ui",
"actions": "$lib/actions",
"hooks": "$lib/hooks",
"utils": "$lib/utils"
}
}
63 changes: 63 additions & 0 deletions mdsx.config.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,63 @@
import { createHighlighter } from 'shiki';
import rehypeAutolinkHeadings from 'rehype-autolink-headings';
import rehypeSlug from 'rehype-slug';
import rehypePrettyCode from 'rehype-pretty-code';
import remarkGfm from 'remark-gfm';
import rehypeExternalLinks from 'rehype-external-links';

/**
* @type {import('rehype-pretty-code').Options}
*/
export const prettyCodeOptions = {
theme: {
dark: 'github-dark-default',
light: 'github-light-default'
},
getHighlighter: (options) =>
createHighlighter({
...options,
langs: [
'plaintext',
import('shiki/langs/javascript.mjs'),
import('shiki/langs/typescript.mjs'),
import('shiki/langs/svelte.mjs'),
import('shiki/langs/sh.mjs'),
import('shiki/langs/jsonc.mjs'),
import('shiki/langs/json.mjs'),
import('shiki/langs/yaml.mjs')
]
}),
keepBackground: false,
onVisitLine(node) {
// Prevent lines from collapsing in `display: grid` mode, and allow empty
// lines to be copy/pasted
if (node.children.length === 0) {
node.children = [{ type: 'text', value: ' ' }];
}
},
onVisitHighlightedLine(node) {
node.properties.className = ['line--highlighted'];
},
onVisitHighlightedChars(node) {
node.properties.className = ['chars--highlighted'];
}
};

/** @type {import('mdsx').MDSXConfig} */
const options = {
remarkPlugins: [remarkGfm],
rehypePlugins: [
rehypeSlug,
rehypeAutolinkHeadings,
[rehypePrettyCode, prettyCodeOptions],
[rehypeExternalLinks, { target: '_blank' }]
],
extensions: ['.svx', '.md'],
blueprints: {
default: {
path: 'src/lib/components/site/docs/markdown/blueprint.svelte'
}
}
};

export default options;
86 changes: 86 additions & 0 deletions package.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,86 @@
{
"name": "docs",
"private": true,
"version": "0.0.1",
"type": "module",
"packageManager": "pnpm@10.7.1",
"scripts": {
"dev": "concurrently \"pnpm dev:content\" \"vite dev\"",
"build": "pnpm build:content && pnpm build:svelte",
"build:svelte": "vite build",
"dev:content": "velite build --watch",
"build:content": "velite",
"preview": "vite preview",
"prepare": "svelte-kit sync || echo ''",
"check": "svelte-kit sync && svelte-check --tsconfig ./tsconfig.json",
"check:watch": "svelte-kit sync && svelte-check --tsconfig ./tsconfig.json --watch",
"format": "prettier --write .",
"lint": "prettier --check . && eslint ."
},
"devDependencies": {
"@eslint/compat": "^1.2.5",
"@eslint/js": "^9.24.0",
"@fontsource-variable/jetbrains-mono": "^5.2.5",
"@fontsource-variable/oxanium": "^5.2.5",
"@lucide/svelte": "^0.486.0",
"@lukulent/svelte-umami": "^0.0.4",
"@shikijs/langs": "^3.2.1",
"@shikijs/markdown-it": "^3.2.1",
"@shikijs/themes": "^3.2.1",
"@sveltejs/adapter-vercel": "^5.7.0",
"@sveltejs/kit": "^2.20.5",
"@sveltejs/vite-plugin-svelte": "^5.0.0",
"@types/markdown-it": "^14.1.2",
"@upstash/redis": "^1.34.7",
"autoprefixer": "^10.4.20",
"badge-maker": "^4.1.0",
"bits-ui": "1.3.15",
"clsx": "^2.1.1",
"concurrently": "^9.1.2",
"core@latest": "link:@shikijs/markdown-it/core@latest",
"drizzle-orm": "^0.41.0",
"eslint": "^9.24.0",
"eslint-config-prettier": "^10.1.2",
"eslint-plugin-svelte": "^3.5.1",
"flexsearch": "^0.7.43",
"globals": "^16.0.0",
"isomorphic-dompurify": "^2.23.0",
"jsrepo": "^1.47.0",
"markdown-it": "^14.1.0",
"markdown-it-table": "^4.1.1",
"mdsx": "^0.0.6",
"mode-watcher": "^0.5.1",
"octokit": "^4.1.3",
"package-manager-detector": "^1.1.0",
"postgres": "^3.4.5",
"prettier": "^3.4.2",
"prettier-plugin-svelte": "^3.3.3",
"prettier-plugin-tailwindcss": "^0.6.10",
"rehype-autolink-headings": "^7.1.0",
"rehype-external-links": "^3.0.0",
"rehype-pretty-code": "^0.14.1",
"rehype-raw": "^7.0.0",
"rehype-slug": "^6.0.0",
"rehype-stringify": "^10.0.1",
"remark-gfm": "^4.0.1",
"remark-parse": "^11.0.0",
"remark-rehype": "^11.1.2",
"remove-markdown": "^0.6.0",
"runed": "^0.25.0",
"shiki": "^3.2.2",
"svelte": "^5.25.12",
"svelte-check": "^4.0.0",
"sveltekit-search-params": "^3.0.0",
"sveltekit-superforms": "^2.24.1",
"tailwind-merge": "^2.6.0",
"tailwind-variants": "^0.3.1",
"tailwindcss": "^3.4.17",
"tailwindcss-animate": "^1.0.7",
"typescript": "^5.0.0",
"typescript-eslint": "^8.29.1",
"unified": "^11.0.5",
"valibot": "^1.0.0",
"velite": "^0.2.2",
"vite": "^6.2.6"
}
}
Loading