The official Mage-OS website built with Astro, featuring a product-focused design that showcases the Mage-OS Distribution as the community-driven Magento alternative.
- Overview
- Tech Stack
- Getting Started
- Project Structure
- Content Management
- Configuration
- Commands
- Deployment
- Contributing
- Communication Standards
| Section | Pages |
|---|---|
| Homepage | / |
| Product | /product, /product/features, /product/roadmap, /product/releases |
| Get Started | /get-started, /get-started/quick-start, /get-started/installation, /get-started/migration-guide, /get-started/system-requirements |
| Documentation | /documentation |
| Community | /community |
| Events | /events |
| About | /about, /about/leadership, /about/ambassadors, /about/contributors, /about/statutes |
| FAQ | /faq |
| Legal | /privacy, /terms, /code-of-conduct, /imprint |
| Blog | /blog |
| Component | Choice | Purpose |
|---|---|---|
| Framework | Astro 5.x | Static site generation with component islands |
| Base Theme | AstroWind | Production-ready Astro template |
| Styling | Tailwind CSS | Utility-first CSS with dark mode support |
| CMS | Sveltia CMS | Git-based CMS with GitHub backend |
| Content | MDX + YAML | Markdown with components and data files |
- Node.js (v18.17.1+, v20.3.0+, or v21.0.0+)
- npm or yarn package manager
-
Clone the repository:
git clone https://github.com/mage-os/mage-os-org.git cd mage-os-org -
Install dependencies:
npm install
-
Start the development server:
npm run dev
-
Open http://localhost:4321 in your browser.
mage-os.org/
├── public/
│ ├── admin/ # Sveltia CMS configuration
│ ├── _redirects # URL redirects for hosting
│ └── robots.txt
├── src/
│ ├── assets/
│ │ ├── favicons/
│ │ ├── images/
│ │ │ ├── blog/ # Blog post images by year
│ │ │ ├── events/ # Event images
│ │ │ └── team/ # Leadership photos
│ │ └── styles/
│ ├── components/
│ │ ├── blog/ # Blog-specific components
│ │ ├── common/ # Shared components
│ │ ├── ui/ # UI primitives
│ │ ├── widgets/ # Page section widgets
│ │ └── Logo.astro # Site logo
│ ├── content/
│ │ └── config.ts # Content collection schemas
│ ├── data/
│ │ ├── post/ # Blog posts (Markdown/MDX)
│ │ ├── events/ # Event entries (Markdown)
│ │ ├── homepage/ # Homepage section data (YAML)
│ │ └── partners.yaml
│ ├── layouts/
│ │ ├── Layout.astro
│ │ ├── PageLayout.astro
│ │ └── ContentPageLayout.astro
│ ├── pages/ # Route pages
│ ├── utils/ # Utility functions
│ ├── config.yaml # Site configuration
│ └── navigation.ts # Navigation structure
├── astro.config.ts
├── tailwind.config.js
└── package.json
| Collection | Schema Location | Data Location | Purpose |
|---|---|---|---|
| Blog Posts | src/content/config.ts |
src/data/post/ |
News, updates, announcements |
| Events | src/content/config.ts |
src/data/events/ |
Community events and meetups |
The site includes Sveltia CMS for non-technical content editing at /admin.
CMS Collections:
- Blog Posts: Create and edit blog posts
- Events: Manage community events
- Homepage: Edit hero, stats, testimonials
- Partners: Manage partner listings
Setup Requirements:
- GitHub OAuth application configured for authentication
- Repository access for the GitHub backend
New Blog Post:
# Create a new post file
touch src/data/post/2026-01-15-my-new-post.md---
title: My New Post
publishDate: 2026-01-15
author: Your Name
category: news
tags:
- announcement
image: ~/assets/images/blog/2026/my-image.jpg
excerpt: A brief description of the post.
---
Your content here...New Event:
---
title: Mage-OS Community Meetup
publishDate: 2026-01-20
startDate: 2026-02-15T18:00:00
endDate: 2026-02-15T21:00:00
location: Online
image: ~/assets/images/events/meetup.jpg
excerpt: Join us for our monthly community meetup.
---
Event details...Edit src/config.yaml for site-wide settings:
site:
name: 'Mage-OS'
site: 'https://mage-os.org'
base: '/'
trailingSlash: false
metadata:
title:
default: 'Mage-OS'
template: '%s - Mage-OS'
description: 'The community-driven Magento distribution'
# ... SEO settingsEdit src/navigation.ts to update site navigation:
export const headerData = {
links: [
{ text: 'Product', links: [...] },
{ text: 'Get Started', links: [...] },
// ...
],
actions: [{ text: 'Download', href: '...' }],
};Customize appearance in:
src/components/CustomStyles.astro- Font families and colorssrc/assets/styles/tailwind.css- Tailwind customizationstailwind.config.js- Tailwind configuration
Run all commands from the astro/ directory:
| Command | Action |
|---|---|
npm install |
Install dependencies |
npm run dev |
Start dev server at localhost:4321 |
npm run build |
Build production site to ./dist/ |
npm run preview |
Preview production build locally |
npm run check |
Check project for errors |
npm run fix |
Run ESLint and format with Prettier |
npm run buildThe optimized site is generated in the dist/ folder.
Cloudflare Pages is the recommended hosting platform, providing edge deployment, automatic HTTPS, and preview deployments for every PR.
- Log in to Cloudflare Dashboard
- Go to Workers & Pages → Create application → Pages
- Click Connect to Git → Authorize GitHub → Select the repository
- Configure build settings:
| Setting | Value |
|---|---|
| Build command | npm run build |
| Build output directory | dist |
| Root directory | astro |
- Add environment variable:
NODE_VERSION=20 - Click Save and Deploy
Cloudflare Pages automatically creates preview deployments for every branch and pull request:
| Branch | URL Pattern |
|---|---|
main (production) |
https://mage-os.org or https://<project>.pages.dev |
| Feature branches | https://<branch-name>.<project>.pages.dev |
| Pull requests | https://<commit-hash>.<project>.pages.dev |
Example: A PR from branch feature/new-hero deploys to https://feature-new-hero.mage-os-website.pages.dev
Preview URLs are automatically posted as comments on pull requests.
For a dedicated staging environment with a custom domain:
- Create a
stagingbranch in GitHub - In Cloudflare Pages → Settings → Builds & deployments
- Under Branch deployments, configure:
- Production branch:
main - Preview branches: Include
staging
- Production branch:
- Go to Custom domains → Add
staging.mage-os.org - Configure DNS to point
staging.mage-os.orgto Cloudflare Pages
Trigger a manual deployment:
# Via GitHub Actions (uses deploy hook)
gh workflow run scheduled-deploy.yaml
# Or push to main branch
git push origin mainTo rollback to a previous deployment:
- Go to Cloudflare Pages → Your project → Deployments
- Find the previous working deployment
- Click the three-dot menu → Rollback to this deployment
Alternatively, revert the commit in Git and push to trigger a new deployment.
- Build logs: Cloudflare Pages → Deployments → Select deployment → View logs
- Analytics: Cloudflare Dashboard → Analytics & Logs → Web Analytics
- Real-time errors: Enable Cloudflare Web Analytics for Core Web Vitals
Legacy WordPress URLs are redirected via public/_redirects:
| Old URL | New URL |
|---|---|
/privacy-policy |
/privacy |
/leadership-team |
/about/leadership |
/frequently-asked-questions |
/faq |
/get-involved |
/community |
Security headers are configured in public/_headers and include:
- X-Content-Type-Options: Prevents MIME sniffing
- X-Frame-Options: Prevents clickjacking
- Referrer-Policy: Controls referrer information
- Strict-Transport-Security: Enforces HTTPS
- Permissions-Policy: Restricts browser APIs
Contributions are welcome! Please follow these guidelines:
- Fork the repository
- Create a feature branch
- Make your changes
- Submit a pull request
For content contributions, you can also use the CMS interface at /admin (requires GitHub access).
All content must adhere to these standards:
All writing must comply with the Mage-OS Code of Conduct.
- Use US English exclusively
- Avoid cultural idioms or references that might confuse international readers
- Prioritize clarity in technical writing
- All images require descriptive
alttags - Maintain proper heading hierarchy
- Ensure sufficient color contrast
- Support keyboard navigation
- Collaboration: Work together as a community
- Positivity: Maintain a constructive tone
- Reliability: Provide consistent, stable information
| Purpose | File |
|---|---|
| Site config | src/config.yaml |
| Navigation | src/navigation.ts |
| Homepage | src/pages/index.astro |
| CMS config | public/admin/config.yml |
| Content schemas | src/content/config.ts |
| Logo | src/components/Logo.astro |
| Homepage data | src/data/homepage/*.yaml |
| Partners data | src/data/partners.yaml |
| URL redirects | public/_redirects |