Skip to content

mwakidenis/mwakidenis.com

Repository files navigation

mwakidenis Next.js Portfolio and Blog Site

This is a modern portfolio built with Next.js and React, featuring rich animations, interactive components, and Markdown-powered content management. It provides a scalable, performant foundation for creative professionals to showcase their work and publish engaging content.


Features

  • Modern UI built with Next.js + React + Sass
  • Dynamic animations powered by GSAP and Parallax.js
  • Interactive carousels with Swiper
  • Markdown-based content management for posts and projects
  • Component-based architecture (Hero, About, Services, Team, Testimonials, etc.)
  • Responsive design and smooth page transitions
  • Blog with pagination and dynamic routing
  • Project portfolio with masonry and grid layouts
  • Contact forms with Formik validation
  • Date utilities with date-fns
  • Cursor effects and scroll animations
  • SEO-optimized pages

Project Structure

mwakidenis-Next.js-Template/
β”œβ”€β”€ src/
β”‚   β”œβ”€β”€ common/                                    # Shared utilities & hooks
β”‚   β”‚   β”œβ”€β”€ cursor.js                             # Custom cursor effects
β”‚   β”‚   β”œβ”€β”€ preloader.js                          # Page preloader
β”‚   β”‚   β”œβ”€β”€ scrollAnims.js                        # Scroll animations
β”‚   β”‚   β”œβ”€β”€ sliderProps.js                        # Slider properties
β”‚   β”‚   β”œβ”€β”€ useClickOutside.js                    # Hook for click outside detection
β”‚   β”‚   β”œβ”€β”€ useLocalStorage.js                    # Local storage hook
β”‚   β”‚   └── utilits.js                            # Utility functions
β”‚   β”‚
β”‚   β”œβ”€β”€ components/                               # Reusable UI components
β”‚   β”‚   β”œβ”€β”€ ImageView.jsx                         # Image viewer component
β”‚   β”‚   β”œβ”€β”€ PageBanner.jsx                        # Page banner section
β”‚   β”‚   β”œβ”€β”€ PageBannerDark.jsx                    # Dark theme banner
β”‚   β”‚   β”œβ”€β”€ PaginatedBlog.jsx                     # Paginated blog posts
β”‚   β”‚   β”œβ”€β”€ Pagination.jsx                        # Pagination controls
β”‚   β”‚   β”œβ”€β”€ ProjectInner[One-Six].jsx             # Project detail templates
β”‚   β”‚   β”œβ”€β”€ ProjectsGrid.jsx                      # Grid layout for projects
β”‚   β”‚   β”œβ”€β”€ ProjectsMasonry.jsx                   # Masonry layout for projects
β”‚   β”‚   β”‚
β”‚   β”‚   β”œβ”€β”€ sections/                             # Page sections
β”‚   β”‚   β”‚   β”œβ”€β”€ About.jsx
β”‚   β”‚   β”‚   β”œβ”€β”€ CallToAction.jsx
β”‚   β”‚   β”‚   β”œβ”€β”€ HeroOne.jsx & HeroTwo.jsx
β”‚   β”‚   β”‚   β”œβ”€β”€ LatestPosts.jsx
β”‚   β”‚   β”‚   β”œβ”€β”€ PopularPosts.jsx
β”‚   β”‚   β”‚   β”œβ”€β”€ Pricing.jsx
β”‚   β”‚   β”‚   β”œβ”€β”€ RelatedPosts.jsx
β”‚   β”‚   β”‚   β”œβ”€β”€ RelatedServices.jsx
β”‚   β”‚   β”‚   β”œβ”€β”€ Services.jsx
β”‚   β”‚   β”‚   β”œβ”€β”€ Subscribe.jsx
β”‚   β”‚   β”‚   └── Team.jsx
β”‚   β”‚   β”‚
β”‚   β”‚   └── sliders/                             # Slider components
β”‚   β”‚       β”œβ”€β”€ Partners.jsx
β”‚   β”‚       β”œβ”€β”€ Projects.jsx
β”‚   β”‚       └── Testimonial.jsx
β”‚   β”‚
β”‚   β”œβ”€β”€ data/                                     # Content & configuration
β”‚   β”‚   β”œβ”€β”€ app.json                              # App configuration
β”‚   β”‚   β”œβ”€β”€ posts/                                # Markdown blog posts
β”‚   β”‚   β”‚   └── *.md                              # Individual post files
β”‚   β”‚   β”œβ”€β”€ projects/                             # Project data
β”‚   β”‚   β”œβ”€β”€ sections/                             # Section configurations
β”‚   β”‚   β”œβ”€β”€ services/                             # Services data
β”‚   β”‚   └── sliders/                              # Slider data
β”‚   β”‚
β”‚   β”œβ”€β”€ layouts/                                  # Layout components
β”‚   β”‚   β”œβ”€β”€ Layouts.js                            # Main layout wrapper
β”‚   β”‚   β”œβ”€β”€ back-to-top/                          # Back to top button
β”‚   β”‚   β”œβ”€β”€ cursor/                               # Cursor layout
β”‚   β”‚   β”œβ”€β”€ footers/                              # Footer components
β”‚   β”‚   β”œβ”€β”€ headers/                              # Header components
β”‚   β”‚   β”œβ”€β”€ pentagon/                             # Pentagon shape layout
β”‚   β”‚   β”œβ”€β”€ preloader/                            # Preloader component
β”‚   β”‚   β”œβ”€β”€ scrollbar-progress/                   # Scrollbar progress indicator
β”‚   β”‚   └── svg-icons/                            # SVG icon components
β”‚   β”‚
β”‚   β”œβ”€β”€ lib/                                      # Helper libraries
β”‚   β”‚   β”œβ”€β”€ categories.js                         # Category utilities
β”‚   β”‚   β”œβ”€β”€ date.js                               # Date utilities
β”‚   β”‚   β”œβ”€β”€ posts.js                              # Blog post utilities
β”‚   β”‚   β”œβ”€β”€ projects.js                           # Project utilities
β”‚   β”‚   β”œβ”€β”€ services.js                           # Services utilities
β”‚   β”‚   └── usePagination.js                      # Pagination hook
β”‚   β”‚
β”‚   β”œβ”€β”€ pages/                                    # Next.js pages
β”‚   β”‚   β”œβ”€β”€ _app.js                               # App wrapper
β”‚   β”‚   β”œβ”€β”€ _document.js                          # Document wrapper
β”‚   β”‚   β”œβ”€β”€ index.jsx                             # Home page
β”‚   β”‚   β”œβ”€β”€ 404.jsx                               # 404 error page
β”‚   β”‚   β”œβ”€β”€ blog.jsx                              # Blog listing
β”‚   β”‚   β”œβ”€β”€ contact.jsx                           # Contact page
β”‚   β”‚   β”œβ”€β”€ projects.jsx                          # Projects page
β”‚   β”‚   β”œβ”€β”€ projects-2.jsx & projects-3.jsx       # Project layout variants
β”‚   β”‚   β”œβ”€β”€ services.jsx                          # Services page
β”‚   β”‚   β”œβ”€β”€ team.jsx                              # Team page
β”‚   β”‚   β”œβ”€β”€ home-2.jsx                            # Alternative home layout
β”‚   β”‚   β”œβ”€β”€ api/                                  # API routes
β”‚   β”‚   β”œβ”€β”€ blog/                                 # Dynamic blog routes
β”‚   β”‚   β”œβ”€β”€ projects/                             # Dynamic project routes
β”‚   β”‚   └── services/                             # Dynamic service routes
β”‚   β”‚
β”‚   └── styles/                                   # Styles
β”‚       β”œβ”€β”€ globals.css                           # Global styles
β”‚       └── scss/                                 # SCSS files
β”‚
β”œβ”€β”€ public/                                       # Static assets
β”‚   β”œβ”€β”€ css/                                      # CSS assets
β”‚   β”‚   └── plugins/                              # Third-party CSS
β”‚   β”‚       β”œβ”€β”€ bootstrap-grid.css
β”‚   β”‚       β”œβ”€β”€ font-awesome.min.css
β”‚   β”‚       β”œβ”€β”€ magnific-popup.css
β”‚   β”‚       └── swiper.min.css
β”‚   β”‚
β”‚   └── img/                                      # Images
β”‚       β”œβ”€β”€ blog/                                 # Blog images
β”‚       β”œβ”€β”€ faces/                                # Profile images
β”‚       β”œβ”€β”€ icons/                                # Icon assets
β”‚       β”œβ”€β”€ partners/                             # Partner logos
β”‚       β”œβ”€β”€ photo/                                # General photos
β”‚       └── works/                                # Portfolio work images
β”‚
β”œβ”€β”€ Documentation/                                # Project documentation
β”‚   β”œβ”€β”€ index.html
β”‚   β”œβ”€β”€ css/                                      # Documentation styles
β”‚   β”œβ”€β”€ fonts/                                    # Fonts
β”‚   β”œβ”€β”€ img/                                      # Documentation images
β”‚   └── js/                                       # Documentation scripts
β”‚
β”œβ”€β”€ jsconfig.json                                 # JavaScript path aliases
β”œβ”€β”€ next.config.js                               # Next.js configuration
β”œβ”€β”€ package.json                                 # Project dependencies
β”œβ”€β”€ LICENSE                                      # License file
└── SECURITY.md                                  # Security guidelines

