How harris0519/oliva-and-partners-lawfirm works
Oliva & Partners is a public law-firm website for exploring the firm, its legal services, attorneys, and insights, and submitting a consultation inquiry. Visitors enter through the routed React site; the contact page posts inquiries to an API, where the Node service validates and formats them before sending transactional email through Brevo. The graph includes the documented remote production API. Some page and server relationships rely on the README or SOURCE INDEX; unsampled implementation details are not inferred.
Main entry points: App.jsx Route dispatcher · siteData.js Firm content data · PageHero.jsx Page heading · Contact.jsx Contact form
Components 22
Website shell and routing
- Route dispatcher
src/App.jsx - Page layout
src/components/Layout.jsx - Navigation menu
src/components/Header.jsx - Site footer
src/components/Footer.jsx - Scroll reset
src/components/ScrollToTop.jsx
Firm pages
- Home
src/pages/Home.jsx - About firm
src/pages/About.jsx - Practice areas
src/pages/PracticeAreas.jsx - Practice detail
src/pages/PracticeAreaDetail.jsx - Attorney directory
src/pages/Attorneys.jsx - Attorney profile
src/pages/AttorneyDetail.jsx - Legal insights
src/pages/Insights.jsx - Contact form
src/pages/Contact.jsx - Not found page
src/pages/NotFound.jsx
Shared content and presentation
- Firm content data
src/data/siteData.js - Page heading
src/components/PageHero.jsx - Attorney portrait
src/components/AttorneyPortrait.jsx
Inquiry and email
- Contact API
server/index.js - Inquiry validation and email
server/contactEmail.js
Other components
- Visitor
- Production HRL API
- Brevo email service
Connections 37
- Visitor → Route dispatcher: opens site
README.md - Route dispatcher → Page layout: wraps routes
src/App.jsx - Route dispatcher → Home: routes to
src/App.jsx - Route dispatcher → About firm: routes to
src/App.jsx - Route dispatcher → Practice areas: routes to
src/App.jsx - Route dispatcher → Practice detail: routes to
src/App.jsx - Route dispatcher → Attorney directory: routes to
src/App.jsx - Route dispatcher → Attorney profile: routes to
src/App.jsx - Route dispatcher → Legal insights: routes to
src/App.jsx - Route dispatcher → Contact form: routes to
src/App.jsx - Route dispatcher → Not found page: routes to
src/App.jsx - Page layout → Navigation menu: renders
src/components/Layout.jsx - Page layout → Site footer: renders
src/components/Layout.jsx - Page layout → Scroll reset: renders
src/components/Layout.jsx - Navigation menu → Firm content data: reads navigation data
src/components/Header.jsx - Home → Firm content data: reads firm content
src/pages/Home.jsx - Home → Attorney portrait: renders portraits
src/pages/Home.jsx - Practice areas → Firm content data: reads practice areas
src/pages/PracticeAreas.jsx - Practice areas → Page heading: renders heading
src/pages/PracticeAreas.jsx - Practice detail → Firm content data: reads practice details
src/pages/PracticeAreaDetail.jsx - Practice detail → Page heading: renders heading
src/pages/PracticeAreaDetail.jsx - Attorney directory → Firm content data: reads attorney data
src/pages/Attorneys.jsx - Attorney directory → Attorney portrait: renders portraits
src/pages/Attorneys.jsx - Attorney directory → Page heading: renders heading
src/pages/Attorneys.jsx - Attorney profile → Firm content data: reads profile data
src/pages/AttorneyDetail.jsx - Attorney profile → Attorney portrait: renders portrait
src/pages/AttorneyDetail.jsx - Attorney profile → Page heading: renders heading
src/pages/AttorneyDetail.jsx - Legal insights → Firm content data: reads insights
src/pages/Insights.jsx - Legal insights → Page heading: renders heading
src/pages/Insights.jsx - About firm → Page heading: renders heading
src/pages/About.jsx - Not found page → Page heading: renders heading
src/pages/NotFound.jsx - Contact form → Firm content data: lists practice areas
src/pages/Contact.jsx - Visitor → Contact form: submits inquiry
src/pages/Contact.jsx - Contact form → Production HRL API: posts inquiry
README.md - Contact form → Contact API: posts in development
README.md - Contact API → Inquiry validation and email: uses validation and email
server/index.js - Inquiry validation and email → Brevo email service: sends email
server/contactEmail.js