A professional portfolio for senior software engineer Jason Cochran, bringing 28 years of experience building enterprise, web, mobile, and cloud software alongside practical, hands-on AI experience.
# Install dependencies (using pnpm for faster installs)
pnpm install
# Start development server
pnpm devVisit http://localhost:3000
pnpm dev # Start all apps in development mode (uses Turbo)
pnpm build # Build all apps for production
pnpm lint # Run linting across all apps
pnpm type-check # Type check all TypeScript files
pnpm format # Format code with Prettier
pnpm clean # Clean all build artifacts and node_modulescd apps/web
npm run dev # Start just the web app
npm run build # Build just the web app
npm run lint # Lint just the web app
npm run type-check # Type check just the web app
npm run clean # Clean web app build artifactsNote: Root monorepo commands use pnpm. The deployable web app has its own
package-lock.json, and Railway usesnpm ciinsideapps/web.
jason-cochran/
├── apps/
│ └── web/ # Next.js portfolio website
│ ├── app/ # Next.js App Router pages
│ ├── components/ # React components
│ ├── content/ # Blog posts (MDX)
│ ├── lib/ # Utilities
│ └── public/ # Static assets
└── .claude/ # Claude Code configuration
- Package Manager: pnpm at the repo root; npm lockfile for
apps/webdeploys - Monorepo: Turborepo (for fast builds and caching)
- Framework: Next.js 16 (App Router)
- React: 19
- Language: TypeScript
- Styling: Tailwind CSS 4
- Content: Markdown via
gray-matter; MDX loader support is configured but no MDX route is wired yet - Code Quality: ESLint v9 (flat config), Prettier
- Deployment: Railway (Nixpacks,
output: 'standalone')
- Homepage (
/) - Hero section with animated background, featured case studies - Resume (
/resume) - Professional experience, skills, certifications - Projects (
/projects) - Portfolio showcase - ArchGauge case study (
/projects/archgauge) - Current architecture decisions, status, and limitations
- ✨ Animated gradient backgrounds
- 🎭 Smooth transitions and hover effects
- 🌓 Dark mode support
- 📱 Fully responsive design
- 🚀 Optimized performance
- 📊 Evidence-bounded project case studies, including ArchGauge and archived work
- Resume - Edit
apps/web/app/resume/page.tsx - Projects - Edit
apps/web/app/projects/page.tsx - Homepage - Edit
apps/web/app/page.tsx - Photo - Replace the placeholder in hero section
- Blog - Add
.mdxfiles toapps/web/content/blog/
Create a new file in content/blog/your-post.mdx:
---
title: 'Your Post Title'
date: '2025-10-25'
description: 'Brief description'
tags: ['Tag1', 'Tag2']
---
Your content here...Deployed to Railway via Nixpacks. See railway.json for config. The web app uses output: 'standalone' so Railway builds and runs it directly.
cd apps/web
npm ci
npm run build
npm start # runs the standalone serverThis project uses Turborepo for efficient monorepo management:
- Parallel execution: Tasks run concurrently across all apps
- Smart caching: Turborepo caches build outputs for faster rebuilds
- Dependency awareness: Tasks run in the correct order based on dependencies
- Incremental builds: Only rebuild what changed
- 🚀 3-5x faster builds with intelligent caching
- 🔄 Parallel task execution across the monorepo
- 📦 Shared dependencies and code between apps
- 🎯 Consistent tooling across all projects
- Email: me@jasoncochran.io
- LinkedIn: linkedin.com/in/cochranjason
- Location: Midland, TX
MIT
Built with ❤️ using Next.js, React, and Tailwind CSS