|
| 1 | +# RocketPy Team Website - AI Coding Agent Instructions |
| 2 | + |
| 3 | +## Project Overview |
| 4 | +This is a **static marketing website** for RocketPy (rocketpy.org) - an open-source rocket trajectory simulator. The site is deployed via GitHub Pages and consists of pure HTML/CSS with no JavaScript framework. |
| 5 | + |
| 6 | +## Architecture & Structure |
| 7 | + |
| 8 | +### Core Pages |
| 9 | +- `index.html` - Main landing page with project overview, features, and social links |
| 10 | +- `about.html` - Team member profiles page (currently has placeholder content) |
| 11 | + |
| 12 | +### Styling Approach |
| 13 | +- **No CSS framework** - All styles are custom CSS, no Bootstrap/Tailwind usage |
| 14 | +- `css/main.css` - Global styles and layout for index page (1000+ lines) |
| 15 | +- `css/footer.css` - Shared footer component styles |
| 16 | +- `about-css/main.css` - Styles specific to the about page |
| 17 | +- Font Awesome icons loaded via local files in `css/font-awesome/` |
| 18 | + |
| 19 | +### Design System |
| 20 | +- **Custom class naming**: Uses verbose positional class names (e.g., `v33_2`, `v37_87`, `v35_22`) |
| 21 | + - These appear to be from a design tool export (likely Figma) |
| 22 | + - Classes combine position, layout, and content styling |
| 23 | +- **Typography**: Primary fonts are "Ruda" (body) and "Nasalization" (headings) loaded from Google Fonts |
| 24 | +- **Color scheme**: Dark blue/space theme with gradients (`rgba(33, 35, 50, 0.65)`, `rgba(3, 11, 40, 1)`) |
| 25 | + |
| 26 | +### Image Assets |
| 27 | +- Background images referenced in CSS (e.g., `url("../images/Default Background.png")`) |
| 28 | +- Images use cryptic names from design tool exports (`v35_22.png`, `v73_37.png`) |
| 29 | +- Favicon and logo files in `images/` directory |
| 30 | + |
| 31 | +## Development Workflow |
| 32 | + |
| 33 | +### Code Formatting |
| 34 | +```bash |
| 35 | +npm run format # Runs Prettier on all HTML, CSS, JS files |
| 36 | +``` |
| 37 | +Only dev dependency is Prettier (v3.3.3). Always format before committing. |
| 38 | + |
| 39 | +### Deployment |
| 40 | +- **Automatic deployment** via GitHub Actions (`.github/workflows/static.yml`) |
| 41 | +- Triggers on push to `master` branch |
| 42 | +- No build step - deploys entire repository as-is to GitHub Pages |
| 43 | +- Site URL: https://rocketpy.org |
| 44 | + |
| 45 | +## Conventions & Patterns |
| 46 | + |
| 47 | +### HTML Structure |
| 48 | +1. **External resource loading**: Pages load multiple Google Fonts, Bootstrap CDN (only for CSS grid), and Font Awesome |
| 49 | +2. **Inline onclick handlers**: Used sparingly (e.g., simulate button redirects to `https://app.rocketpy.org/`) |
| 50 | +3. **Footer**: Consistent footer component across pages with team info, social links, and company details |
| 51 | + |
| 52 | +### CSS Patterns |
| 53 | +1. **Absolute positioning**: Heavy use of absolute positioning with `top`/`left` percentages for layout |
| 54 | +2. **Background images**: Applied directly via CSS `background: url()` properties |
| 55 | +3. **Responsive considerations**: Limited mobile responsiveness - appears optimized for desktop viewing |
| 56 | +4. **Fixed dimensions**: Many elements use fixed widths (e.g., `width: 600px`) rather than responsive units |
| 57 | + |
| 58 | +### Asset Management |
| 59 | +- No image optimization pipeline - images stored directly in `images/` and `about-images/` |
| 60 | +- Custom font file (`nasalization-rg.otf`) in root directory |
| 61 | +- `node_modules/` gitignored but `package-lock.json` committed |
| 62 | + |
| 63 | +## Integration Points |
| 64 | + |
| 65 | +### External Services |
| 66 | +- **Documentation**: Links to `docs.rocketpy.org` (hosted elsewhere) |
| 67 | +- **Simulation app**: Links to `https://app.rocketpy.org/` (separate application) |
| 68 | +- **GitHub repository**: Main project at `github.com/RocketPy-Team/RocketPy` |
| 69 | +- **Social media**: Instagram, LinkedIn, YouTube, Discord links throughout |
| 70 | + |
| 71 | +### Key Links to Preserve |
| 72 | +- Academic paper: `ascelibrary.org/doi/10.1061/(ASCE)AS.1943-5525.0001331` |
| 73 | +- Documentation examples: `docs.rocketpy.org/en/latest/examples/index.html` |
| 74 | +- Discord invite: `discord.com/invite/b6xYnNh` |
| 75 | + |
| 76 | +## Common Tasks |
| 77 | + |
| 78 | +### Adding New Content |
| 79 | +- Text content is inline in HTML - edit directly in `<span>` elements |
| 80 | +- Maintain class naming pattern for consistency with existing design-tool-exported structure |
| 81 | +- Footer updates require changes in both `index.html` and `about.html` |
| 82 | + |
| 83 | +### Styling Changes |
| 84 | +- Check both `css/main.css` and page-specific CSS files |
| 85 | +- Many styles are tightly coupled to specific class names |
| 86 | +- Background and decorative divs (empty `<div class="v##_##"></div>`) control layout sections |
| 87 | + |
| 88 | +### About Page Work |
| 89 | +- Currently has incomplete/placeholder content with team member sections |
| 90 | +- Images for team members go in `about-images/` |
| 91 | +- Follow the nested structure pattern already present for team member cards |
0 commit comments