Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
73 changes: 73 additions & 0 deletions .github/workflows/deploy.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,73 @@
name: Deploy

on:
push:
branches:
- main

# Sets permissions of the GITHUB_TOKEN to allow deployment to GitHub Pages
permissions:
contents: write
pages: write
id-token: write

# Allow only one concurrent deployment, skipping runs queued between the run in-progress and latest queued.
# However, do NOT cancel in-progress runs as we want to allow these production deployments to complete.
concurrency:
group: "pages"
cancel-in-progress: false

jobs:
build:
name: Build
runs-on: ubuntu-latest

steps:
- name: Checkout repo
uses: actions/checkout@v4

- name: Setup Node
uses: actions/setup-node@v4

- name: Clean dist directory
run: rm -rf ./code/dist

- name: Install dependencies
run: npm install
working-directory: ./code

- name: Build project
run: npm run build
working-directory: ./code

- name: Upload production-ready build files
uses: actions/upload-artifact@v4
with:
name: github-pages
path: ./code/dist

deploy:
name: Deploy
needs: build
runs-on: ubuntu-latest
if: github.ref == 'refs/heads/main'

steps:
- name: Download artifact
uses: actions/download-artifact@v4
with:
name: github-pages
path: ./code/dist

- name: Deploy to GitHub Pages
run: |
git config --global user.name "github-actions[bot]"
git config --global user.email "github-actions[bot]@users.noreply.github.com"
git init
git remote add origin https://x-access-token:${{ secrets.GITHUB_TOKEN }}@github.com/${{ github.repository }}.git
git fetch origin
git checkout -B gh-pages
mv ./code/dist/* ./ # Move the contents of dist to the root
git add .
git commit -m "Deploy to GitHub Pages"
git push origin gh-pages --force
1 change: 1 addition & 0 deletions CNAME
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
accelerators.ms
26 changes: 13 additions & 13 deletions SUPPORT.md
Original file line number Diff line number Diff line change
@@ -1,13 +1,13 @@
# Support
## How to file issues and get help
This project uses GitHub Issues to track bugs and feature requests. Please search the existing
issues before filing new issues to avoid duplicates. For new issues, file your bug or
feature request as a new issue.
For help and questions about using this project, you may also file a new issue.
## Microsoft Support Policy
Support for this repository is limited and Microsoft does not guarantee the quality, performance, reliability, or availability of this release or its output, and does not provide any warranty or support for it.
# Support

## How to file issues and get help

This project uses GitHub Issues to track bugs and feature requests. Please search the existing
issues before filing new issues to avoid duplicates. For new issues, file your bug or
feature request as a new issue.

For help and questions about using this project, you may also file a new issue.

## Microsoft Support Policy

Support for this repository is limited and Microsoft does not guarantee the quality, performance, reliability, or availability of this release or its output, and does not provide any warranty or support for it.
49 changes: 49 additions & 0 deletions code/.github/workflows/deploy.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,49 @@
name: Deploy to GitHub Pages

on:
push:
branches: [ website ]
pull_request:
branches: [ website ]

jobs:
build-and-deploy:
runs-on: ubuntu-latest

permissions:
contents: read
pages: write
id-token: write

steps:
- name: Checkout
uses: actions/checkout@v4

- name: Setup Node.js
uses: actions/setup-node@v4
with:
node-version: '20'
cache: 'npm'
cache-dependency-path: './code/package-lock.json'

- name: Install dependencies
run: |
cd code
npm ci

- name: Build
run: |
cd code
npm run build

- name: Setup Pages
uses: actions/configure-pages@v4

- name: Upload artifact
uses: actions/upload-pages-artifact@v3
with:
path: './code/dist'

- name: Deploy to GitHub Pages
id: deployment
uses: actions/deploy-pages@v4
24 changes: 24 additions & 0 deletions code/.gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
# Logs
logs
*.log
npm-debug.log*
yarn-debug.log*
yarn-error.log*
pnpm-debug.log*
lerna-debug.log*

node_modules
dist
dist-ssr
*.local

# Editor directories and files
.vscode/*
!.vscode/extensions.json
.idea
.DS_Store
*.suo
*.ntvs*
*.njsproj
*.sln
*.sw?
132 changes: 132 additions & 0 deletions code/README.SOLUTION.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,132 @@
# CSA Solution Accelerators Landing Page

A modern, responsive React-based landing page showcasing Microsoft's AI Solution Accelerators. Built with React 18, TypeScript, Vite, and Tailwind CSS, this application provides an intuitive interface for exploring and discovering AI accelerators, solution areas, and implementation resources.

## Features

- **Modern UI/UX**: Clean, professional design using Fluent UI components and Tailwind CSS
- **Deep Linking**: Advanced navigation system with URL synchronization and smooth scrolling
- **Search & Filtering**: Real-time search with multi-category filtering capabilities
- **Responsive Design**: Mobile-first approach with touch-friendly interactions
- **Performance Optimized**: Fast loading with code splitting and lazy loading
- **Accessibility**: WCAG 2.1 AA compliant with keyboard navigation support

## Technology Stack

- **Frontend**: React 18 + TypeScript
- **Build Tool**: Vite
- **Styling**: Tailwind CSS + Fluent UI React Components
- **Icons**: Fluent UI React Icons
- **Deployment**: GitHub Pages
- **Data**: Static JSON with dynamic filtering

## Getting Started

### Prerequisites

- Node.js 18+
- npm or yarn package manager

### Installation

1. Clone the repository:
```bash
git clone https://github.com/your-username/csa-sas-ext-landingpage.git
cd csa-sas-ext-landingpage
```

2. Install dependencies:
```bash
npm install
```

### Development

To run the project locally in development mode:

```bash
npm run dev
```

This will start the development server, typically at `http://localhost:5173`. The page will automatically reload when you make changes to the code.

### Building

To build the project for production:

```bash
npm run build
```

This creates an optimized production build in the `dist/` directory.

### Preview Build

To preview the production build locally:

```bash
npm run preview
```

## Live Demo

Access the live version of the application at:
**[https://cuddly-adventure-3j22l89.pages.github.io/](https://cuddly-adventure-3j22l89.pages.github.io/)**

## Project Structure

```
src/
├── components/ # React components
│ ├── Header/ # Navigation and header components
│ ├── HeroSection/ # Main hero section
│ ├── FeaturedSection/ # Featured accelerators showcase
│ ├── DifferentiatorSection/ # Solution differentiators
│ ├── HowItWorksSection/ # Process explanation
│ ├── SuccessStoriesSection/ # Customer success stories
│ ├── Footer/ # Site footer
│ └── shared/ # Reusable component utilities
├── data/ # Static data and generated content
│ ├── cards/ # Individual accelerator JSON files
│ └── generated/ # Build-time generated data
├── hooks/ # Custom React hooks
├── utils/ # Utility functions and helpers
├── types/ # TypeScript type definitions
└── assets/ # Images, icons, and static assets
```

## Key Components

- **GsaCard**: Accelerator card component with hover effects and responsive design
- **Navigation**: Sticky navigation with smooth scrolling and deep linking
- **Search & Filters**: Advanced filtering by categories, solution areas, and technologies
- **Responsive Grid**: Adaptive layout system for different screen sizes

## Development Workflow

1. **Feature Development**: Create feature branches from main
2. **Testing**: Ensure all functionality works across browsers and devices
3. **Code Quality**: Follow TypeScript best practices and component architecture
4. **Performance**: Monitor bundle size and loading performance
5. **Accessibility**: Maintain WCAG compliance standards

## Contributing



For major changes, please open an issue first to discuss the proposed changes.

## License

This project is licensed under the MIT License - see the LICENSE file for details.

## Support

For questions or support, please:
- Open an issue on GitHub
- Contact the development team
- Check the documentation in the `/docs` folder

---

**Built with ❤️ by the Microsoft AI Solution Accelerators team**
69 changes: 69 additions & 0 deletions code/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,69 @@
# React + TypeScript + Vite

This template provides a minimal setup to get React working in Vite with HMR and some ESLint rules.

Currently, two official plugins are available:

- [@vitejs/plugin-react](https://github.com/vitejs/vite-plugin-react/blob/main/packages/plugin-react) uses [Babel](https://babeljs.io/) for Fast Refresh
- [@vitejs/plugin-react-swc](https://github.com/vitejs/vite-plugin-react/blob/main/packages/plugin-react-swc) uses [SWC](https://swc.rs/) for Fast Refresh

## Expanding the ESLint configuration

If you are developing a production application, we recommend updating the configuration to enable type-aware lint rules:

```js
export default tseslint.config([
globalIgnores(['dist']),
{
files: ['**/*.{ts,tsx}'],
extends: [
// Other configs...

// Remove tseslint.configs.recommended and replace with this
...tseslint.configs.recommendedTypeChecked,
// Alternatively, use this for stricter rules
...tseslint.configs.strictTypeChecked,
// Optionally, add this for stylistic rules
...tseslint.configs.stylisticTypeChecked,

// Other configs...
],
languageOptions: {
parserOptions: {
project: ['./tsconfig.node.json', './tsconfig.app.json'],
tsconfigRootDir: import.meta.dirname,
},
// other options...
},
},
])
```

You can also install [eslint-plugin-react-x](https://github.com/Rel1cx/eslint-react/tree/main/packages/plugins/eslint-plugin-react-x) and [eslint-plugin-react-dom](https://github.com/Rel1cx/eslint-react/tree/main/packages/plugins/eslint-plugin-react-dom) for React-specific lint rules:

```js
// eslint.config.js
import reactX from 'eslint-plugin-react-x'
import reactDom from 'eslint-plugin-react-dom'

export default tseslint.config([
globalIgnores(['dist']),
{
files: ['**/*.{ts,tsx}'],
extends: [
// Other configs...
// Enable lint rules for React
reactX.configs['recommended-typescript'],
// Enable lint rules for React DOM
reactDom.configs.recommended,
],
languageOptions: {
parserOptions: {
project: ['./tsconfig.node.json', './tsconfig.app.json'],
tsconfigRootDir: import.meta.dirname,
},
// other options...
},
},
])
```
Loading