A modern portfolio website built with Nuxt 4, showcasing projects, articles, and testimonials with high performance and elegant design.
- π¨ Modern UI/UX - Built with Nuxt UI and custom components with smooth animations
- π Content Management - Nuxt Content for managing articles and projects with markdown
- π― SEO Optimized - Built-in SEO with @nuxtjs/seo for maximum visibility
- π Dark/Light Mode - Automatic theme switching based on user preference
- π± Fully Responsive - Perfect design across all devices
- β‘ Performance First - SSR/SSG with Nuxt 4 for lightning-fast loading
- π Visual Effects - Aurora background, grid patterns, and neon borders
- π Analytics Ready - Google Analytics integration with nuxt-gtag
- π TypeScript - Full type safety for better development experience
- Framework: Nuxt 4 - The Intuitive Vue Framework
- UI Library: Nuxt UI - Beautiful and accessible UI components
- Content: Nuxt Content - File-based CMS
- Styling: TailwindCSS (via Nuxt UI)
- Icons: Iconify (Lucide & Simple Icons)
- Animations: Motion-v
- SEO: @nuxtjs/seo
- Analytics: nuxt-gtag
- Utilities: VueUse
- Package Manager: pnpm
Make sure you have installed:
- Node.js >= 18.x
- pnpm >= 10.x (recommended) or npm/yarn/bun
git clone <repository-url>
cd sekeco.github.iopnpm installCreate a .env file in the project root:
# Site Configuration
NUXT_SITE_URL=http://localhost:3000
NUXT_SITE_NAME=Sekeco
NUXT_SITE_DESCRIPTION=Making a well furnished branding solely for what you're hoping
# Analytics (Optional)
NUXT_PUBLIC_GTAG_ID=G-XXXXXXXXXXpnpm devOpen your browser to http://localhost:3000 π
sekeco.github.io/
βββ app/ # Nuxt application directory
β βββ app.config.ts # App configuration & theme
β βββ app.vue # Root component
β βββ assets/ # Static assets
β β βββ css/
β β β βββ main.css # Global styles
β β βββ icons/ # Custom icons
β βββ components/ # Vue components
β β βββ global/ # Auto-imported global components
β β βββ AuroraBackground.vue
β β βββ GridBackground.vue
β β βββ NeonBorder.vue
β βββ pages/ # File-based routing
β βββ index.vue # Homepage
β βββ articles/ # Articles pages
β β βββ index.vue # Articles list
β β βββ [slug].vue # Single article
β βββ projects/ # Projects pages
β β βββ index.vue # Projects list
β β βββ [slug].vue # Single project
β βββ testimonials/ # Testimonials pages
β βββ index.vue # Testimonials list
β
βββ content/ # Markdown content files
β βββ index.yml # Homepage content
β βββ articles/ # Blog articles
β βββ projects/ # Portfolio projects
β βββ team/ # Team members
β βββ testimonials/ # Client testimonials
β
βββ public/ # Static files (served as-is)
β βββ projects/ # Project images
β
βββ server/ # Server-side code
β βββ tsconfig.json
β
βββ shared/ # Shared utilities & types
β βββ types/
β β βββ index.d.ts
β βββ utils/
β βββ enum.ts
β
βββ content.config.ts # Nuxt Content configuration
βββ nuxt.config.ts # Nuxt configuration
βββ package.json # Dependencies & scripts
βββ pnpm-workspace.yaml # pnpm workspace config
βββ tsconfig.json # TypeScript configuration
βββ eslint.config.mjs # ESLint configuration
# Development
pnpm dev # Start dev server
pnpm dev --host # Expose to network
# Building
pnpm build # Build for production
pnpm generate # Generate static site (SSG)
pnpm preview # Preview production build
# Code Quality
pnpm lint # Run ESLint
pnpm lint:fix # Fix ESLint errors
pnpm typecheck # Check TypeScript types
# Other
pnpm postinstall # Prepare Nuxt (auto-runs after install)Create a new markdown file in content/articles/:
---
title: "Article Title"
description: "Brief article description"
publishedAt: "2025-11-20"
category: "Design"
tags: ["branding", "design"]
image: "/images/article-cover.jpg"
author: "Rasyid Ridho"
---
# Article content starts here
Write your article content with markdown...Create a new markdown file in content/projects/:
---
title: "Project Name"
description: "Project description"
category: "Web Development"
tags: ["nuxt", "vue", "tailwind"]
image: "/projects/project-cover.jpg"
url: "https://example.com"
year: 2025
---
# Project details
Tell about your project...Create a new markdown file in content/testimonials/:
---
name: "Client Name"
role: "Position"
company: "Company Name"
avatar: "/avatars/client.jpg"
rating: 5
---
"Testimonial content here..."Edit app/app.config.ts to change the color scheme:
export default defineAppConfig({
ui: {
colors: {
primary: "blue", // Primary color
secondary: "purple", // Secondary color
info: "sky",
neutral: "zinc",
},
},
})Edit app/assets/css/main.css for custom global CSS.
All UI components use Nuxt UI which can be customized via app.config.ts.
Generate static site:
pnpm generateDeploy the .output/public folder to:
- GitHub Pages
- Netlify
- Vercel
- Cloudflare Pages
- Firebase Hosting
Build for SSR:
pnpm buildDeploy the .output folder to:
- Node.js server
- Vercel
- Netlify
- Railway
- Render
To deploy to GitHub Pages, add a workflow file .github/workflows/deploy.yml:
name: Deploy to GitHub Pages
on:
push:
branches: [main]
jobs:
deploy:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: pnpm/action-setup@v3
with:
version: 10
- uses: actions/setup-node@v4
with:
node-version: 20
cache: "pnpm"
- run: pnpm install
- run: pnpm generate
- uses: peaceiris/actions-gh-pages@v4
with:
github_token: ${{ secrets.GITHUB_TOKEN }}
publish_dir: ./.output/publicnuxt.config.ts is the application configuration center:
- Modules: List of modules used
- App: Transition settings and layout config
- Site: SEO metadata and site info
- Runtime Config: Environment variables
- OG Image: Open Graph image settings
- Google Analytics: Tracking configuration
This project is fully typed with TypeScript. Type definitions are in:
shared/types/index.d.ts- Global types- Component props use TypeScript interfaces
Landing page with hero section, featured projects, and call-to-action.
- List view: Grid of all articles with filter and search
- Detail view: Full article with markdown rendering
- List view: Portfolio gallery with categories
- Detail view: Detailed project case study
Grid view of all client testimonials.
Components in app/components/global/ are auto-imported:
- AuroraBackground - Animated gradient background effect
- GridBackground - Subtle grid pattern overlay
- NeonBorder - Glowing border effect for cards
<template>
<AuroraBackground>
<h1>Your content here</h1>
</AuroraBackground>
</template>This project includes:
- β Automatic meta tags per page
- β Open Graph tags for social sharing
- β Sitemap generation
- β robots.txt
- β Structured data (JSON-LD)
- β Semantic HTML
- β Performance optimization
Google Analytics is automatically enabled in production. Set NUXT_PUBLIC_GTAG_ID in environment variables.
Event tracking is integrated for:
- Page views
- Navigation clicks
- External links
- User interactions
Contributions welcome! Please:
- Fork repository
- Create feature branch (
git checkout -b feature/AmazingFeature) - Commit changes (
git commit -m 'Add some AmazingFeature') - Push to branch (
git push origin feature/AmazingFeature) - Open Pull Request
This project is licensed under the MIT License.
Rasyid Ridho
- Website: sekeco.github.io
- GitHub: @rasyidly
- Nuxt Team - Amazing framework
- Nuxt UI Team - Beautiful components
- Tailwind CSS - Utility-first CSS
- Iconify - Icon framework
- Nuxt Documentation
- Nuxt UI Documentation
- Nuxt Content Documentation
- Vue 3 Documentation
- TypeScript Documentation
Made with β€οΈ by Sekeco Team