Skip to content
Open
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
11 changes: 11 additions & 0 deletions .prettierignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
# Dependencies
node_modules
bun.lock

# Build outputs
dist
.astro

# Content files - Prettier doesn't handle MDX frontmatter well
src/content/**/*.mdx
src/content/**/*.md
4 changes: 2 additions & 2 deletions .prettierrc
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,8 @@
"$schema": "http://json.schemastore.org/prettierrc",
"plugins": [
"prettier-plugin-astro",
"prettier-plugin-tailwindcss",
"prettier-plugin-astro-organize-imports"
"prettier-plugin-astro-organize-imports",
"prettier-plugin-tailwindcss"
],
"printWidth": 100,
"tabWidth": 2,
Expand Down
11 changes: 10 additions & 1 deletion .vscode/extensions.json
Original file line number Diff line number Diff line change
@@ -1,4 +1,13 @@
{
"recommendations": ["astro-build.astro-vscode"],
"recommendations": [
"astro-build.astro-vscode",
"esbenp.prettier-vscode",
"dbaeumer.vscode-eslint",
"bradlc.vscode-tailwindcss",
"ms-vscode.vscode-typescript-next",
"usernamehw.errorlens",
"christian-kohler.path-intellisense",
"ms-vscode.vscode-json"
],
"unwantedRecommendations": []
}
21 changes: 18 additions & 3 deletions .vscode/launch.json
Original file line number Diff line number Diff line change
Expand Up @@ -2,10 +2,25 @@
"version": "0.2.0",
"configurations": [
{
"command": "./node_modules/.bin/astro dev",
"name": "Development server",
"command": "bun run dev",
"name": "Astro Dev Server (Bun)",
"request": "launch",
"type": "node-terminal"
"type": "node-terminal",
"cwd": "${workspaceFolder}"
},
{
"command": "bun run build",
"name": "Build (Bun)",
"request": "launch",
"type": "node-terminal",
"cwd": "${workspaceFolder}"
},
{
"command": "bun run preview",
"name": "Preview (Bun)",
"request": "launch",
"type": "node-terminal",
"cwd": "${workspaceFolder}"
}
]
}
141 changes: 141 additions & 0 deletions .vscode/settings.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,141 @@
{
"editor.defaultFormatter": "esbenp.prettier-vscode",
"editor.formatOnSave": true,
"editor.formatOnPaste": false,
"editor.formatOnType": false,
"editor.codeActionsOnSave": {
"source.fixAll.eslint": "explicit",
"source.organizeImports": "explicit"
},
"editor.tabSize": 2,
"editor.insertSpaces": true,
"editor.detectIndentation": false,
"editor.rulers": [100, 120],
"editor.wordWrap": "on",
"editor.bracketPairColorization.enabled": true,
"editor.guides.bracketPairs": true,
"editor.inlineSuggest.enabled": true,
"editor.suggestSelection": "first",
"editor.snippetSuggestions": "top",

"files.associations": {
"*.astro": "astro"
},
"files.exclude": {
"**/.git": true,
"**/.DS_Store": true,
"**/node_modules": true,
"**/dist": true,
"**/.astro": true
},
"files.watcherExclude": {
"**/.git/objects/**": true,
"**/.git/subtree-cache/**": true,
"**/node_modules/**": true,
"**/dist/**": true,
"**/.astro/**": true
},
"files.eol": "\n",
"files.trimTrailingWhitespace": true,
"files.insertFinalNewline": true,
"files.trimFinalNewlines": true,

"typescript.enablePromptUseWorkspaceTsdk": true,
"typescript.preferences.importModuleSpecifier": "relative",
"typescript.updateImportsOnFileMove.enabled": "always",
"typescript.suggest.autoImports": true,
"typescript.inlayHints.parameterNames.enabled": "all",
"typescript.inlayHints.variableTypes.enabled": true,
"typescript.inlayHints.propertyDeclarationTypes.enabled": true,
"typescript.inlayHints.functionLikeReturnTypes.enabled": true,

"javascript.preferences.importModuleSpecifier": "relative",
"javascript.updateImportsOnFileMove.enabled": "always",
"javascript.suggest.autoImports": true,
"javascript.inlayHints.parameterNames.enabled": "all",
"javascript.inlayHints.variableTypes.enabled": true,
"javascript.inlayHints.propertyDeclarationTypes.enabled": true,
"javascript.inlayHints.functionLikeReturnTypes.enabled": true,

"eslint.enable": true,
"eslint.validate": ["javascript", "javascriptreact", "typescript", "typescriptreact", "astro"],
"eslint.useFlatConfig": true,
"eslint.workingDirectories": ["."],

"prettier.enable": true,
"prettier.requireConfig": true,
"[astro]": {
"editor.defaultFormatter": "esbenp.prettier-vscode",
"editor.formatOnSave": true
},
"[typescript]": {
"editor.defaultFormatter": "esbenp.prettier-vscode",
"editor.formatOnSave": true
},
"[javascript]": {
"editor.defaultFormatter": "esbenp.prettier-vscode",
"editor.formatOnSave": true
},
"[json]": {
"editor.defaultFormatter": "esbenp.prettier-vscode",
"editor.formatOnSave": true
},
"[jsonc]": {
"editor.defaultFormatter": "esbenp.prettier-vscode",
"editor.formatOnSave": true
},
"[markdown]": {
"editor.formatOnSave": false,
"editor.wordWrap": "on"
},
"[mdx]": {
"editor.formatOnSave": false,
"editor.wordWrap": "on"
},
"[css]": {
"editor.defaultFormatter": "esbenp.prettier-vscode",
"editor.formatOnSave": true
},
"[scss]": {
"editor.defaultFormatter": "esbenp.prettier-vscode",
"editor.formatOnSave": true
},
"[html]": {
"editor.defaultFormatter": "esbenp.prettier-vscode",
"editor.formatOnSave": true
},
"[yaml]": {
"editor.defaultFormatter": "esbenp.prettier-vscode",
"editor.formatOnSave": true
},

"search.exclude": {
"**/node_modules": true,
"**/dist": true,
"**/.astro": true,
"**/.git": true,
"**/bun.lock": true
},

"terminal.integrated.defaultProfile.windows": "PowerShell",
"terminal.integrated.cwd": "${workspaceFolder}",

"git.autofetch": true,
"git.confirmSync": false,
"git.enableSmartCommit": true,

"emmet.includeLanguages": {
"astro": "html"
},
"emmet.triggerExpansionOnTab": true,

"explorer.fileNesting.enabled": true,
"explorer.fileNesting.patterns": {
"*.ts": "${capture}.js",
"*.js": "${capture}.js.map, ${capture}.min.js, ${capture}.d.ts",
"*.jsx": "${capture}.js",
"*.tsx": "${capture}.ts",
"tsconfig.json": "tsconfig.*.json",
"package.json": "bun.lock"
}
}
76 changes: 76 additions & 0 deletions .vscode/tasks.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,76 @@
{
"version": "2.0.0",
"tasks": [
{
"label": "dev",
"type": "shell",
"command": "bun",
"args": ["run", "dev"],
"problemMatcher": [],
"presentation": {
"reveal": "always",
"panel": "new"
},
"isBackground": true,
"runOptions": {
"runOn": "default"
}
},
{
"label": "build",
"type": "shell",
"command": "bun",
"args": ["run", "build"],
"problemMatcher": ["$tsc"],
"presentation": {
"reveal": "always",
"panel": "shared"
}
},
{
"label": "preview",
"type": "shell",
"command": "bun",
"args": ["run", "preview"],
"problemMatcher": [],
"presentation": {
"reveal": "always",
"panel": "new"
},
"isBackground": true
},
{
"label": "lint",
"type": "shell",
"command": "bun",
"args": ["run", "lint"],
"problemMatcher": ["$eslint-stylish"],
"presentation": {
"reveal": "always",
"panel": "shared"
}
},
{
"label": "format",
"type": "shell",
"command": "bun",
"args": ["run", "format"],
"problemMatcher": [],
"presentation": {
"reveal": "always",
"panel": "shared"
}
},
{
"label": "check",
"type": "shell",
"command": "bun",
"args": ["run", "check"],
"problemMatcher": ["$tsc"],
"presentation": {
"reveal": "always",
"panel": "shared"
}
}
]
}
30 changes: 29 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -40,10 +40,38 @@ bun install

