A modern, full-stack portfolio website built with SvelteKit, featuring a blog system, contact management, and admin panel.
- Responsive design optimized for mobile and desktop
- Project showcase with live demo and repository links
- Skills and expertise sections
- Contact form with auto-reply functionality
- Blog with markdown support
- Hidden admin access (click copyright symbol 5 times)
- Secure authentication with password protection
- Blog post management (create, edit, delete, publish/draft)
- Contact management system with email threading
- Markdown support for email replies with live preview
- SMTP integration for sending emails
- IMAP integration for receiving replies
- Contact numbering system for tracking conversations
- Status tracking (new, replied, closed)
- MongoDB for data storage
- Email system with markdown-to-HTML conversion
- Automatic reply on form submission
- Email thread matching by contact number
- Duplicate prevention and cleanup tools
- Mobile-responsive throughout
- Framework: SvelteKit
- Styling: Tailwind CSS
- Database: MongoDB
- Email: Nodemailer (SMTP), IMAP
- Markdown: Marked, html-to-text
- Language: TypeScript
- Node.js 18+
- MongoDB database (MongoDB Atlas recommended)
- Email account with SMTP/IMAP access (Gmail recommended)
- Clone the repository:
git clone https://github.com/gamerwaves/website.git
cd website- Install dependencies:
pnpm install- Configure environment variables:
Create a
.envfile in the root directory:
ADMIN_PASSWORD=your-secure-password
MONGODB_URI=mongodb+srv://username:[email protected]/portfolio
SMTP_HOST=smtp.gmail.com
SMTP_PORT=587
SMTP_USER=[email protected]
SMTP_PASS=your-app-password
IMAP_HOST=imap.gmail.com
IMAP_PORT=993
IMAP_USER=[email protected]
IMAP_PASS=your-app-passwordFor Gmail, generate an App Password at https://myaccount.google.com/apppasswords
pnpm run devpnpm run buildpnpm run previewAccess the admin panel at /admin or click the copyright symbol in the footer 5 times.
- Blog Management: Create and edit blog posts with markdown
- Contact Management: View messages, reply with markdown formatting, track conversation threads
- Email Sync: Manually sync replies from IMAP
- Cleanup Tools: Remove duplicates and convert HTML emails to text
src/
├── lib/
│ ├── server/
│ │ ├── db.ts # MongoDB connection
│ │ └── email.ts # Email utilities
│ └── stores/
│ └── blog.ts # Blog types
├── routes/
│ ├── admin/
│ │ ├── contacts/ # Contact management
│ │ └── +page.svelte # Admin dashboard
│ ├── api/
│ │ ├── contact/ # Contact form API
│ │ ├── sync-replies/ # Email sync API
│ │ └── cleanup-contacts/ # Cleanup API
│ ├── blog/
│ │ ├── [slug]/ # Individual blog posts
│ │ └── +page.svelte # Blog listing
│ └── +page.svelte # Homepage
└── app.css # Global styles
Dwait Pandhi
- Website: https://gamerwaves.hackclub.app
- GitHub: https://github.com/gamerwaves
- Email: [email protected]