Skip to content

Project Structure

Verdict Law follows a conventional Astro project layout with reusable components, typed data, content collections, page routes, layouts, images, and public assets separated by role.

public/
favicon.ico
favicon.svg
src/
assets/
  images/
    attorneys/
    blog/
    office/
    practice-areas/
components/
  cards/
  common/
  forms/
  layout/
content/
  attorneys/
  blog/
  practice-areas/
data/
  faq.ts
  firm.ts
  navigation.ts
  structuredData.ts
  testimonials.ts
layouts/
  AttorneyLayout.astro
  BaseLayout.astro
  BlogPostLayout.astro
  PageLayout.astro
  PracticeAreaLayout.astro
pages/
  attorneys/
  insights/
  practice-areas/
  404.astro
  about.astro
  contact.astro
  index.astro
  privacy-policy.astro
  robots.txt.ts
  rss.xml.ts
  terms.astro
styles/
  global.css
consts.ts
content.config.ts
astro.config.mjs
netlify.toml
package.json
package-lock.json
README.md
tsconfig.json

public contains static files copied directly to the final site. Favicons are here because they should keep stable public URLs.

src/assets contains source assets processed by Astro, including optimized images. Use this for images imported by components, pages, layouts, or content.

src/components contains reusable Astro UI pieces. Cards display repeated items, common components handle small interface patterns, form components render forms, and layout components handle site-wide navigation and footer areas.

src/content contains Markdown content collections for attorneys, blog posts, and practice areas.

src/data contains TypeScript data used across the site, such as firm details, navigation, FAQs, testimonials, and structured data.

src/layouts contains page wrappers. Layouts usually combine metadata, shared page structure, and slots for content.

src/pages contains route files. Astro turns files in this folder into URLs, including dynamic routes such as src/pages/attorneys/[slug].astro.

src/styles contains global CSS. In this theme, src/styles/global.css is the main stylesheet entry.

Components are reusable interface pieces. Layouts wrap pages or content entries. Pages define routes. Content collections store validated Markdown data. Static data files store typed values used by components. Public assets are served as-is. Astro assets can be imported and optimized during the build.