A modern, professional personal branding website built with Next.js 15, TypeScript, Tailwind CSS, and deployed on Railway. Features a clean design, responsive layout, and powerful content management capabilities.
- Production URL: https://willmclemore.com
- Railway Subdomain: https://willmclemorecom-production.up.railway.app
- Last Updated: January 2025
-
Complete Contact Information Update
- Updated email from
will@willmclemore.comtowill@mclemoreauction.com - Fixed social media handles (GitHub, Facebook, Instagram:
willtmc, LinkedIn:willmclemore) - Added Facebook to social media links
- Updated email from
-
Custom Domain Setup
- Migrated DNS from Hover.com to Cloudflare for better management
- Successfully configured
willmclemore.comwith SSL certificates - Resolved Railway port routing issues (port 8080 configuration)
-
Railway Production Deployment
- Fixed health check failures by disabling Next.js standalone mode
- Configured PostgreSQL database with proper migrations
- Set up environment variables and monitoring
- Established reliable CI/CD pipeline from GitHub
-
Infrastructure Optimization
- Database migrations working correctly
- Health endpoints responding properly (
/api/health) - Performance monitoring and error tracking in place
- 5-Page Architecture: Home, About, Projects, Blog, Contact
- "Bat Signal" System: Prominent availability messaging on homepage focused on auction industry AI automation
- Contact Management: Professional contact form with spam protection
- Project Showcase: Portfolio display ready for auction industry case studies
- Blog System: Content management focused on AI automation and auction industry insights
- Responsive Design: Mobile-first approach with modern UI/UX
- Next.js 15 with App Router for optimal performance
- TypeScript for type safety and better development experience
- Tailwind CSS with custom design system and dark mode support
- Prisma ORM with PostgreSQL for robust data management
- Railway Deployment with health checks and monitoring
- SEO Optimized with sitemap generation and metadata management
- Social Media Integration: Twitter, LinkedIn, GitHub, Facebook, Instagram
- Blog Auto-Syndication: Framework for cross-platform content sharing
- Analytics Integration: Vercel Analytics support
- Contact Form Processing: Validation, spam detection, and professional inquiries
- Theme System: Light/dark mode with system preference detection
- Interview Process: Conduct detailed interviews about Will's completed projects
- Content Collection: Gather project descriptions, outcomes, technologies used
- Case Study Creation: Transform projects into compelling portfolio pieces
- Visual Assets: Add screenshots, diagrams, or relevant project imagery
- Blog Content Planning: Develop content calendar for AI automation and auction industry topics
- SEO Content Optimization: Research and implement industry-specific keywords
- Social Media Integration: Set up auto-syndication for blog posts
- Project Filtering: Add categories (AI Automation, Auction Industry, Consulting)
- Interactive Demos: Where applicable, add live demos or interactive elements
- Client Testimonials: Integrate testimonials and success metrics
- Case Study Deep Dives: Detailed technical breakdowns for interested prospects
- Contact Form Enhancement: Add project type selection and budget ranges
- Consultation Booking: Integrate calendar scheduling for consultations
- Service Packages: Clear presentation of available services and pricing
- Download Resources: White papers, guides, or industry reports
- Google Analytics Setup: Track visitor behavior and conversion paths
- A/B Testing: Test different "bat signal" messages and CTA placements
- Performance Monitoring: Advanced monitoring and alerting
- SEO Optimization: Technical SEO audit and improvements
- Client Portal: Private area for ongoing project collaboration
- Resource Library: Extensive knowledge base and downloadable resources
- Newsletter System: Industry insights and company updates
- Automation Showcases: Interactive demos of AI automation solutions
- API Development: Expose services for integration opportunities
- Advanced Analytics: Custom dashboards for business metrics
- Multi-language Support: If expanding to international markets
- Advanced Security: Enhanced security measures for business applications
- Frontend: Next.js 15, React 19, TypeScript
- Styling: Tailwind CSS, Headless UI, Lucide React Icons
- Backend: Next.js API Routes, Prisma ORM
- Database: PostgreSQL (Railway hosted)
- Deployment: Railway with automatic deployments
- DNS & SSL: Cloudflare management with auto SSL
- Analytics: Vercel Analytics
- Form Handling: React Hook Form with Zod validation
- Node.js 18.0.0 or higher
- PostgreSQL database (local or hosted)
- Railway account for deployment
- Environment variables configured
git clone <repository-url>
cd willmclemore.com
npm installCopy the example environment file and configure your variables:
cp env.example .envConfigure the following environment variables:
# Database
DATABASE_URL="postgresql://username:password@localhost:5432/willmclemore_db?schema=public"
# Site Configuration
SITE_URL="https://willmclemore.com"
SITE_NAME="Will McLemore"
CONTACT_EMAIL="will@mclemoreauction.com"
# Social Media APIs (optional)
TWITTER_API_KEY=""
LINKEDIN_CLIENT_ID=""
GITHUB_TOKEN=""
# Analytics (optional)
VERCEL_ANALYTICS_ID=""
# Email Configuration (optional)
SMTP_HOST=""
SMTP_PORT=""
SMTP_USER=""
SMTP_PASS=""This project uses Railway's PostgreSQL database for both development and production. This simplifies setup and ensures you're always working with real data.
-
Get your Railway database URL:
- Go to your Railway project dashboard
- Click on your PostgreSQL service
- Go to the "Connect" tab
- Copy the
DATABASE_URL
-
Configure your environment file:
cp .env.example .env
-
Update
.envwith your Railway DATABASE_URL:DATABASE_URL="postgresql://postgres:YOUR_PASSWORD@YOUR_HOST.railway.app:PORT/railway" NEXTAUTH_URL="http://localhost:3000" SITE_URL="http://localhost:3000" NEXT_PUBLIC_APP_URL="http://localhost:3000"
-
Start the development server:
npm run dev
That's it! No local database setup required.
# Open Prisma Studio to view/edit data
npm run db:studio
# Run migrations (if schema changes)
npm run db:migrate:dev
# Push schema changes without migration
npm run db:push- Simplicity: No local database containers or Docker required
- Real Data: Always working with your actual content
- No Sync Issues: What you see locally is what's live
- Faster Setup: Get started in minutes, not hours
Production uses Railway's managed PostgreSQL service. The deployment automatically:
- Runs
prisma migrate deployto apply schema changes - Generates the Prisma client
- Starts the application
Environment variables are managed through Railway's dashboard or CLI.
- Create a PostgreSQL database on Railway
- Copy the database URL to your environment variables
- Run database migrations:
npx prisma migrate deploy- Connect your GitHub repository to Railway
- Configure environment variables in Railway dashboard
- Deploy will happen automatically on push to main branch
- Add your custom domain in Railway dashboard
- Important: Ensure the domain port is set to 8080 in Railway settings
- Configure DNS records to point to Railway (CNAME to provided Railway domain)
- SSL certificates are automatically provisioned
Note: If you encounter 502 errors with custom domains, verify the port configuration in Railway's Public Networking settings.
- Create a GA4 property
- Add your Measurement ID to
GOOGLE_ANALYTICS_ID - Analytics will be automatically initialized
- Enable Vercel Analytics in your project
- Add your Analytics ID to
VERCEL_ANALYTICS_ID
The contact form includes:
- Validation: Client and server-side validation with Zod
- Spam Protection: Keyword filtering and rate limiting
- Database Storage: All submissions stored in PostgreSQL
- Email Notifications: Ready for integration with email services
To enable email notifications, configure SMTP settings and implement email sending in /api/contact/route.ts.
The design system is built with Tailwind CSS and includes:
- Color Palette: Primary, secondary, and accent colors
- Typography: Inter font with proper hierarchy
- Components: Reusable UI components with consistent styling
- Dark Mode: Automatic system preference detection
Update content by modifying:
- Constants:
/src/lib/constants.tsfor site-wide settings - Homepage Content:
/src/app/page.tsxfor hero and bat signal - About Content:
/src/app/about/page.tsxfor bio and expertise - Projects: Add to database or modify placeholder data
src/
βββ app/ # Next.js App Router pages
βββ components/ # Reusable React components
βββ lib/ # Utility functions and configurations
βββ types/ # TypeScript type definitions
βββ styles/ # Global styles and Tailwind config
- TypeScript: Use strict typing for all components and functions
- Responsive Design: Mobile-first approach with breakpoint testing
- Performance: Optimize images, lazy load content, minimize bundle size
- SEO: Proper meta tags, structured data, and sitemap generation
- Accessibility: WCAG 2.1 AA compliance with proper ARIA labels
- LCP: Optimized with Next.js Image component and font loading
- FID: Minimal JavaScript with efficient event handling
- CLS: Proper image dimensions and layout stability
- Meta Tags: Dynamic generation for all pages
- Open Graph: Social media sharing optimization
- Sitemap: Automatically generated with proper priorities
- Robots.txt: Search engine crawling configuration
- Input Validation: All forms validated with Zod schemas
- Rate Limiting: API endpoints protected against abuse
- Spam Protection: Multiple layers of spam detection
- Headers: Security headers configured in Next.js config
For questions or issues:
- Check the documentation above
- Review the codebase comments
- Create an issue in the repository
- Contact the development team
This project is proprietary software. All rights reserved.
Built with β€οΈ using Next.js, TypeScript, and modern web technologies.