Back to themes

Developer Portfolio

A modern, high-performance personal portfolio and blog built with Astro.js. Designed to showcase your projects and technical writing with blazing-fast performance and exceptional SEO.


Cost

Free


Created by
Cojocaru David

✨ Features


🚀 Blazing fast performance - Built with Astro.js for optimal loading speeds

📝 Full-featured blog - Support for technical articles with code highlighting

🎨 Beautiful UI - Modern, responsive design powered by Tailwind CSS

🌙 Dark mode support - Seamless light/dark theme switching

📱 Fully responsive - Looks great on all devices from mobile to desktop

🔍 SEO optimized - Structured data, meta tags, and optimized for search engines

🏷️ Tag system - Categorize blog posts and projects with tags

📊 Content collection - Organized content management with Astro's content collections

🖼️ Project showcase - Display your work with images, descriptions, and technology tags


🛠️ Tech Stack


Astro.js - Static site generator with excellent performance

React.js - For interactive components

Tailwind CSS - Utility-first CSS framework

TypeScript - Type safety and improved developer experience

MDX - Markdown with JSX for rich content creation

Preact - Lightweight alternative to React for UI components


📋 Prerequisites


Before you begin, ensure you have the following installed:

Node.js (v18 or higher)

npm or yarn

Git


⚙️ Installation & Setup


Clone the repository

  git clone https://github.com/cojocaru-david/portfolio.git
  cd portfolio


Install dependencies

   npm install

or

  yarn install


Start the development server

   npm run dev

or

  yarn dev


Open your browser

  Navigate to http://localhost:4321 to see the site running locally.


📁 Project Structure


portfolio/
├── public/         # Static assets
├── src/
│  ├── components/     # UI components
│  ├── content/      # Content collections
│  │  ├── blog/      # Blog posts in MD/MDX format
│  │  └── projects/    # Project data
│  ├── layouts/      # Page layouts
│  ├── lib/        # Utility functions
│  ├── pages/       # Page routes
│  └── styles/       # Global styles
├── astro.config.mjs    # Astro configuration
├── tailwind.config.cjs   # Tailwind CSS configuration
├── tsconfig.json      # TypeScript configuration
└── package.json      # Project dependencies


🚀 Usage


Creating a Blog Post


Create a new .mdx or .md file in src/content/blog

Add frontmatter with title, description, date, tags, and authors

Write your content using Markdown and MDX components


title: "Your Post Title"
description: "A brief description of your post"
date: 2025-04-20
tags: ["tag1", "tag2", "tag3"]
authors: ["Your Name", "Co-author (optional)"]
Your Post Title


Write your content here using Markdown.


Subheading


More content...


Adding a Project


Create a new .md file in projects

Add project details including name, description, tags, and image path


🌙 Dark Mode


The project includes dark mode support using Tailwind CSS and Preact. It detects user preferences and applies the appropriate theme, with an option to toggle between light and dark modes.


📊 Data Utilities


The project includes several utility functions in data-utils.ts:


getAllPosts() - Retrieve all blog posts

getRecentPosts(count) - Get the most recent posts

getAdjacentPosts(currentId) - Get next and previous posts

getAllTags() - Get all tags used in posts

getSortedTags() - Get tags sorted by usage count

getPostsByAuthor(authorId) - Get all posts by a specific author


🤝 Contributing


Contributions are welcome! Please feel free to submit a Pull Request.


Fork the repository

Create your feature branch (git checkout -b feature/amazing-feature)

Commit your changes (git commit -m 'Add some amazing feature')

Push to the branch (git push origin feature/amazing-feature)

Open a Pull Request


📄 License


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