Skip to content

Sol-momma/sol-momma-world

Repository files navigation

Sol-momma's World

https://abehiroshi.la.coocan.jp/

Personal portfolio website with a warm editorial aesthetic inspired by The Browser Company, featuring Apple Liquid Glass UI effects and smooth animations.

Live: sol-momma.com

Features

  • Liquid Glass UI -- frosted glass backgrounds, translucent borders, and inner highlights across all interactive elements
  • Dark / Light mode -- theme toggle with animated moon/sun icons, persisted in localStorage
  • 3D avatar tilt -- perspective-based tilt that follows the cursor
  • Typewriter effect -- cycling through roles on the home page
  • Cursor trail -- blue particle dots that follow mouse movement
  • Scroll animations -- elements fade/slide in as they enter the viewport
  • Page transitions -- smooth cross-fade between pages via Astro View Transitions
  • Scroll progress bar -- thin bar at the top showing read progress
  • Name wave -- letters bounce on hover
  • Responsive -- mobile-first, prefers-reduced-motion support

Tech Stack

  • Astro v6 + View Transitions (ClientRouter)
  • Tailwind CSS v4 (Vite plugin)
  • MDX, TypeScript (strict)
  • Prettier (astro + tailwindcss plugins)

Getting Started

With Nix (recommended)

nix develop      # enters shell with Node.js 22 + pnpm
pnpm install
pnpm dev         # localhost:4321

Or with direnv:

direnv allow     # auto-activates on cd into the project
pnpm install
pnpm dev

Without Nix

Requires Node.js >= 22.12.0 and pnpm.

pnpm install
pnpm dev
Command Action
pnpm dev Start dev server at localhost:4321
pnpm build Build production site to ./dist/
pnpm preview Preview build locally
pnpm format Format code with Prettier

Project Structure

src/
β”œβ”€β”€ components/
β”‚   β”œβ”€β”€ Header.astro          # Nav bar (glass pill) + theme toggle
β”‚   β”œβ”€β”€ ThemeToggle.astro     # Dark/light switch with animations
β”‚   β”œβ”€β”€ SocialLinks.astro     # GitHub, LinkedIn, X links
β”‚   β”œβ”€β”€ TimelineItem.astro    # Experience timeline entry
β”‚   β”œβ”€β”€ HeaderLink.astro      # Nav link with active state
β”‚   └── icons/                # SVG icon components (size prop)
β”œβ”€β”€ content/
β”‚   β”œβ”€β”€ blog/                 # Blog posts (Markdown/MDX)
β”‚   └── experience/           # Experience entries for timeline
β”œβ”€β”€ layouts/
β”‚   β”œβ”€β”€ Base.astro            # HTML wrapper + global scripts
β”‚   └── BlogPost.astro        # Blog article layout
β”œβ”€β”€ pages/
β”‚   β”œβ”€β”€ index.astro           # Home (avatar, typewriter, socials)
β”‚   β”œβ”€β”€ about.astro           # Profile grid, tech stack, timeline, contact
β”‚   └── blog/                 # Blog listing & individual posts
β”œβ”€β”€ styles/
β”‚   └── global.css            # Theme tokens, glass utilities, animations
└── consts.ts                 # Site title, description, social URLs

Adding Content

Blog Post

Add a .md or .mdx file to src/content/blog/:

---
title: "Post Title"
description: "Description"
pubDate: "2026-04-03"
---

Content here.

Experience Entry

Add a .md file to src/content/experience/:

---
name: "Company Name"
role: "Role"
period: "2025/04 - present"
order: 5
---

The timeline on the About page updates automatically. order controls sort position; left/right placement alternates.

Theming

Colors are defined as CSS custom properties in global.css under [data-theme="light"] and [data-theme="dark"]. The Liquid Glass tokens (--glass-bg, --glass-border, --glass-shadow, --glass-highlight) adapt to both themes automatically.

To apply glass styling to a new element, add the .glass class or reference the --glass-* variables directly.

License

MIT

About

My portfolio🌏

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

No releases published

Packages

 
 
 

Contributors