Tip
Backup Domain (Development/Preview Builds): nadun.eu.cc
A personal site that doubles as a blog platform and Additioonal Awsome tools. Built fast. Kept useful.
-
Static-first architecture via Astro with zero client-side JS by default
-
Full-text search powered by Pagefind with no external search service required
-
Auto-generated Open Graph images per post and site-wide
-
RSS feed for automation
/rss.xml, robots configuration at/robots.txt -
Health check endpoint at
/api/health -
Tag-based post grouping with paginated archive
-
CI pipleines For Linting / Formatting and Build
-
CD pipelines for Deploying into Cloudflare Workers
Quick-launch browser tools accessible directly via URL query parameters. No install, no sign-in. Refer Developer Documentation at :
| Tool | URL | Description |
|---|---|---|
| Base64 | /tools/?tool=base64 |
Offline Base64 encoder and decoder with a clean UI |
| yt-dlp Downloader | /tools/?tool=ytdlp |
Download from 1,700+ supported sites with reCAPTCHA protection |
| Layer | Choice |
|---|---|
| Framework | Astro + pnpm |
| Language | TypeScript |
| Styling | TailwindCSS |
| Search | Pagefind |
| Icons | Icones |
| Formatting | Prettier |
| Linting | ESLint |
| Deployment | Cloudflare Workers Cloudflare KV |
Requires make. Install it first if not already present, then use make help to list all available targets.
# macOS
brew install make
# Windows
choco install makeOnce make is available:
make install # install dependencies via pnpm
make dev # start local dev server
make build # production build
make preview # preview the production build locallyAll available Make targets
| Target | Alias | Description |
|---|---|---|
install |
i |
Install dependencies via pnpm |
dev |
Start dev server | |
build |
Production build | |
preview |
Preview the built output | |
check |
c |
Run lint and format-check in parallel |
format |
f |
Format code via Prettier |
format-check |
Check formatting without writing | |
lint |
Lint via ESLint | |
sync |
Sync Astro types | |
deploy |
Deploy to Cloudflare (requires production=true) |
|
d-p |
Deploy to Cloudflare preview branch | |
clean |
Remove dist, node_modules, and build artifacts |
Copy .env.example to .env and fill in the required values before running locally.
cp .env.example .envFull directory tree
.
|-- Dockerfile
|-- LICENSE
|-- Makefile
|-- README.md
|-- astro.config.ts
|-- cz.yaml
|-- docker-compose.yml
|-- eslint.config.js
|-- package.json
|-- pnpm-lock.yaml
|-- pnpm-workspace.yaml
|-- public/
| |-- PageSpeed Insights.png
| |-- favicon.svg
| `-- nadzu-og*.jpg
|-- src/
| |-- actions/ # Astro server actions
| |-- assets/ # SVG icons (ui + tech tags)
| |-- components/ # Reusable Astro components
| |-- data/
| | |-- blog/ # Markdown blog posts
| | |-- form/ # Contact form schema
| | `-- projects/ # ProjectData.json + schema
| |-- layouts/ # Page layout wrappers
| |-- pages/ # File-based routing
| |-- scripts/
| | |-- theme.ts
| | `-- tools/ # Tool-specific TS modules (base64, ytdlp)
| |-- styles/ # Global CSS and typography
| `-- utils/ # Helpers: OG gen, slug, post filters, etc.
|-- tsconfig.json
`-- wrangler.jsonc
A Dockerfile and docker-compose.yml are included for containerized local development or self-hosting.
docker compose upThe .dockerignore excludes node_modules, dist, and other non-essential paths from the image context.
- Disable Cloudflare Rocket Loader permanently. It interferes with client-side scripts. See #19.
- Run
npx astro telemetry disableonce after cloning to opt out of Astro anonymous usage telemetry on your machine. - Commitizen is configured via
cz.yamlfor consistent conventional commit messages.
