This repository contains the Astro-based website for Iteron: The Game of Trust and Strategy.
Use this README as the starting point when you begin working on the project.
- Framework: Astro (static-first)
- Styling: Scoped CSS in Astro components + global tokens in layout
- Main app shell: Navbar + page sections + footer
- Target: Fast, readable, design-consistent informational site
- Install dependencies.
npm install- Run local development server.
npm run dev- Build production output.
npm run build- Preview production build.
npm run previewNavigation is defined in src/components/common/Navbar.astro:
- Home: /
- Updates: /updates
- Submission: /submissions
- Results: /results
- About: /about
The landing page is composed in src/pages/index.astro in this order:
- HeroBanner
- IntroCard
- Legacy
- Strategy
- Phases
- Videos
Global shell for all pages lives in src/layouts/Layout.astro, with src/components/common/Navbar.astro and src/components/common/Footer.astro.
Hero behavior is implemented in src/components/sections/HeroBanner.astro:
- Hands are eager-loaded and prioritized because they are above the fold.
- First-visit animation waits for page load and hand image readiness.
- Hero visuals remain hidden until ready state is applied to prevent placeholder or pre-animation flashes.
Fonts are self-hosted through npm dependencies (fontsource) and imported in src/layouts/Layout.astro. This avoids third-party font fetch delays and reduces visible font swapping.
Read these files before making non-trivial changes:
- Architecture decisions and guardrails: documentation/ARCHITECTURE.md
- Component ownership and implementation notes: documentation/COMPONENTS.md
- Contributor workflow and QA checklist: documentation/DEVELOPMENT.md
- Search and indexing implementation details: documentation/SEO.md
- Read the docs above relevant to your change scope.
- Identify whether your change is route-level, section-level, or global.
- Implement minimal targeted changes.
- Validate desktop and mobile behavior.
- Run build.
- Update documentation if behavior or conventions changed.
- src/pages: Route entry points
- src/layouts: Shared page shell and global styles/tokens
- src/components/common: Cross-page components
- src/components/sections: Page sections
- src/assets: Source assets processed by Astro
- public: Static pass-through assets
- documentation: Internal developer documentation
- Keep visual language consistent with the existing brutalist-vaporwave direction.
- Avoid adding client-side scripts unless they solve a concrete interaction need.
- Treat first-load experience as a feature: no flashing placeholders, no jarring layout shifts.
- Keep docs in sync with behavior changes.