A modern, responsive portfolio website built with Next.js 15, TypeScript, Tailwind CSS, and Shadcn UI. Features a blog system, project showcase, work experience timeline, and contact form with Telegram integration.
Click here to your portfolio template now:
- Next.js 15 with App Router
- Tailwind CSS for styling
- Shadcn UI components
- Dark/Light mode
- Responsive design
- MDX for blog posts and project details
- Contact Form with Telegram integration
- SEO optimized
- TypeScript for type safety
- Umami Analytics for privacy-focused web analytics
Before you begin, ensure you have the following installed:
- Node.js (v18 or higher)
- Bun (preferred) or npm
Create a .env
file in the root directory with the following variables:
TELEGRAM_BOT_TOKEN="your-token"
TELEGRAM_CHAT_ID="your-chat-id"
GEMINI_API_KEY="your-api-key"
NODE_ENV="development"
NEXT_PUBLIC_URL="http://localhost:3000"
NEXT_PUBLIC_UMAMI_SRC="your-umami-script-url"
NEXT_PUBLIC_UMAMI_ID="your-umami-website-id"
- Create a new bot with @BotFather on Telegram
- Copy the bot token provided
- Start a chat with your bot
- Get your chat ID by:
- Add your
bot
in a group asadmin
- Then send
/id
to @rosebot - Boom! you get your
id
- Add your
-
Visit Umami:
- Self-host Umami or use Umami Cloud
- Follow Umami's installation guide
-
Get your credentials:
- Copy your Umami script URL (ends with
/script.js
) - Get your website ID from Umami dashboard
- Copy your Umami script URL (ends with
-
Configure environment variables:
NEXT_PUBLIC_UMAMI_SRC="https://[your-umami-instance]/script.js" NEXT_PUBLIC_UMAMI_ID="your-website-id"
-
Clone the repository:
git clone https://github.com/ramxcodes/sleek-portfolio.git cd sleek-portfolio
-
Install dependencies:
# Using bun (recommended) bun install # Using npm npm install
-
Run the development server:
# Using bun bun dev # Using npm npm run dev
-
Open http://localhost:3000 in your browser
The project uses configuration files in the src/config
directory for easy customization:
About.tsx
- About section contentContact.tsx
- Contact form settingsExperience.tsx
- Work experience detailsFooter.tsx
- Footer links and contentGears.tsx
- Setup/gear sectionHero.tsx
- Hero section contentMeta.tsx
- SEO and metadataNavbar.tsx
- Navigation linksProjects.tsx
- Project showcase settingsQuote.ts
- Random quotes configurationResume.ts
- Resume section detailsSetup.tsx
- Development setup informationcat.ts
- Enable disable the cat
- Visit Devicon to find the icon you want to add
- Create a new component in
src/components/technologies/
- Follow the existing component structure for consistency
Example:
export const NewTechIcon = () => {
return <svg>// SVG content from devicon</svg>;
};
- Create a new MDX file in
src/data/blog/
- Add metadata and content following existing post structure
- Add blog thumbnail in
public/blog/
- Create a new MDX file in
src/data/projects/
- Add metadata and content following existing project structure
- Add project thumbnail in
public/project/
This project is licensed under the MIT License - see the LICENSE file for details.