Personal Portfolio & Blog
A sophisticated, high-performance personal portfolio and blog developed with Astro.js. Engineered to highlight projects and technical articles while delivering exceptional speed, accessibility, and industry-leading SEO.
β¨ Features
- π Exceptional Performance β Leveraging Astro.js to ensure optimal loading speeds and efficiency.
- π Comprehensive Blogging Platform β Supports technical articles with code syntax highlighting for clarity and readability.
- π¨ Elegant User Interface β Features a modern, responsive design utilizing Tailwind CSS for a polished appearance across all devices.
- π Dark Mode Compatibility β Enables seamless switching between light and dark themes to enhance user experience.
- π± Fully Responsive Layout β Provides an optimal viewing experience on all devices, from mobile to desktop.
- π Advanced SEO Optimization β Incorporates structured data and meta tags for superior search engine discoverability.
- π·οΈ Robust Tagging System β Facilitates categorization of blog posts and projects with an integrated tagging mechanism.
- π Organized Content Management β Employs Astroβs content collections for systematic content organization.
- πΌοΈ Professional Project Showcase β Highlights work using descriptive text, images, and technology tags for clear presentation.
π οΈ Tech Stack
- Astro.js β Industry-leading static site generator renowned for superior performance.
- React.js β Powers dynamic and interactive user interface components.
- Tailwind CSS β Utility-first CSS framework enabling rapid, responsive, and maintainable styling.
- TypeScript β Provides robust type safety and enhances overall developer productivity.
- MDX β Seamlessly integrates JSX within Markdown, facilitating rich content creation.
- React β Utilized for modular, reusable UI elements.
π Prerequisites
Before you begin, ensure you have the following installed:
βοΈ Installation & Setup
- Clone the repository
git clone https://github.com/mimukit/mimukit.com.git
cd mimukit.com- Install dependencies
pnpm install- Start the development server
pnpm run dev- Open your browser
Navigate to
http://localhost:3000to see the site running locally.
π Project Structure
mimukit.com/βββ public/ # Static assetsβββ src/β βββ assets/ # Static assetsβ β βββ projects/ # Project imagesβ β βββ blog/ # Blog imagesβ βββ 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
.mdxor.mdfile within thesrc/content/blogdirectory. - Populate the frontmatter section with the required fields:
title,description,date,tags, andauthors. - Compose your article using Markdown syntax, and incorporate MDX components as needed for enhanced functionality.
---
title: 'Your Post Title'
description: 'A concise summary of your article'
date: 2025-04-20
tags: ['tag1', 'tag2', 'tag3']
authors: ['Your Name', 'Co-author (optional)']
---
# Your Post Title
Begin your article here using Markdown syntax. Clearly present your key ideas and provide thorough explanations where appropriate.
## Subheading
Elaborate on your topic with additional insights, technical details, or examples as needed.Adding a Project
To add a new project entry:
- Create a new
.mdfile within thesrc/content/projectsdirectory. - Provide essential project details in the fileβs frontmatter, including:
name,description,tags, and the relative path to the project image.
π Dark Mode
This project offers comprehensive dark mode support leveraging Tailwind CSS and React. User preferences are automatically detected and reflected, with an intuitive toggle provided for seamless switching between light and dark themes.
π Data Utilities
A suite of utility functions is provided in data-utils.ts to facilitate data management and retrieval:
getAllPosts()β Retrieves all blog posts.getRecentPosts(count)β Returns the most recent posts, limited by the specified count.getAdjacentPosts(currentId)β Obtains the next and previous posts relative to the given post ID.getAllTags()β Compiles a list of all tags present across posts.getSortedTags()β Produces a list of tags, sorted by frequency of usage.getPostsByAuthor(authorId)β Retrieves all posts authored by the specified individual.
π€ Contributing
Contributions to this project are highly appreciated. If you would like to contribute, please follow the steps below:
- Fork the repository.
- Create a new feature branch (
git checkout -b feature/your-feature-name). - Commit your changes with a descriptive message (
git commit -m 'Describe your feature or fix'). - Push the branch to your fork (
git push origin feature/your-feature-name). - Submit a Pull Request for review.
Thank you for supporting the project.
π License
This project is distributed under the MIT License. For comprehensive terms and conditions, please refer to the LICENSE file included with this repository.