How josephamuasi001/my-portfolio works
This is a personal developer portfolio: visitors browse selected work, biography, services and skills, then can submit a project enquiry through the contact form. The React application renders those sections; the form posts to a FastAPI endpoint, which validates the payload, stores it in Supabase and sends an email notification. The backend also documents enquiry retrieval and health/database checks. The frontend section wiring and backend calls are visible in the excerpts and SOURCE INDEX; the retrieval endpoints are documented in the README, but their implementation details were not separately inspected.
Main entry points: App.jsx App shell · enquiries.py Enquiry routes · main.py FastAPI application · database.py Supabase client
Components 18
Portfolio frontend
- React entry
frontend/src/main.jsx - App shell
frontend/src/App.jsx - Navigation and theme
frontend/src/components/Navbar.jsx - Introduction
frontend/src/sections/Hero.jsx - Selected projects
frontend/src/sections/Projects.jsx - About profile
frontend/src/sections/About.jsx - Services
frontend/src/sections/Services.jsx - Skills and stack
frontend/src/sections/Skills.jsx - Contact form
frontend/src/sections/Contact.jsx - Portfolio footer
frontend/src/sections/Footer.jsx
Enquiry API
- FastAPI application
backend/app/main.py - Enquiry routes
backend/app/enquiries.py - Enquiry schema
backend/app/schemas.py
Persistence
- Supabase client
backend/app/database.py - Supabase enquiries
Notifications
- Email notification
backend/app/email_service.py
Other components
- Portfolio visitor
- SMTP server
Connections 18
- Portfolio visitor → React entry: opens portfolio
README.md - React entry → App shell: renders
frontend/src/main.jsx - App shell → Navigation and theme: renders
frontend/src/App.jsx - App shell → Introduction: renders
frontend/src/App.jsx - App shell → Selected projects: renders
frontend/src/App.jsx - App shell → About profile: renders
frontend/src/App.jsx - App shell → Services: renders
frontend/src/App.jsx - App shell → Skills and stack: renders
frontend/src/App.jsx - App shell → Contact form: renders
frontend/src/App.jsx - App shell → Portfolio footer: renders
frontend/src/App.jsx - Contact form → FastAPI application: posts enquiry
frontend/src/sections/Contact.jsx - FastAPI application → Enquiry routes: registers routes
backend/app/main.py - FastAPI application → Supabase client: queries health check
backend/app/main.py - Enquiry routes → Enquiry schema: validates payload
backend/app/enquiries.py - Enquiry routes → Supabase client: reads and writes
backend/app/enquiries.py - Supabase client → Supabase enquiries: connects to
README.md - Enquiry routes → Email notification: sends notification
backend/app/enquiries.py - Email notification → SMTP server: sends email
backend/app/email_service.py