# DDEV Website for Contributors
August 15, 2023
## Welcome!
I’d like to show you how ddev.com is put together so you can swoop in and improve it.
1. **This time is for you.**
Stop me to ask questions, let me know you’re confused or bored.
2. **This is a tour, not a guide.**
There’s a lot that could be improved; emphasis on “what it is” rather than “how it should be.”
3. **Let’s have fun maybe.**
(No promises.)
## Background
### Old Things
[**Matt**](https://github.com/mattstein) is a designer that’s been doing CMS-based development for clients using PHP, Twig, and different front-end frameworks; master of none fond of writing, documentation, and content strategy.
[**ddev.com**](https://ddev.com) is a former WordPress site, tricky to share access and not the friendliest public welcome to all things DDEV.
### New Thing
Rebuilt + migrated earlier this year to [Astro](https://astro.build)!
- Hat tip Mayank. :tophat:
- Fun to build with!
- Static site generator that sits in a nice front-end sweet spot.
- Flat file + fully accessible to front-end developers in a public repo.
- Friendly to Markdown-writers.
- Key feature: [Astro components](https://docs.astro.build/en/core-concepts/astro-components/)! :sparkles:
- `.astro`, or BYO UI framework (Vue, React, Svelte, etc.).
- Or no UI framework!
- “island architecture”
- HTML and simple components.
- Markdown content collections.
- [Tailwind CSS](https://tailwindcss.com) + [Tailwind Typography](https://tailwindcss.com/docs/typography-plugin).
- Built and hosted with [Cloudflare Pages](https://pages.cloudflare.com).
**tl;dr** if you’re comfortable with Markdown, HTML, CSS, Tailwind, or a modern front-end framework, you can jump right in!
<small>Also TypeScript, kind of.</small>
If you’re comfortable with _all_ of those things, you could make a big dent in ddev.com. :sunglasses:
## Local Setup
Clone <https://github.com/ddev/ddev.com-front-end>.
Add a GitHub key to `.env`.
## Where Content Lives
> :bulb: Consider reading [the readme](https://github.com/ddev/ddev.com-front-end/blob/main/README.md) and especially the [Astro docs](https://docs.astro.build/en/getting-started/).
Markdown, component markup, TypeScript constants, and a JSON blob.
1. Astro components in the [`src/pages/`](https://github.com/ddev/ddev.com-front-end/tree/main/src/pages) directory.
- Start with [404](https://github.com/ddev/ddev.com-front-end/blob/main/src/pages/404.astro) + [homepage](https://github.com/ddev/ddev.com-front-end/blob/main/src/pages/index.astro).
2. Content collections in [`src/content/`](https://github.com/ddev/ddev.com-front-end/tree/main/src/content).
3. Constants in [`src/const.ts`](https://github.com/ddev/ddev.com-front-end/blob/main/src/const.ts).
4. Custom sponsor blob in [`src/featured-sponsors.json`](https://github.com/ddev/ddev.com-front-end/blob/main/src/featured-sponsors.json).
- See featured-sponsors.svg in the [ddev/ddev readme](https://github.com/ddev/ddev).
## How Content is Presented
Attempts to follow Astro conventions, follow DRY principle, and be sparing with additional complexity.
1. [Astro config](https://github.com/ddev/ddev.com-front-end/blob/main/astro.config.mjs).
2. [PostCSS](https://github.com/ddev/ddev.com-front-end/blob/main/postcss.config.cjs) + [Tailwind](https://github.com/ddev/ddev.com-front-end/blob/main/tailwind.config.cjs) + [Tailwind Typography](https://github.com/ddev/ddev.com-front-end/blob/main/tailwind.config.cjs#L48)
3. [`src/lib/api.ts`](https://github.com/ddev/ddev.com-front-end/blob/main/src/lib/api.ts).
- Bonus: the `cache/` directory.
5. Development server vs. building.
- Cloudflare pages builds _static_ output (no SSR).
- Run locally for previewing and instant feedback, but [production and preview branches](https://dash.cloudflare.com/2aecb1c6b99f9d2274b12efc45152be2/pages/view/ddev-com-front-end) are built automatically (similar to Netlify and Vercel).
![Automatic PR comment with Cloudflare Pages build status and link](https://doc.mattstein.com/uploads/5b87aed9-2683-4df3-9ef6-00e1b1ddb68d.png)
## Submitting Changes
Typo directly from GitHub UI.
PR like you would with DDEV or any other project on the planet. (Fork, change, submit PR.)
## Time Permitting
- Astro plugins we’re using.
- [Textlint](https://github.com/ddev/ddev.com-front-end/blob/main/.textlintrc).
## Questions or Grievances?