| admin/schemas | ||
| assets | ||
| components | ||
| layouts | ||
| pages | ||
| plugins | ||
| public | ||
| server | ||
| stores | ||
| .gitignore | ||
| .npmrc | ||
| AGENTS.md | ||
| app.vue | ||
| Dockerfile | ||
| Dockerfile_upgrade | ||
| LICENSE | ||
| nuxt.config.ts | ||
| package-lock.json | ||
| package.json | ||
| README.md | ||
| tsconfig.json | ||
Portfolio
Michael Winter's portfolio website - a Nuxt 3 application.
⚠️ Important
This portfolio contains the majority of my life's work - compositions, performances, publications, and research.
Before making any changes:
- Ensure you have a backup
- Test changes in development first
- Be careful with data deletions
Overview
- Framework: Nuxt 4 (Vue 3, TypeScript, Tailwind CSS)
- Data: JSON files in
server/data/ - Admin: Password-protected admin panel at
/admin
Prerequisites
- Node.js 22+
- npm
Quick Start
# 1. Install dependencies
npm install
# 2. Create .env file
cp .env_template .env
# Edit .env with your values
# 3. Start development server
npm run dev
Environment Variables (.env)
| Variable | Description | Example |
|---|---|---|
| PASSWORD | Admin password | ************ |
Development
npm run dev # Start development server
npm run build # Build for production
npm run generate # Generate static site
npm run preview # Preview production build
Docker Deployment
The portfolio runs in Docker as part of the main unboundedpress stack.
Build & Start
cd ..
docker compose up -d portfolio
Updating Admin Password
-
Edit
.envin main repo:PASSWORD=your_new_password -
Rebuild and restart:
docker compose up -d --build portfolio
Data Management
Data is stored in JSON files in server/data/:
works.json- Musical worksevents.json- Events and performancespublications.json- Publicationsresume.json- CV/resumetalks.json- Talks and lecturesreleases.json- Album releasesalbum_art/- Album cover imagesscores/- PDF scoresimages/- Gallery images
Editing Data
- Via Admin Panel: Visit
/adminand login - Direct JSON Edit: Edit files in
server/data/directly
Project Structure
portfolio/
├── server/
│ ├── api/ # Server API routes
│ └── data/ # JSON data files
├── pages/ # Vue pages (file-based routing)
├── components/ # Vue components
├── layouts/ # Layout components
├── public/ # Static assets (scores, images)
├── stores/ # Pinia stores
├── .env # Environment variables (not in repo)
└── .env_template # Template for .env