A beautiful, interactive static website built with Astro.js and Starlight, featuring a cards-based landing page for a 30-day learning journey through Microsoft's cutting-edge AI and cloud technologies.
- 📚 Cards-Based Gallery: Browse lessons in an attractive card layout with images, titles, descriptions, and tags
- 🔍 Search: Real-time search across lesson titles and descriptions
- 🏷️ Filter by Tags: Filter lessons by categories (AI, Azure, ML, Data Science, Cloud, Beginner, Intermediate, Advanced)
- 🔄 Sort Options: Sort by date (newest/oldest) or title (A-Z/Z-A)
- 🎨 Modern UI: Built with Astro.js Starlight for a clean, professional look
- 📱 Responsive Design: Works beautifully on desktop, tablet, and mobile
- 🌙 Dark Mode: Automatic theme switching with light/dark modes
- 📊 JSON-Driven Content: Easy customization through JSON data files
- Node.js 20+
- Python 3.12+ (optional, for data processing scripts)
# Clone the repository
git clone https://github.com/30DaysOf/Microsoft-Foundry.git
cd Microsoft-Foundry
# Install dependencies
npm install
# Install Python dependencies (optional)
pip install -r requirements.txt# Start the development server
npm run dev
# The site will be available at http://localhost:4321# Build the static site
npm run build
# Preview the production build
npm run previewMicrosoft-Foundry/
├── .devcontainer/ # Dev container configuration for VS Code
│ └── devcontainer.json
├── .vscode/ # VS Code settings
│ └── mcp.json # Model Context Protocol configuration
├── public/ # Static assets
│ └── images/ # Lesson images
├── src/
│ ├── components/ # Astro components
│ │ ├── Hero.astro # Landing page hero
│ │ ├── CardGallery.astro # Interactive card gallery
│ │ └── LessonCard.astro # Individual lesson card
│ ├── content/
│ │ └── docs/ # Markdown content
│ │ ├── index.mdx # Home page
│ │ └── intro.md # Introduction page
│ ├── data/ # JSON data files
│ │ ├── posts.json # Lesson metadata
│ │ └── tags.json # Tag definitions
│ └── styles/
│ └── custom.css # Custom styles
├── astro.config.mjs # Astro configuration
├── package.json # Node.js dependencies
├── requirements.txt # Python dependencies
└── tsconfig.json # TypeScript configuration
Edit src/data/posts.json:
{
"id": 11,
"title": "Your Lesson Title",
"description": "Brief description of the lesson",
"image": "/images/day11.jpg",
"tags": ["ai", "azure", "beginner"],
"date": "2024-01-11",
"author": "Your Name"
}Edit src/data/tags.json:
{
"id": "newtag",
"name": "New Tag",
"color": "#FF6B6B"
}Add your images to public/images/ and reference them in posts.json. Images should be:
- Format: JPG, PNG, or SVG
- Recommended size: 800x400px
- Optimized for web
This project includes a devcontainer configuration for VS Code. To use it:
- Install the "Remote - Containers" extension in VS Code
- Open the project in VS Code
- Click "Reopen in Container" when prompted
- The container will automatically install all dependencies
- Astro.js: Static site generator
- Starlight: Documentation theme
- TypeScript: Type-safe JavaScript
- Python 3.12: For data processing scripts
- JSON: Data storage format
Contributions are welcome! Please feel free to submit a Pull Request.
This project is part of the #30DaysOf learning initiative by Microsoft.