A technical blog exploring software architecture, security, AI, and modern web development. Dive into practical guides, deep technical insights, and real-world solutions for engineers and curious minds.
Desktop:
Mobile:
This is a personal blog built with Next.js and TypeScript, designed to be:
- Minimalistic and distraction-free
- Easy to maintain
- Fast-loading and SEO-friendly
- Dark-mode only with an ultradark color palette
- Framework: Next.js 14 with App Router
- Styling: Tailwind CSS
- Content: Markdown with gray-matter and remark
- Type Safety: TypeScript
- Deployment: Static export (hostable on Netlify, Vercel, GitHub Pages, etc.)
- Node.js 18.17.0 or later
-
Clone the repository:
git clone https://github.com/lpolish/luispulidocom-new-blog.git cd luispulido.com
-
Install dependencies:
npm install
-
Run the development server:
npm run dev
-
Open http://localhost:3000 in your browser.
-
Create a new Markdown file in
src/content/posts/
with a filename that will become the URL slug. -
Add the following frontmatter at the top of the file:
--- title: "Your Post Title" date: "YYYY-MM-DD" excerpt: "A brief description of your post" tags: ["tag1", "tag2"] isFeatured: true # Optional, set to true to feature on homepage --- # Your Post Title Your content goes here...
-
Write your post content using Markdown syntax below the frontmatter.
- Homepage: Edit
src/app/page.tsx
- About: Edit
src/app/about/page.tsx
- Contact: Edit
src/app/contact/page.tsx
npm run build
This will generate static HTML files in the out
directory.
- Netlify: Connect your repository and use the build command
npm run build
with publish directoryout
. - Vercel: Connect your repository and Vercel will automatically detect Next.js settings.
- GitHub Pages: Push the
out
directory to thegh-pages
branch.
├── src/
│ ├── app/ # Pages and routes
│ │ ├── blog/ # Blog listing and post pages
│ │ ├── about/ # About page
│ │ ├── contact/ # Contact page
│ │ ├── layout.tsx # Root layout
│ │ └── page.tsx # Homepage
│ ├── components/ # Reusable components
│ ├── content/ # Content files
│ │ └── posts/ # Blog posts in Markdown
│ └── lib/ # Utility functions
│ └── posts.ts # Blog post handling
├── public/ # Static assets
└── tailwind.config.js # Tailwind configuration
- Adding Images: Place images in the
public/images
directory and reference them as/images/filename.jpg
. - Updating Styling: Modify the theme in
tailwind.config.js
or adjust component styles in their respective files. - SEO: Update metadata in each page's component to improve search engine visibility.
- Local Images: Store images in the
public/images
directory (simplest approach) - Free Alternatives to Cloudinary:
- Imgix has a free tier
- Imgur for simple image hosting
- GitHub repository itself for version-controlled images
This project is MIT licensed.