This document provides a comprehensive overview of Datum Inc. website project structure.
.
├── src/ # Source code
├── public/ # Static files served as-is
├── config/ # Kubernetes and deployment configuration
├── dist/ # Build output (generated)
├── tests/ # End-to-end tests
├── init/ # Database initialization scripts
├── .github/ # GitHub configuration and workflows
├── .vscode/ # VS Code settings
├── astro.config.mjs # Astro configuration
├── docker-compose.yml # Docker Compose configuration
├── Dockerfile # Docker build configuration
├── package.json # Project dependencies and scripts
├── tsconfig.json # TypeScript configuration
├── eslint.config.mjs # ESLint configuration
└── playwright.config.ts # Playwright test configuration
Server-side actions for form submissions and API interactions:
index.ts- Main actions exportnewsletter.ts- Newsletter subscription actionsroadmap.ts- Roadmap-related actions
Reusable UI components organized by feature:
Button.astro- Button componentCard.astro- Card componentContainer.astro- Container wrapperIcon.astro- Icon componentPagination.astro- Pagination componentTableOfContents.astro- Table of contents componentFigure.astro- Figure componentFavicons.astro- Favicons componentAnnouncement.astro- Announcement componentArticleNavigation.astro- Article navigationAside.astro- Aside componentFAQ.astro- FAQ componentGithubStargazerValue.astro- GitHub stargazer counterHero.astro- Hero componentGrafanaResourceGenerator.astro- Grafana resource generatorGrafanaUrlGenerator.astro- Grafana URL generatorGlobalSection.astro- Global section wrapperTeamMemberCard.astro- Team member cardPricingCard.astro- Pricing card component
Header.astro- Site headerFooter.astro- Site footerNav.astro- Navigation componentNavMenu.astro- Navigation menuMobileMenu.astro- Mobile navigation menuLogoDropdown.astro- Logo dropdown menu
About (about/)
Companies.astro- Companies/investors componentInvestors.astro- Investors componentOurMission.astro- Our mission componentOurPurpose.astro- Our purpose componentPeople.astro- People componentProfileModal.astro- Profile modal componentTeam.astro- Team componentWeValue.astro- Values component
Blog (blog/)
Blog.astro- Blog listing pageBlogFilters.astro- Blog filteringBlogItem.astro- Individual blog post cardBlogPagination.astro- Blog paginationFeaturedPost.astro- Featured blog postLatest.astro- Latest posts component
Brand (brand/)
BrandCard.astro- Brand card componentBrandCardImage.astro- Brand card imageBrandCardText.astro- Brand card textColorPalette.astro- Color palette displayNavBrand.astro- Brand navigation
Career (career/)
Benefits.astro- Career benefits componentCulture.astro- Company culture componentJobList.astro- Job listing componentMission.astro- Company mission component
Changelog (changelog/)
Card.astro- Changelog cardSkeleton.astro- Loading skeleton
Events (events/)
Card.astro- Event card componentEventListItem.astro- Event list item componentFeaturedEvent.astro- Featured event componentSkeleton.astro- Loading skeleton
Features (features/)
Cards.astro- Feature cardsGrids.astro- Feature grid layoutTable.astro- Feature comparison table
Forms (forms/)
Contact.astro- Contact formSignup.astro- Signup form
Handbook (handbook/)
Article.astro- Handbook article layoutEditPage.astro- Edit page componentLastUpdated.astro- Last updated componentPageNav.astro- Page navigationSidebar.astro- Handbook sidebar
Home (home/)
FirstSection.astro- First section componentSecondSection.astro- Second section componentVideo.astro- Video componentMediaLightbox.astro- Image and video modal lightbox
Roadmap (roadmap/)
Card.astro- Roadmap cardSkeleton.astro- Loading skeleton
Configuration files:
announcement.ts- Announcement configuration
Content files organized by content type. See CONTENT_STRUCTURE.md for detailed content organization.
about/- About page content and imagesauthors/- Author profiles and assetsblog/- Blog posts and assetscareers/- Career content and assetscategories/- Blog post categorieschangelog/- Changelog entriesdocs/- Documentationfaq/- Frequently asked questionsfeatures/- Feature descriptionshandbook/- Company handbookimages/- Shared images (OG, etc.)legal/- Legal documentspages/- Static page contentpricing/- Pricing configuration (JSON)
Static data files:
logos.json- Logo datanavigation.json- Navigation structuresiteConfig.json- Site configuration
Page layout templates:
Layout.astro- Default layoutLayoutSimple.astro- Simple layoutNotFound.astro- 404 page layout
Reusable utility libraries:
ashby.ts- Ashby API clientauth.ts- Authentication utilitiescache.ts- Caching utilitiescookie.ts- Cookie handlingdatum.ts- Datum API clientfile.ts- File utilitiesgithub.ts- GitHub API clientk8s-client.ts- Kubernetes clientluma/index.ts- Luma integrationmiloapi.ts- Milo API clientoidc.ts- OpenID Connect clientpostgres.ts- PostgreSQL clientstring.ts- String utilities
Page components and routing (file-based routing):
index.astro- Homepage404.astro- 404 error page_[...slug].astro- Catch-all route for dynamic pagesabout/- About pagesabout/index.astro- Main about pageapi/- API routesapi/auth/login.ts- Login API endpointapi/user.ts- User API endpointapi/cache/index.ts/api/cache/[name].ts/api/cache/strapi.ts- Cache inventory (GET), single-key JSON (GET/api/cache/:name), Strapi regenerate (POST); see STRAPI_CACHE_API.mdauth/- Authentication pagesauth/callback.astro- OAuth callbackauth/login.astro- Login pageauth/logout.astro- Logout pageauthors/- Author pagesauthors/[slug]/[page].astro- Author posts with paginationauthors/[slug].astro- Author profile pageblog/- Blog pagesblog/[page].astro- Blog listing with paginationblog/[slug]/[page].astro- Blog post series pagesblog/[slug]/index.astro- Blog post main pageblog/[slug].astro- Blog post pageblog.astro- Blog listingbrand/- Brand pagesbrand/[...slug].astro- Dynamic brand pagesbrand/index.astro- Main brand pagecareers.astro- Careers pagecontact.astro- Contact pagedev/- Developer toolsdev/build.astro- Build status pagedev/info.astro- Build info pagedev/rebuild-glossary.astro- Rebuild glossary pagedocs/- Documentation pagesdocs/llms.txt.ts- LLMs.txt endpointevents.astro- Events pagefeatures/- Feature pagesfeatures/index.astro- Features listing pagehandbook/- Handbook pageshandbook/[...slug].astro- Dynamic handbook pageshandbook.astro- Handbook listinglegal/- Legal pageslegal/[slug].astro- Dynamic legal pagesllms.txt.ts- LLMs.txt endpointpricing.astro- Pricing pageresources/- Resource pagesresources/changelog.astro- Changelog pageresources/open-source.astro- Open source pageresources/roadmap.astro- Roadmap pagerss.xml.js- RSS feedshop/- Shop pagesshop/index.astro- Shop pagewaitlist.astro- Waitlist page
Astro plugins:
announcement.ts- Announcement pluginglossary.ts- Glossary pluginremarkModifiedTime.mjs- Modified time remark pluginsitemap.ts- Sitemap plugin
TypeScript type definitions:
brand.ts- Brand typeschangelog.ts- Changelog typescommon.ts- Common typesfeatures.ts- Feature typesform.ts- Form typesk8s-resources.ts- Kubernetes resource typesnavigation.ts- Navigation typesroadmap.ts- Roadmap typesteam.ts- Team types
Utility functions:
authorUtils.ts- Author utilitiescollectionUtils.ts- Collection utilitiesdateUtils.ts- Date utilitiesenvLogger.ts- Environment loggergithub.ts- GitHub utilitiesiconMap.ts- Icon mappingimageUtils.ts- Image utilitiesllmsUtils.ts- LLMs utilitiesroadmap.ts- Roadmap utilitiesstring.ts- String utilities
Legacy v1 assets and styles:
assets/- Legacy images, SVGs, and other assetsscripts/- Legacy JavaScript filesstyles/- Legacy CSS files
content.config.ts- Content collection configurationentrypoint.ts- Application entry pointenv.d.ts- Environment type definitionsglobal.d.ts- Global type definitionsmiddleware.ts- Astro middleware
Static files served as-is:
fonts/- Web fontsimages/- Static imagesscripts/- Client-side scriptsdownload/- Downloadable assetsfavicons/- Favicon filesfavicon.ico,favicon.png,favicon.svg- Root faviconssite.webmanifest- Web app manifestapple-touch-icon.png- Apple touch icon- Brand logos (SVG files)
Kubernetes and deployment configuration:
base/- Base Kubernetes manifestsdeployment.yaml- Deployment configurationservice.yaml- Service configurationhttp-route.yaml- HTTP route configurationkustomization.yaml- Kustomize configuration
dev/- Development environment configurationpostgres-config.yaml- PostgreSQL configurationpostgres-values.yaml- PostgreSQL Helm values
gateway/- Gateway configurationendpoint.yaml- Endpoint configurationgateway.yaml- Gateway configurationhttproute.yaml- HTTP routehttproute-redirect.yaml- HTTP redirect routekustomization.yaml- Kustomize configurationnamespace.yaml- Namespace configuration
End-to-end tests using Playwright:
e2e/- End-to-end test fileshome.spec.ts- Homepage tests
Generated build artifacts (not committed):
client/- Client-side build outputserver/- Server-side build output
For detailed content organization, see CONTENT_STRUCTURE.md.
- Components: PascalCase (e.g.,
Button.astro,BlogItem.astro) - Pages: kebab-case or PascalCase (e.g.,
index.astro,blog.astro) - Utilities: camelCase (e.g.,
dateUtils.ts,imageUtils.ts) - Types: camelCase (e.g.,
brand.ts,common.ts) - Content: kebab-case (e.g.,
our-purpose.mdx,team.mdx)
Components are organized by feature/domain when they belong to a specific section of the site. Shared/common components are placed directly in src/components/.
Astro uses file-based routing:
- Files in
src/pages/automatically become routes index.astrofiles create index routes_[...slug].astrocreates catch-all dynamic routes- Folders create nested routes