A modern, dashboard-style portfolio website built with Next.js and Payload CMS. Clean, professional, and easily customizable for showcasing your work and content.
- Home - Welcome page with an overview of your professional profile
- About - Personal background, skills, and experience
- Projects - Showcase of your work and portfolio pieces
- Contact - Easy ways for visitors to get in touch
- Writings - Blog posts, articles, and written content
- Themes - Switch from Light to Dark mode
- Live Preview - Real-time page updates during content editing
- Newsletter - Subscribe and manage newsletter subscriptions
- SEO - Built-in SEO optimization tools and meta management
- Framework: Next.js - React framework for production
- CMS: Payload CMS - Modern headless CMS
- Styling: Tailwind CSS - Utility-first CSS framework
- Database: MongoDB
- Deployment: Vercel/Netlify ready
Real-time content editing with instant page updates. When editing content in the admin panel, changes are reflected immediately on the frontend without requiring page refreshes. This provides a seamless editing experience and helps you see exactly how your content will look to visitors.
Built-in newsletter subscription system that allows visitors to:
- Subscribe to your newsletter directly from the website
- Manage their subscription preferences
- Unsubscribe easily when needed
- View subscription analytics in the admin panel
Comprehensive SEO tools built into the platform:
- Dynamic meta tags and Open Graph optimization
- Automatic sitemap generation
- Structured data markup
- Image optimization for better performance
- URL slug management
- Meta descriptions and keyword optimization
- Node.js 18+
- Pnpm package manager
- MongoDB database
-
Clone the repository
git clone https://github.com/christianstamati/dashfolio.git cd dashfolio -
Install dependencies
pnpm install
-
Set up environment variables
cp env-example.txt .env.local
Configure your environment variables:
PAYLOAD_SECRET=your-secret-key DATABASE_URL=your-database-connection-string S3_ACCESS_KEY_ID=your-access-key-id S3_SECRET_ACCESS_KEY=your-secret-access-key S3_REGION=your-region S3_BUCKET=your-bucket-name
-
Run the development server
pnpm run dev
-
Access the application
- Frontend: http://localhost:3000
- Admin Panel: http://localhost:3000/admin
dashfolio/
├── app/ # Next.js app directory
│ ├── (frontend)/ # Main portfolio pages
│ │ ├── about/
│ │ ├── contact/
│ │ ├── projects/
│ │ └── writings/
│ └── (payload)/ # Payload CMS admin
│ ├── admin/
│ └── api/
├── components/ # Reusable React components
│ └── ui/ # UI component library
├── payload/ # Payload CMS configuration
│ ├── collections/ # Content collections
│ └── blocks/ # Content blocks
├── hooks/ # Custom React hooks
├── lib/ # Utility functions
├── env/ # Environment configuration
├── public/ # Public assets
├── payload.config.ts # Payload CMS configuration
├── next.config.ts # Next.js configuration
└── package.json # Dependencies
Access the Payload CMS admin panel at /admin to:
- Update your personal information
- Add/edit projects
- Publish writings
- Manage contact information
- Upload media and assets
The project uses Tailwind CSS for styling. Customize the theme by editing:
app/(frontend)/globals.css- Global styles- Component-level styles in individual files
Payload CMS collections are configured in payload/collections/:
Users.ts- Users can access the adminPages.ts- Top level pages ex Home, About etc...Media.ts- File uploads and imagesInquiries.ts- Contact Inquiries (read-only)Projects.ts- Portfolio projects case studiesWritings.ts- Writing articlesCompanies.ts- The companies you worked withCategories.ts- Project categories and tagsRoles.ts- Professional roles and positionsTeammates.ts- Team members and collaborators
Payload CMS globals are configured in payload/globals/:
hero.ts- Hero section content for the homepageselected-projects.ts- Featured projects showcase
- Push your code to GitHub
- Connect your repository to Vercel
- Set environment variables in Vercel dashboard
- Deploy automatically on every push
-
Build the project
pnpm run build
-
Start the production server
pnpm start
MongoDB
DATABASE_URI=mongodb://localhost:27017/dashfolio- Fork the repository
- Create a feature branch (
git checkout -b feature/amazing-feature) - Commit your changes (
git commit -m 'Add amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
This project is licensed under the MIT License. See the LICENSE file for details.
- Next.js for the amazing React framework
- Payload CMS for the powerful headless CMS
- Tailwind CSS for the utility-first styling approach
If you have any questions or need help with setup, please:
- Open an issue on GitHub
- Send me an email: christian.stamati@gmail.com