- β¨ Features
- π οΈ Tech Stack
- π Project Structure
- π Quick Start
- π Detailed Setup
- π― Usage
- π Deployment
- π€ Contributing
- π License
- π Contact
- β 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
- β Multi-language Support - Turkish and English
- β Dynamic Language Switch - Real-time language switching
- β Localized Content - All content available in both languages
- β 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
- β 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
- Next.js 15 - React framework with App Router
- React 19 - UI library
- TypeScript - Type-safe JavaScript
- Tailwind CSS 4 - Utility-first CSS framework
- Radix UI - Headless UI components
- Lucide React - Beautiful icons
- Framer Motion - Animation library
- ESLint - Code linting
- PostCSS - CSS processing
- Next Themes - Theme switching
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
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
- Node.js 18+ installed
- npm, yarn, or bun package manager
# 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 installnpm run dev
# or
yarn dev
# or
bun devNavigate to http://localhost:3000 π
-
Install Dependencies
npm install
-
Start Development Server
npm run dev
-
Build for Production
npm run build
-
Start Production Server
npm start
-
Lint Code
npm run lint
No environment variables are required for basic setup. All configuration is handled through:
src/constants/index.ts- Site configuration- Feature-specific JSON data files
-
Personal Information
- Update
src/constants/index.ts - Modify feature-specific JSON files in
src/features/*/data/
- Update
-
Styling
- Colors:
tailwind.config.js - Components:
src/components/ui/
- Colors:
-
Content
- Blog posts:
src/features/blog/data/blogData.json - About info:
src/features/about/data/aboutData.json
- 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
}
]
}// 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"
}
]
}npm install -g vercel
vercel --prodnpm run build
# Upload 'out' directory to NetlifyFROM node:18-alpine
WORKDIR /app
COPY package*.json ./
RUN npm install
COPY . .
RUN npm run build
EXPOSE 3000
CMD ["npm", "start"]Contributions are welcome! Please follow these steps:
- Fork the repository
- Create feature branch
git checkout -b feature/amazing-feature
- Commit changes
git commit -m 'Add amazing feature' - Push to branch
git push origin feature/amazing-feature
- Open Pull Request
- Follow TypeScript best practices
- Use conventional commit messages
- Add tests for new features
- Update documentation
This project is licensed under the MIT License - see the LICENSE file for details.
Berat GΓΌdelek
- π Website: beratgdlk.com
- π§ Email: [email protected]
- πΌ LinkedIn: linkedin.com/in/beratgudelek
- π GitHub: github.com/beratgdlk
- π Medium: medium.com/@beratgdlk
Made with β€οΈ by Berat GΓΌdelek
β Star this repo if you found it helpful!