Installation

  1. Clone the repository

git clone https://github.com/AymaneMehdi/mwakidenis-Next.js-Template.git cd mwakidenis-Next.js-Template


2. **Install dependencies**

```bash
npm install

Running the Project

npm run dev

Runs the project on http://localhost:3000


Building for Production

npm run build
npm start

Tech Stack

Tool / Library Version Description
Next.js 13.4.3 React framework for production apps
React 18.2.0 UI library
Sass 1.49.7 CSS preprocessor for styling
GSAP 3.11.5 Animation library for smooth effects
Parallax.js 3.1.0 Parallax scrolling effects
Swiper 9.0.0 Modern carousel/slider component
Formik 2.4.2 Form management and validation
Gray-matter 4.0.3 Markdown frontmatter parser
Remark 14.0.3 Markdown processor
Remark-HTML 15.0.2 Convert Markdown to HTML
date-fns 2.30.0 Modern date utility library

Scripts

Command Description
npm run dev Run development server
npm run build Build for production
npm start Start production server
npm run lint Run ESLint for code quality

Content Management

Blog Posts

Blog posts are written in Markdown format and stored in src/data/posts/. Each post file includes:

  • Frontmatter (title, date, author, category, image, etc.)
  • Markdown content for the post body

Example: src/data/posts/my-blog-post.md

---
title: "My Blog Post Title"
date: "2024-01-15"
author: "Author Name"
category: "Design"
image: "/img/blog/post-image.jpg"
description: "Post description..."
---

# Blog content goes here...

Projects

Projects are stored in src/data/projects/ with similar structure to blog posts, supporting both grid and masonry layouts.

Services

Service information is managed in src/data/services/ for the services page.


Customization

Adding Custom Animations

Use GSAP in your components:

import { useEffect } from 'react';
import gsap from 'gsap';

export default function MyComponent() {
  useEffect(() => {
    gsap.to('.element', { duration: 1, opacity: 1 });
  }, []);

  return <div className="element">Animated content</div>;
}

Styling with Sass

Global styles are in src/styles/scss/. Create component-specific styles and import them into your components.

Custom Hooks

Use provided hooks in src/common/:

  • useClickOutside() - Detect clicks outside elements
  • useLocalStorage() - Manage local storage

License

This project is licensed under the Strict Proprietary License.


About

βš‘πŸ˜ƒ mwakidenis.com β€” Modern Next.js Creative Portfolio & Blog Platform with GSAP Animations, Markdown Content Management, Dynamic Project Layouts, Responsive Design, and Cloudflare Pages Deployment

Resources

License

Security policy

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors