profile / README.md
n0w0f's picture
Replace FastAPI with React portfolio
c990683
---
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