This repository contains the source code for my personal website and blog, built with Nuxt 3 and styled with Tailwind CSS.
@tailwindcss/typography
plugin)nuxt-icon
)@vueuse/motion
).
āāā @types/ # Global TypeScript type definitions
ā āāā index.d.ts
āāā assets/ # Uncompiled assets (CSS, fonts)
ā āāā css/
ā āāā main.css
āāā components/ # Reusable Vue components
ā āāā command-palette-button.vue
ā āāā command-palette.vue
ā āāā content/ # Components used by Nuxt Content
ā ā āāā prose-pre.vue
ā āāā footer.vue
ā āāā image.vue
ā āāā link.vue
ā āāā mermaid.vue
ā āāā music-notes.vue
ā āāā music-presence.vue
ā āāā navbar.vue
ā āāā theme-switch.vue
āāā composables/ # Reusable Vue composables (logic)
ā āāā socials.ts
ā āāā themes.ts
ā āāā work.ts
āāā content/ # Markdown content files (managed as a submodule)
ā āāā posts/ # Blog posts (submodule content)
ā āāā post.md.template # Template for new posts
āāā pages/ # Application pages and routes
ā āāā index.vue # Home page
ā āāā posts/
ā ā āāā [id].vue # Dynamic page for single post
ā ā āāā index.vue # Blog posts list page
ā āāā work.vue # Work experience page
āāā plugins/ # Nuxt plugins
ā āāā medium-zoom.client.ts
ā āāā mermaid.client.ts
āāā public/ # Static files directly served
ā āāā favicon.ico
ā āāā robots.txt
āāā server/ # Server-side logic
ā āāā api/ # API routes
ā ā āāā track.ts # Last.fm tracking API
ā āāā tsconfig.json # Server-specific TS config
āāā .env # Environment variables (gitignored)
āāā .gitignore # Files/directories ignored by Git
āāā .gitmodules # Submodule configuration
āāā app.vue # Main application layout/entry point
āāā content.config.ts # Nuxt Content module configuration
āāā error.vue # Custom error page (e.g., 404)
āāā LICENSE # Project license file
āāā nuxt.config.ts # Nuxt main configuration file
āāā package.json # Project manifest (dependencies, scripts)
āāā README.md # This file
āāā tailwind.config.js # Tailwind CSS configuration
āāā tsconfig.json # Main TypeScript configuration
āāā yarn.lock # Yarn dependency lock file
Clone the repository and install dependencies:
# Clone the repo
git clone https://github.com/merloss/website.git # if you want to get existing posts, add '--recurse-submodules' flag
cd website
# If you already cloned without submodules, initialize them:
# git submodule update --init --recursive
# Install dependencies (choose your package manager)
# npm
npm install
# pnpm
pnpm install
# yarn
yarn install
# bun
bun install
Start the development server on http://localhost:3000
:
# npm
npm run dev
# pnpm
pnpm dev
# yarn
yarn dev
# bun
bun run dev
The server will automatically reload when you make changes to the code.