- **Astro config**: `astro.config.mjs` (integrations, `site`)
- **Tailwind config**: `globals.css` (minimal config, theme)
- **ESLint config**: `.eslintrc.cjs` (Astro + TypeScript rules)
- **ESLint config**: `eslint.config.js` (Astro + TypeScript rules, flat config)
- **EditorConfig**: `.editorconfig` (consistent editor settings)
- **Gitignore**: ignores Jampack cache in `.jampack/`, build output, lockfiles, etc.

## Project Structure

### Component Organization

Components are organized by purpose and usage pattern:

- **`src/components/ui/`** - Reusable UI primitives (Button, Card, Link, etc.)
- **`src/components/layout/`** - Layout-specific components (Navbar, Footer, Sidebar)
- **`src/components/sections/`** - Page sections used on the homepage
- **`src/components/docs/`** - Documentation-specific components (Breadcrumbs, TableOfContents, etc.)
- **`src/components/core/`** - Core functionality components (SEO, LanguageSwitcher)

### Utility Functions

All utility functions are organized in `src/utils/` by domain:

- `navigation.ts` - Navigation and routing utilities
- `locale.ts` - Internationalization utilities
- `navbar.ts` - Navbar interaction logic
- `sidebar.ts` - Sidebar behavior and state management
- `scroll-animations.ts` - Scroll-based animation utilities

Barrel exports are available via `src/utils/index.ts` for cleaner imports.

### Constants

Site-wide constants are centralized in `src/constants.ts` and organized by domain (locale, navigation, site metadata).

## License

This project is licensed under the **Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International** (CC BY-NC-ND 4.0). See the `LICENSE` file for details.
Loading