https://github.com/dev-murphy/personal-website
My Personal Website built using NuxtJS
https://github.com/dev-murphy/personal-website
Last synced: 30 days ago
JSON representation
My Personal Website built using NuxtJS
- Host: GitHub
- URL: https://github.com/dev-murphy/personal-website
- Owner: dev-murphy
- License: mit
- Created: 2026-05-24T03:42:39.000Z (about 1 month ago)
- Default Branch: main
- Last Pushed: 2026-05-24T04:33:00.000Z (about 1 month ago)
- Last Synced: 2026-05-24T06:19:17.270Z (about 1 month ago)
- Language: JavaScript
- Size: 105 KB
- Stars: 0
- Watchers: 0
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- License: LICENSE
Awesome Lists containing this project
README
# Personal Website
My personal portfolio website — a landing page with project and work-experience
sections, theming (light/dark), and SEO.
## Tech stack
- [Nuxt 4](https://nuxt.com) (Vue 3, Nitro server)
- [@nuxt/content](https://content.nuxt.com) v3 — Markdown content, backed by SQLite (`better-sqlite3`)
- [Tailwind CSS v4](https://tailwindcss.com) via `@tailwindcss/vite`
- [@nuxt/image](https://image.nuxt.com), [@nuxt/fonts](https://fonts.nuxt.com)
- [@nuxtjs/seo](https://nuxtseo.com) (sitemap, robots, OG image, schema.org)
- [@nuxtjs/color-mode](https://color-mode.nuxtjs.org) for theming
- Package manager: **pnpm** (pinned via `packageManager` in `package.json`)
## Setup
Install dependencies:
```bash
pnpm install
```
## Development
Start the dev server on `http://localhost:3000`:
```bash
pnpm dev
```
## Production build
```bash
pnpm build # build the Nitro server output into .output/
pnpm preview # locally preview the production build
```
The server entry point is `.output/server/index.mjs`. It listens on `HOST`/`PORT`
(defaults `0.0.0.0:3000`, or whatever you set via env).
## Docker
The included [`Dockerfile`](./Dockerfile) is a multi-stage build (Alpine):
```bash
docker build -t personal-website .
docker run -p 3002:3002 personal-website
```
The container serves on **port 3002** (`PORT`/`HOST` are set as `ENV`; override at
runtime if your platform injects its own `$PORT`).
### Native dependency note (important)
`@nuxt/content` v3 uses `better-sqlite3`, a **native C++ addon**, to serve content
from a SQLite database. This affects the Docker build in two ways:
1. **Build stage** needs `python3 make g++` to compile `better-sqlite3` (no musl
prebuilt binary ships for Alpine).
2. **Runtime stage** needs **`libstdc++`** installed — the compiled addon links
against it at load time. The base `node:alpine` image does *not* include it,
so without `apk add libstdc++` the server crashes on startup with
`Error loading shared library libstdc++.so.6`, and the container never comes
up (a fronting proxy will show a generic 500 / "temporarily unavailable").
Both are already handled in the `Dockerfile` — keep them if you edit it.
## Releases
This repo uses [semantic-release](https://semantic-release.gitbook.io) with
Conventional Commits. Versioning and `CHANGELOG.md` are generated automatically
from commit messages in CI.
## Learn more
- [Nuxt documentation](https://nuxt.com/docs)
- [Nuxt deployment guide](https://nuxt.com/docs/getting-started/deployment)