website Tailwind Templates

Website

šŸ‰A website made with NuxtJS & TailwindCSS

My Personal Website & Blog

This repository contains the source code for my personal website and blog, built with Nuxt 3 and styled with Tailwind CSS.

✨ Features

  • Blog: Markdown-based content management using Nuxt Content.
  • Command Palette: Quick navigation and actions (Ctrl/Cmd + K).
  • Last.fm Integration: Displaying current music presence (if configured).
  • Dark Mode: Theme switching support.
  • SEO Friendly: Meta tags automatically generated for pages and posts.
  • Responsive Design: Adapts to different screen sizes.
  • Page Transitions & Animations: Smooth transitions and entry animations using VueUse Motion.
  • Mermaid Renderer: Support for rendering Mermaid diagrams within Markdown content.

šŸ› ļø Technologies Used

šŸ“‚ Project Structure

.
ā”œā”€ā”€ @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

šŸš€ Getting Started

Prerequisites

Setup

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

Development Server

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.


Top categories

Loading Svelte Themes