Skip to content

Hetawk/sanity-react-blog

Repository files navigation

πŸš€ Enoch Kwateh Dongbo Portfolio

A modern, full-stack portfolio application showcasing professional work, research publications, awards, and technical expertise with a beautiful glassmorphism design system.

React Framer Motion Node.js ORCID

✨ Features

🎨 Modern UI/UX

  • Glassmorphism Design System - Stunning glass-morphic cards with backdrop filters and gradient effects
  • Smooth Animations - Framer Motion with spring physics for buttery-smooth transitions
  • Responsive Layout - Optimized for mobile, tablet, and desktop viewing
  • Interactive Components - Hover effects, animated cards, and dynamic content loading

πŸ“š Dynamic Content Sections

  • Publications - 5 unique card types (Publications, Employment, Peer Reviews, Funding, Education) with ORCID integration
  • Awards & Certificates - Grid view with pagination and trophy icons
  • Skills & Technologies - Comprehensive tech stack showcase
  • Work Portfolio - Project showcase with filtering and descriptions
  • About Section - Personal and professional information
  • Contact - Direct links to email, phone, and contact form

πŸ”¬ ORCID API Integration

  • Real-time peer review fetching from ORCID (0009-0005-5213-9834)
  • Dynamic journal name mapping (Physica Scripta, Knowledge-Based Systems)
  • Automatic verification status display
  • Live publication data synchronization

🎯 Interactive Features

  • Animated typewriter effect in header with rotating titles
  • Profile flip card with personal information
  • Download resume functionality
  • Grid/Carousel view toggles for awards
  • Smooth scrolling navigation with active indicators
  • Social media integration

πŸ› οΈ Admin Dashboard

  • Content management for all sections
  • Image upload and management
  • Real-time preview
  • Protected authentication

πŸ–ΌοΈ Screenshots

Header Page Modern glassmorphism header with animated typewriter effect

Contact Page Enhanced contact section with profile flip card

πŸš€ Getting Started

Prerequisites

  • Node.js (v16 or higher)
  • npm or yarn
  • Git

Installation

  1. Clone the repository

    git clone https://github.com/Hetawk/sanity-react-blog.git
    cd sanity-react-blog
  2. Install dependencies

    npm install
  3. Set up environment variables Create a .env file in the root directory:

    REACT_APP_API_URL=your_backend_api_url
    REACT_APP_SANITY_PROJECT_ID=your_sanity_project_id
    REACT_APP_SANITY_TOKEN=your_sanity_token
  4. Start the development server

    npm start
  5. Access the application Open http://localhost:3000 in your browser

Backend Setup (Optional)

If you need to set up the backend API:

cd api
npm install
node server.js

πŸ› οΈ Tech Stack

Frontend

  • React 19.2.0 - UI library
  • Framer Motion 12.23.22 - Animation library with spring physics
  • React Router DOM - Client-side routing
  • React Icons - Icon library
  • SCSS - Styling with variables and mixins

Backend & CMS

  • Node.js - Runtime environment
  • Express.js - Backend API framework
  • Sanity CMS - Resume file storage and dashboard content management
  • MySQL - Database for portfolio data

APIs & Integrations

  • ORCID API - Academic publication and peer review data
  • RESTful API - Custom backend endpoints

Design System

  • Glassmorphism - Modern UI design pattern
  • CSS Custom Properties - Dynamic theming
  • Backdrop Filter - Glass effect
  • Linear Gradients - Color transitions
  • Box Shadows - Depth and elevation

πŸ“ Project Structure

portfolio/
β”œβ”€β”€ public/                 # Static files
β”œβ”€β”€ src/
β”‚   β”œβ”€β”€ api/               # API client configuration
β”‚   β”œβ”€β”€ assets/            # Images, icons, and media
β”‚   β”œβ”€β”€ components/        # Reusable components
β”‚   β”‚   β”œβ”€β”€ Navbar/
β”‚   β”‚   β”œβ”€β”€ AnimatedName/
β”‚   β”‚   β”œβ”€β”€ TypewriterEffect/
β”‚   β”‚   └── ResumeDownload/
β”‚   β”œβ”€β”€ container/         # Main section components
β”‚   β”‚   β”œβ”€β”€ Header/
β”‚   β”‚   β”œβ”€β”€ About/
β”‚   β”‚   β”œβ”€β”€ Work/
β”‚   β”‚   β”œβ”€β”€ Skills/
β”‚   β”‚   β”œβ”€β”€ OrcidWorks/
β”‚   β”‚   β”œβ”€β”€ Awards/
β”‚   β”‚   └── Footer/
β”‚   β”œβ”€β”€ pages/             # Page components
β”‚   β”‚   β”œβ”€β”€ Dashboard/     # Admin dashboard
β”‚   β”‚   └── Contact/
β”‚   β”œβ”€β”€ context/           # React context
β”‚   β”œβ”€β”€ wrapper/           # HOC wrappers
β”‚   └── constants/         # Constants and config
β”œβ”€β”€ api/                   # Backend server
β”œβ”€β”€ docs/                  # Documentation (gitignored)
└── scripts/               # Utility scripts (gitignored)

🎨 Key Design Features

Glassmorphism Cards

All major components use a consistent glassmorphism design:

background: linear-gradient(
  135deg,
  rgba(255, 255, 255, 0.95) 0%,
  rgba(255, 255, 255, 0.9) 100%
);
backdrop-filter: blur(10px);
border: 1px solid rgba(255, 255, 255, 0.3);
box-shadow: 0 8px 32px rgba(255, 76, 41, 0.15), inset 0 1px 0 rgba(255, 255, 255, 0.6);

Animation System

Smooth animations using Framer Motion:

initial={{ opacity: 0, y: 50 }}
whileInView={{ opacity: 1, y: 0 }}
transition={{
  type: "spring",
  stiffness: 100,
  duration: 0.5
}}

Brand Colors

--primary-color: #edf2f8; // Background
--secondary-color: #ff4c29; // Primary accent (orange)
--dark-color: #8e0e00; // Dark accent
--very-dark: #1f1c18; // Very dark accent

πŸ“Š Performance Optimizations

  • βœ… Code splitting with React.lazy()
  • βœ… Image optimization and lazy loading
  • βœ… Memoized components with React.memo()
  • βœ… Efficient re-renders with useCallback and useMemo
  • βœ… Smooth 60fps animations with GPU acceleration
  • βœ… Optimized bundle size

πŸ” Environment Variables

Required environment variables:

# API Configuration
REACT_APP_API_URL=http://localhost:5000

# Sanity CMS (Required for Resume & Dashboard)
REACT_APP_SANITY_TOKEN=your_sanity_token

# ORCID Configuration
REACT_APP_ORCID_ID=0009-0005-5213-9834

🚒 Deployment

Build for Production

npm run build

This creates an optimized production build in the build/ directory.

Deploy to Vercel

npm install -g vercel
vercel

Deploy to Netlify

npm run build
# Upload the build/ directory to Netlify

🀝 Contributing

Contributions, issues, and feature requests are welcome!

  1. Fork the project
  2. Create your feature branch (git checkout -b feature/AmazingFeature)
  3. Commit your changes (git commit -m 'Add some AmazingFeature')
  4. Push to the branch (git push origin feature/AmazingFeature)
  5. Open a Pull Request

πŸ“ License

This project is open source and available under the MIT License.

πŸ‘¨β€πŸ’» Author

Enoch Kwateh Dongbo

πŸ™ Acknowledgments


Made with ❀️ by Enoch Kwateh Dongbo

About

This delopment is all about my portfolio. It was develop using Sanity server for backend and Reactjs for frontend

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages