Skip to content

Commit 1d31fe5

Browse files
committed
Rebuild portfolio with Astro + React islands
Replaces the single index.html with a full Astro project: - Obsidian & Violet design system (near-black + violet accent) - WebGL hero scene via React Three Fiber, degrades gracefully on mobile - GSAP ScrollTrigger animations + Lenis smooth scroll - Magnetic CTAs, 3D card tilt on desktop - Four real project cards: Echo Software, FFP, Portfolio App, SkyCast - Glassmorphic sticky nav with focus-trapped mobile drawer - FormSubmit.co contact form preserved - GitHub Actions workflow for Pages deployment
1 parent 5a33b9f commit 1d31fe5

27 files changed

Lines changed: 8958 additions & 1059 deletions

‎.github/workflows/deploy.yml‎

Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,42 @@
1+
name: Deploy to GitHub Pages
2+
3+
on:
4+
push:
5+
branches: [main]
6+
workflow_dispatch:
7+
8+
permissions:
9+
contents: read
10+
pages: write
11+
id-token: write
12+
13+
concurrency:
14+
group: pages
15+
cancel-in-progress: false
16+
17+
jobs:
18+
build:
19+
runs-on: ubuntu-latest
20+
steps:
21+
- uses: actions/checkout@v4
22+
- uses: actions/setup-node@v4
23+
with:
24+
node-version: 20
25+
cache: npm
26+
- name: Install dependencies
27+
run: npm ci
28+
- name: Build site
29+
run: npm run build
30+
- uses: actions/upload-pages-artifact@v3
31+
with:
32+
path: dist/
33+
34+
deploy:
35+
needs: build
36+
runs-on: ubuntu-latest
37+
environment:
38+
name: github-pages
39+
url: ${{ steps.deployment.outputs.page_url }}
40+
steps:
41+
- id: deployment
42+
uses: actions/deploy-pages@v4

‎.gitignore‎

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
node_modules/
2+
dist/
3+
.astro/
4+
.env
5+
.env.*
6+
!.env.example
7+
*.log
8+
.DS_Store
9+
Thumbs.db

‎README.md‎

Lines changed: 36 additions & 40 deletions
Original file line numberDiff line numberDiff line change
@@ -1,60 +1,56 @@
1-
# Portfolio Website - Ronan Roberts
1+
# Ronan Roberts - Portfolio
22

3-
A responsive, professional portfolio website designed to showcase software engineering projects, technical skills, and professional experience. The site features a modern dark-themed UI and is built for deployment on GitHub Pages.
3+
Personal portfolio site. Built with Astro + React islands, deployed to GitHub Pages.
44

5-
## Live Demo
5+
## Stack
66

7-
https://ronan-r-r.github.io
7+
- Astro 4 (static output)
8+
- React 18 (islands only: 3D hero, contact form)
9+
- React Three Fiber + Three.js (WebGL hero, desktop only)
10+
- GSAP + Lenis (scroll animations, smooth scroll)
11+
- Tailwind CSS 3
12+
- Fontsource Variable (Inter + Space Grotesk, self-hosted via npm)
13+
- FormSubmit.co (contact form, no backend)
814

9-
## Features
15+
## Local dev
1016

11-
- **Responsive Design:** Fully adaptive layout that works on mobile, tablet, and desktop devices.
12-
- **Modern UI:** Dark mode aesthetic using CSS variables for consistent theming.
13-
- **Project Showcase:** Grid layout to display featured projects with technology tags.
14-
- **Experience Timeline:** Vertical timeline displaying career history and education.
15-
- **Functional Contact Form:** Integrated with FormSubmit.co for serverless email handling via AJAX.
16-
- **Smooth Navigation:** Sticky header with smooth scrolling to section anchors.
17+
```
18+
npm install
19+
npm run dev
20+
```
1721

18-
## Technologies Used
22+
## Build
1923

20-
- **HTML5:** Semantic markup structure.
21-
- **CSS3:** Flexbox, CSS Grid, Media Queries, and CSS Variables.
22-
- **JavaScript:** DOM manipulation, Mobile Menu toggling, and Fetch API for the contact form.
23-
- **Font Awesome:** Iconography.
24-
- **Google Fonts:** Typography (Inter font family).
24+
```
25+
npm run build
26+
npm run preview
27+
```
2528

26-
## Installation and Local Setup
29+
## Deploy
2730

28-
1. Clone the repository:
29-
git clone https://github.com/Ronan-R-R/Ronan-R-R.github.io.git
31+
Pushes to `main` trigger the GitHub Actions workflow at `.github/workflows/deploy.yml`, which builds Astro and deploys the `dist/` output to GitHub Pages.
3032

31-
2. Navigate to the project directory:
32-
cd Ronan-R-R.github.io
33+
One-time setup: go to **Settings > Pages**, set **Source** to **GitHub Actions**.
3334

34-
3. Open the index.html file in your preferred web browser to view the site locally.
35+
## Adding a project
3536

36-
## Configuration
37+
Edit `src/components/ProjectsSection.astro`. Add an entry to the `projects` array at the top of the file. Drop a preview image (AVIF/WebP/SVG preferred) into `public/images/` and reference it in the `image` field.
3738

38-
### Contact Form
39-
The contact form uses FormSubmit.co to send emails without a backend server.
39+
## Replacing placeholder images
4040

41-
1. In index.html, the fetch URL is set to: https://formsubmit.co
42-
2. When the first submission occurs, FormSubmit will send an activation email to the address specified.
43-
3. You must click "Activate" in that email for the form to start forwarding messages to your inbox.
41+
The four placeholder SVGs in `public/images/` are branded stand-ins. Replace them with real screenshots named identically:
4442

45-
### Icons
46-
The site uses Font Awesome CDN. If icons do not load, ensure you have an active internet connection or update the CDN link in the head tag.
43+
- `echo-software.svg` (or `.avif`, `.webp`)
44+
- `ffp.svg`
45+
- `portfolio-app.svg`
46+
- `skycast.svg`
4747

48-
## Deployment
48+
If you switch to AVIF/WebP, update the `src` paths in `ProjectsSection.astro`.
4949

50-
This project is designed to be hosted on GitHub Pages.
50+
## Contact form
5151

52-
1. Push the index.html file to your repository (main branch).
53-
2. Go to Repository Settings > Pages.
54-
3. Under "Build and deployment", select "Deploy from a branch".
55-
4. Select "main" as the branch and "/" as the folder.
56-
5. Click Save.
52+
FormSubmit.co delivers messages to `ronanr2003@gmail.com`. The first submission after a fresh activation will trigger a confirmation email from FormSubmit - click Activate to start receiving messages.
5753

58-
## License
54+
## Live site
5955

60-
This project is open source and available for personal use and modification.
56+
https://ronan-r-r.github.io

‎astro.config.mjs‎

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
import { defineConfig } from 'astro/config'
2+
import react from '@astrojs/react'
3+
import tailwind from '@astrojs/tailwind'
4+
5+
export default defineConfig({
6+
integrations: [
7+
react(),
8+
tailwind({ config: './tailwind.config.mjs' }),
9+
],
10+
output: 'static',
11+
})

0 commit comments

Comments
 (0)