Skip to content

literallysofia/literallysofia.github.io

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

126 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

Sofia Silva - Portfolio Website

A personal portfolio website built with Astro + React, showcasing my work as a software engineer.

Tech Stack

  • Framework: Astro 4.x
  • UI Library: React 18 (Islands Architecture)
  • Styling: Vanilla CSS with CSS Custom Properties
  • Deployment: GitHub Actions β†’ GitHub Pages
  • Image Optimization: Astro Image + Sharp

Key Features

  • ⚑ Fast static site generation with minimal JavaScript
  • 🎨 Dark/light mode toggle with localStorage persistence
  • πŸ“± Fully responsive design
  • β™Ώ Accessible navigation and smooth scrolling
  • πŸ–ΌοΈ Optimized images with automatic WebP conversion
  • 🎭 CSS animations (no heavy animation libraries)
  • πŸ”§ Type-safe content collections

Architecture Highlights

Dependency Minimalism

Only 5 production dependencies (79% reduction from previous Gatsby build):

  • astro
  • react
  • react-dom
  • sharp (for image optimization)
  • @astrojs/react (dev dependency)

Component Strategy

  • React Islands (interactive): Header, MobileMenu, DarkModeToggle
  • Astro Components (static): Banner, About, Timeline, Portfolio, Footer
  • SVG Icons (inline): GitHub, LinkedIn, Behance, Link

Project Structure

/
β”œβ”€β”€ public/              # Static assets (favicon, etc.)
β”œβ”€β”€ src/
β”‚   β”œβ”€β”€ assets/         # Images (processed by Astro)
β”‚   β”œβ”€β”€ components/
β”‚   β”‚   β”œβ”€β”€ react/      # React island components
β”‚   β”‚   β”œβ”€β”€ icons/      # SVG icon components
β”‚   β”‚   └── *.astro     # Static Astro components
β”‚   β”œβ”€β”€ content/        # Content collections (markdown)
β”‚   β”‚   β”œβ”€β”€ hero/
β”‚   β”‚   β”œβ”€β”€ about/
β”‚   β”‚   β”œβ”€β”€ experience/
β”‚   β”‚   β”œβ”€β”€ extra-curricular/
β”‚   β”‚   └── portfolio/
β”‚   β”œβ”€β”€ layouts/
β”‚   β”‚   └── Layout.astro
β”‚   β”œβ”€β”€ pages/
β”‚   β”‚   β”œβ”€β”€ index.astro
β”‚   β”‚   └── 404.astro
β”‚   β”œβ”€β”€ styles/         # Vanilla CSS modules
β”‚   └── config.ts       # Site configuration
└── package.json

Development

Prerequisites

  • Node.js 18.x or higher
  • npm 9.x or higher

Setup

# Install dependencies
npm install

# Start development server
npm run dev

# Build for production
npm run build

# Preview production build
npm run preview

Content Management

Content is managed through Astro Content Collections in the src/content/ directory. Each collection has:

  • Type-safe schemas defined in src/content/config.ts
  • Markdown files with frontmatter for structured data
  • Automatic validation and TypeScript types

To update content:

  1. Edit the markdown files in src/content/{collection}/index.md
  2. Follow the existing frontmatter structure
  3. Run npm run dev to see changes instantly

Deployment

The site automatically deploys to GitHub Pages via GitHub Actions when you push to the source branch.

GitHub Pages Setup

  1. Go to repository Settings β†’ Pages
  2. Set Source to "GitHub Actions"
  3. Push to source branch to trigger deployment

The workflow is defined in .github/workflows/deploy.yml.

Styling

Uses vanilla CSS with CSS Custom Properties for:

  • Zero build dependencies for styles
  • Future-proof CSS that works forever
  • Easy theme customization via CSS variables
  • Responsive design with standard media queries

Theme variables are defined in src/styles/theme.css:

:root {
  --font-playfair: "Playfair Display", serif;
  --color-primary: #c38352;
  --color-secondary: #71a7b2;
  /* ... */
}

Browser Support

  • Chrome/Edge (last 2 versions)
  • Firefox (last 2 versions)
  • Safari (last 2 versions)
  • Mobile browsers (iOS Safari, Chrome Mobile)

Performance

  • Lighthouse scores: 95+ performance, 100 accessibility/best-practices/SEO
  • Minimal JavaScript (< 150KB total, mostly React islands)
  • Optimized images with responsive srcsets
  • Fast initial page load with static HTML

License

MIT

Contact


Built with Astro and ❀️

About

πŸ‘©πŸΌβ€πŸ’» Personal website and portfolio.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 3

  •  
  •  
  •