|
--- |
|
title: Profile |
|
emoji: π¨ |
|
colorFrom: yellow |
|
colorTo: green |
|
sdk: docker |
|
pinned: false |
|
--- |
|
|
|
# Nawaf Portfolio Website |
|
|
|
A modern, responsive personal website built with React for academic and professional portfolios. |
|
|
|
## Features |
|
|
|
- π± Fully responsive design |
|
- π Markdown support for blog posts and publications |
|
- π¨ Modern UI with customizable theme |
|
- π Sections for publications, projects, experience, and education |
|
- π SEO optimized |
|
- π» Easy to deploy on Hugging Face Spaces |
|
|
|
## Repository Structure |
|
|
|
``` |
|
nawaf-portfolio/ |
|
βββ .gitignore |
|
βββ README.md |
|
βββ app.py # Gradio server for HF Spaces |
|
βββ package.json # Project dependencies |
|
βββ requirements.txt # Python dependencies for Gradio |
|
βββ public/ |
|
β βββ favicon.ico |
|
β βββ index.html |
|
β βββ manifest.json |
|
β βββ assets/ |
|
β βββ img/ |
|
β βββ profile.jpg |
|
β βββ ... |
|
βββ src/ |
|
βββ index.js # Entry point |
|
βββ App.js # Main App component |
|
βββ theme.js # Theme configuration |
|
βββ data/ # All content in JSON format |
|
β βββ about.js |
|
β βββ education.js |
|
β βββ experience.js |
|
β βββ projects.js |
|
β βββ publications.js |
|
β βββ skills.js |
|
β βββ blogs.js |
|
βββ components/ # Reusable components |
|
β βββ Header.js |
|
β βββ Footer.js |
|
β βββ Navigation.js |
|
β βββ EducationCard.js |
|
β βββ ExperienceCard.js |
|
β βββ ProjectCard.js |
|
β βββ PublicationCard.js |
|
β βββ BlogCard.js |
|
β βββ Section.js |
|
β βββ SkillTag.js |
|
βββ pages/ # Page components |
|
βββ Home.js |
|
βββ Publications.js |
|
βββ Projects.js |
|
βββ Blog.js |
|
βββ Resume.js |
|
``` |
|
|
|
## Installation |
|
|
|
1. Clone this repository: |
|
```bash |
|
git clone https://github.com/yourusername/nawaf-portfolio.git |
|
cd nawaf-portfolio |
|
``` |
|
|
|
2. Install dependencies: |
|
```bash |
|
npm install |
|
``` |
|
|
|
3. Start the development server: |
|
```bash |
|
npm start |
|
``` |
|
|
|
## Deployment on Hugging Face Spaces |
|
|
|
### Option 1: Using the Gradio Interface (Recommended) |
|
|
|
1. Create a new Space on Hugging Face: |
|
- Go to [Hugging Face Spaces](https://huggingface.co/spaces) |
|
- Click "Create new Space" |
|
- Choose a name (e.g., "nawaf-portfolio") |
|
- Select "Gradio" as the SDK |
|
- Choose "Public" visibility |
|
- Click "Create Space" |
|
|
|
2. Push your code to the Space's repository: |
|
```bash |
|
git remote add space https://huggingface.co/spaces/yourusername/nawaf-portfolio |
|
git push space main |
|
``` |
|
|
|
3. The Space will automatically build and deploy your application. |
|
|
|
### Option 2: Using Static React Build |
|
|
|
1. Build your React application: |
|
```bash |
|
npm run build |
|
``` |
|
|
|
2. Create a new Space on Hugging Face with "Static" as the SDK. |
|
|
|
3. Push your build folder to the Space's repository. |
|
|
|
## Customization |
|
|
|
### Content |
|
|
|
All content is stored in the `src/data` directory. Edit these files to update your personal information: |
|
|
|
- `about.js` - Bio, contact info, and social links |
|
- `education.js` - Academic history |
|
- `experience.js` - Work experience |
|
- `projects.js` - Research projects |
|
- `publications.js` - Academic publications |
|
- `skills.js` - Technical skills |
|
- `blogs.js` - Blog posts in markdown format |
|
|
|
### Theme |
|
|
|
Edit `src/theme.js` to customize colors, fonts, and other styling variables. |
|
|
|
### Adding Blog Posts |
|
|
|
To add a new blog post: |
|
|
|
1. Create a new entry in `src/data/blogs.js`: |
|
```javascript |
|
{ |
|
id: "unique-id", |
|
title: "Your Blog Title", |
|
date: "March 9, 2025", |
|
excerpt: "Short description of your blog post", |
|
content: ` |
|
# Your Blog Title |
|
|
|
This is the content of your blog post in Markdown format. |
|
|
|
## Subheading |
|
|
|
More content here... |
|
` |
|
} |
|
``` |
|
|
|
### Adding Publications |
|
|
|
Add new publications to `src/data/publications.js`: |
|
```javascript |
|
{ |
|
id: "unique-id", |
|
title: "Publication Title", |
|
authors: "Author 1, Author 2, et al.", |
|
venue: "Journal or Conference Name", |
|
year: "2025", |
|
link: "https://doi.org/..." |
|
} |
|
``` |
|
|
|
## License |
|
|
|
MIT |
|
|