Skip to content

Modern and responsive developer portfolio built with Next.js 15, TypeScript, and Tailwind CSS. Features dark/light themes, multi-language support (TR/EN), blog system, and clean architecture following enterprise standards.

Notifications You must be signed in to change notification settings

beratgdlk/dev-portfolio

Repository files navigation

πŸš€ Berat GΓΌdelek - Developer Portfolio

Logo

Modern, responsive portfolio website built with Next.js 15 and TypeScript

Next.js TypeScript Tailwind CSS React

🌍 Live Demo β€’ πŸ“§ Contact

πŸ“‹ Table of Contents


✨ Features

🎨 UI/UX

  • βœ… Modern Design - Clean, professional interface
  • βœ… Fully Responsive - Works on all devices and screen sizes
  • βœ… Dark/Light Theme - Toggle between themes
  • βœ… Smooth Animations - Framer Motion powered animations
  • βœ… Mobile-First - Optimized for mobile experience

🌍 Internationalization

  • βœ… Multi-language Support - Turkish and English
  • βœ… Dynamic Language Switch - Real-time language switching
  • βœ… Localized Content - All content available in both languages

πŸ“± Pages & Features

  • βœ… Home Page - Hero section with introduction
  • βœ… Blog System - Article management with search
  • βœ… About Page - Personal information and skills
  • βœ… Projects Portfolio - Showcase of development projects
  • βœ… Contact Integration - Social media and email links

πŸ”§ Technical

  • βœ… TypeScript - Full type safety
  • βœ… Server Components - Next.js 15 App Router
  • βœ… SEO Optimized - Meta tags and structured data
  • βœ… Performance - Optimized loading and rendering
  • βœ… Accessible - WCAG guidelines compliance

πŸ› οΈ Tech Stack

Frontend Framework

Styling & UI

Development Tools


πŸ“ Project Structure

dev-portfolio/
β”œβ”€β”€ πŸ“ public/                    # Static assets
β”‚   β”œβ”€β”€ favicon.ico
β”‚   β”œβ”€β”€ logo-bg.svg
β”‚   └── ...
β”‚
β”œβ”€β”€ πŸ“ src/                       # Source code
β”‚   β”œβ”€β”€ πŸ“ app/                   # Next.js App Router
β”‚   β”‚   β”œβ”€β”€ layout.tsx            # Root layout
β”‚   β”‚   β”œβ”€β”€ page.tsx              # Home page
β”‚   β”‚   β”œβ”€β”€ globals.css           # Global styles
β”‚   β”‚   β”œβ”€β”€ πŸ“ blog/              # Blog routes
β”‚   β”‚   β”œβ”€β”€ πŸ“ about/             # About page
β”‚   β”‚   └── πŸ“ projects/          # Projects page
β”‚   β”‚
β”‚   β”œβ”€β”€ πŸ“ features/              # Feature-based modules
β”‚   β”‚   β”œβ”€β”€ πŸ“ home/              # Home page feature
β”‚   β”‚   β”‚   β”œβ”€β”€ πŸ“ components/    # Feature components
β”‚   β”‚   β”‚   β”œβ”€β”€ πŸ“ data/          # Mock data (JSON)
β”‚   β”‚   β”‚   β”œβ”€β”€ πŸ“ types/         # TypeScript types
β”‚   β”‚   β”‚   └── index.tsx         # Main component
β”‚   β”‚   β”œβ”€β”€ πŸ“ blog/              # Blog feature
β”‚   β”‚   β”œβ”€β”€ πŸ“ about/             # About feature
β”‚   β”‚   └── πŸ“ projects/          # Projects feature
β”‚   β”‚
β”‚   β”œβ”€β”€ πŸ“ components/            # Shared components
β”‚   β”‚   β”œβ”€β”€ πŸ“ layout/            # Layout components
β”‚   β”‚   β”‚   β”œβ”€β”€ Header.tsx        # Navigation header
β”‚   β”‚   β”‚   └── Footer.tsx        # Site footer
β”‚   β”‚   └── πŸ“ ui/                # Reusable UI components
β”‚   β”‚       β”œβ”€β”€ button.tsx
β”‚   β”‚       β”œβ”€β”€ card.tsx
β”‚   β”‚       └── badge.tsx
β”‚   β”‚
β”‚   β”œβ”€β”€ πŸ“ contexts/              # React contexts
β”‚   β”‚   └── LanguageContext.tsx   # i18n context
β”‚   β”‚
β”‚   β”œβ”€β”€ πŸ“ hooks/                 # Custom React hooks
β”‚   β”‚   └── index.ts              # Hook exports
β”‚   β”‚
β”‚   β”œβ”€β”€ πŸ“ constants/             # Application constants
β”‚   β”‚   └── index.ts              # Site config
β”‚   β”‚
β”‚   └── πŸ“ lib/                   # Utility functions
β”‚       └── utils.ts              # Helper functions
β”‚
β”œβ”€β”€ πŸ“„ package.json               # Dependencies
β”œβ”€β”€ πŸ“„ tsconfig.json              # TypeScript config
β”œβ”€β”€ πŸ“„ tailwind.config.js         # Tailwind config
β”œβ”€β”€ πŸ“„ next.config.ts             # Next.js config
└── πŸ“„ README.md                  # This file

πŸ—οΈ Architecture Principles

This project follows enterprise-level architectural patterns:

  • 🎯 Feature-Based Organization - Each feature is self-contained
  • 🧩 Atomic Design - Reusable component hierarchy
  • πŸ“± Mobile-First - Responsive design approach
  • πŸ”’ Type Safety - Full TypeScript coverage
  • 🎨 Design System - Consistent UI components
  • ♻️ Clean Code - SOLID principles and clean architecture

πŸš€ Quick Start

Prerequisites

  • Node.js 18+ installed
  • npm, yarn, or bun package manager

1️⃣ Clone & Install

# Clone the repository
git clone https://github.com/beratgdlk/dev-portfolio.git

# Navigate to directory
cd dev-portfolio

# Install dependencies
npm install
# or
yarn install
# or
bun install

2️⃣ Run Development Server

npm run dev
# or
yarn dev
# or
bun dev

3️⃣ Open in Browser

Navigate to http://localhost:3000 πŸŽ‰


πŸ“– Detailed Setup

Development Environment

  1. Install Dependencies

    npm install
  2. Start Development Server

    npm run dev
  3. Build for Production

    npm run build
  4. Start Production Server

    npm start
  5. Lint Code

    npm run lint

Environment Variables

No environment variables are required for basic setup. All configuration is handled through:

  • src/constants/index.ts - Site configuration
  • Feature-specific JSON data files

Customization

  1. Personal Information

    • Update src/constants/index.ts
    • Modify feature-specific JSON files in src/features/*/data/
  2. Styling

    • Colors: tailwind.config.js
    • Components: src/components/ui/
  3. Content

    • Blog posts: src/features/blog/data/blogData.json
    • About info: src/features/about/data/aboutData.json

🎯 Usage

Adding Blog Posts

// src/features/blog/data/blogData.json
{
  "posts": [
    {
      "slug": "new-post-slug",
      "title": "Post Title",
      "description": "Brief description",
      "content": "Full content...",
      "date": "Date",
      "readTime": "X dk okuma",
      "tags": ["tag1", "tag2"],
      "image": null
    }
  ]
}

Adding Projects

// src/features/projects/data/projectsData.json
{
  "projects": [
    {
      "id": "project-id",
      "title": "Project Title",
      "description": "Description",
      "technologies": ["React", "Node.js"],
      "liveUrl": "https://example.com",
      "githubUrl": "https://github.com/...",
      "status": "completed"
    }
  ]
}

🌐 Deployment

Vercel (Recommended)

Deploy with Vercel

npm install -g vercel
vercel --prod

Netlify

npm run build
# Upload 'out' directory to Netlify

Docker

FROM node:18-alpine
WORKDIR /app
COPY package*.json ./
RUN npm install
COPY . .
RUN npm run build
EXPOSE 3000
CMD ["npm", "start"]

🀝 Contributing

Contributions are welcome! Please follow these steps:

  1. Fork the repository
  2. Create feature branch
    git checkout -b feature/amazing-feature
  3. Commit changes
    git commit -m 'Add amazing feature'
  4. Push to branch
    git push origin feature/amazing-feature
  5. Open Pull Request

Development Guidelines

  • Follow TypeScript best practices
  • Use conventional commit messages
  • Add tests for new features
  • Update documentation

πŸ“„ License

This project is licensed under the MIT License - see the LICENSE file for details.


πŸ“ž Contact

Berat GΓΌdelek


Made with ❀️ by Berat Güdelek

⭐ Star this repo if you found it helpful!

About

Modern and responsive developer portfolio built with Next.js 15, TypeScript, and Tailwind CSS. Features dark/light themes, multi-language support (TR/EN), blog system, and clean architecture following enterprise standards.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 2

  •  
  •