Official website for THE GRIND COLLECTIVE, a Chicago-based 501(c)(3) nonprofit organization creating equitable pathways for Black and Brown youth through science, technology, creativity, and social impact.
- Framework: SvelteKit with TypeScript
- Styling: Tailwind CSS v4
- Deployment: Cloudflare Pages (static adapter)
- Node.js 18+
- npm
npm installnpm run devOpen http://localhost:5173 in your browser.
npm run buildnpm run previewsrc/
├── app.css # Global styles and Tailwind config
├── app.html # HTML template
├── lib/
│ ├── components/ # Reusable Svelte components
│ │ ├── Header.svelte
│ │ ├── Footer.svelte
│ │ └── SEO.svelte
│ └── data/ # Static content data
│ ├── content.ts # Site content (mission, values, services)
│ └── partners.ts # Partner organizations list + logos
├── routes/
│ ├── +layout.svelte # Root layout
│ ├── +layout.ts # Prerender config
│ ├── +page.svelte # Home page
│ ├── about/ # About page
│ ├── programs/ # Programs page
│ ├── impact/ # Impact page
│ ├── get-involved/ # Get Involved page
│ ├── contact/ # Contact page
│ └── sitemap.xml/ # XML sitemap endpoint
scripts/
└── fetch-logos.js # Utility script for fetching partner logos
static/
├── images/
│ ├── events/ # Event photos (conference, STEAM camp)
│ └── partners/ # Partner logo assets (SVG/PNG)
└── robots.txt # Robots file for SEO
| Page | Route | Description |
|---|---|---|
| Home | / |
Hero, mission overview, services, partners preview |
| About | /about |
Mission, vision, core values, origin story |
| Programs | /programs |
Services overview, fiscal sponsorship details |
| Impact | /impact |
Partner network by category |
| Get Involved | /get-involved |
Ways to engage, contact info |
| Contact | /contact |
Contact details, social links |
| Color | Hex | Usage |
|---|---|---|
| Grit Orange | #E85C3C |
Primary CTAs, accents |
| Rusted Copper | #B45F36 |
Hover states |
| Urban Charcoal | #2B2B2B |
Text, dark backgrounds |
| Dust Sand | #C89C7A |
Secondary accents |
| Electric Ochre | #F5A623 |
Highlights |
| Off White | #F5F5F0 |
Light backgrounds |
Deploy using Wrangler CLI:
# First time: create the project
wrangler pages project create grind-website --production-branch main
# Build and deploy
npm run build && wrangler pages deploy build --project-name grind-websiteThe site is available at: https://grind-website.pages.dev
Alternatively, connect via the Cloudflare dashboard:
- Go to Cloudflare Dashboard → Workers & Pages → Create
- Connect your GitHub repository
- Configure build settings:
- Build command:
npm run build - Build output directory:
build - Node.js version: 18 or 20 (set
NODE_VERSIONenvironment variable)
- Build command:
To add a custom domain:
- Dashboard: Pages → grind-website → Custom domains → Add
- CLI:
wrangler pages project add-domain grind-website yourdomain.com
This is a static site and can be deployed to any static hosting provider (Vercel, Netlify, GitHub Pages, Firebase Hosting, AWS S3, etc.). Use these build settings:
- Build command:
npm run build - Output directory:
build - Node.js version: 18 or 20
No environment variables required for the static build.
Most site content is centralized in src/lib/data/:
- content.ts - Mission, vision, values, services, navigation
- partners.ts - Partner organizations list and logos for the marquee
- Add logo file (SVG preferred) to
static/images/partners/ - Update
partnersWithLogosarray insrc/lib/data/partners.ts - Ensure logo is visible on white background
See TODO.md for list of partners still needing logos.
- LinkedIn: Already linked to https://www.linkedin.com/company/the-grind-collective/
- Instagram: Commented out in Footer and Contact page. Uncomment and add URL when available:
src/lib/components/Footer.sveltesrc/routes/contact/+page.svelte
The contact email info@grindcollective.org appears in multiple files. Search and replace as needed.
Update the domain in:
src/routes/sitemap.xml/+server.tsstatic/robots.txtsrc/lib/components/SEO.svelte
All rights reserved. THE GRIND COLLECTIVE.