How treymouledoux/portfolio works
This repository implements a personal portfolio website with a Rust service that serves the site and accepts contact submissions. Visitors browse the profile, projects, experience, and social links, then can submit a contact form; the browser posts it to the service, which validates and stores accepted submissions. The frontend also provides responsive navigation, theme switching, and a submission cooldown. Source excerpts show the main rendering, form, and service paths; other integrations or data flows are not inferred.
Main entry points: page.tsx Portfolio Page · sections.tsx Portfolio Sections · contact.ts Contact Client · glass-nav.tsx Glass Navigation
Components 14
Portfolio UI
- Portfolio Page
portfolio-static/app/page.tsx - Site Shell
portfolio-static/app/layout.tsx - Portfolio Sections
portfolio-static/components/portfolio/sections.tsx - Glass Navigation
portfolio-static/components/portfolio/glass-nav.tsx - Glass Effects
portfolio-static/components/GlassFilters.tsx - Site Styles
portfolio-static/app/globals.css - UI Helpers
portfolio-static/lib/portfolio-utils.ts
Portfolio Content
- Portfolio Content
portfolio-static/lib/portfolio-data.ts
Contact Submission
- Contact Form UI
portfolio-static/components/portfolio/sections.tsx - Contact Client
portfolio-static/lib/contact.ts - Web Service
portfolio-serve/src/main.rs - Contact Handler
portfolio-serve/src/main.rs - Submission Log
portfolio-serve/src/main.rs
Other components
- Visitor
Connections 15
- Visitor → Portfolio Page: browses
- Portfolio Page → Glass Navigation: renders
portfolio-static/app/page.tsx - Portfolio Page → Portfolio Sections: renders
portfolio-static/app/page.tsx - Portfolio Page → Contact Client: checks cooldown
portfolio-static/app/page.tsx - Site Shell → Glass Effects: renders
portfolio-static/app/layout.tsx - Site Shell → Site Styles: loads
portfolio-static/app/layout.tsx - Portfolio Sections → Portfolio Content: reads
portfolio-static/components/portfolio/sections.tsx - Portfolio Sections → UI Helpers: uses
portfolio-static/components/portfolio/sections.tsx - Glass Navigation → Portfolio Content: reads navigation
portfolio-static/components/portfolio/glass-nav.tsx - Glass Navigation → UI Helpers: uses
portfolio-static/components/portfolio/glass-nav.tsx - Portfolio Sections → Contact Client: submits form
portfolio-static/components/portfolio/sections.tsx - Contact Client → Web Service: posts contact
portfolio-static/lib/contact.ts - Web Service → Contact Handler: routes POST
portfolio-serve/src/main.rs - Contact Handler → Submission Log: appends record
portfolio-serve/src/main.rs - Contact Handler → Contact Client: returns response
portfolio-static/lib/contact.ts