# HEC IA Wiki 🤖

![HEC IA Wiki](public/hec-ia-og.jpg)

The official wiki and knowledge base for HEC IA student association. Built with [Astro](https://astro.build/) and the [AstroPaper](https://github.com/satnaing/astro-paper) theme.

## 📚 About

This wiki serves as a central hub for HEC IA's content, including:

- **Events**: Information about upcoming and past events
- **Workshops**: Hands-on technical workshops and tutorials
- **News**: Latest updates and announcements from HEC IA
- **Technical Deep Dives**: In-depth technical articles on AI topics

## 🚀 Quick Start

### Prerequisites

- Node.js 18+
- npm or pnpm

### Installation

```bash
# Clone the repository
git clone https://github.com/hec-ia/wiki.git
cd wiki

# Install dependencies
npm install

# Start development server
npm run dev
```

The site will be available at `http://localhost:4321`

### Building for Production

```bash
# Build the site
npm run build

# Preview the build
npm run preview
```

## 📝 Adding Content

### Events

Create a new markdown file in `src/data/events/`:

```markdown
---
title: "Your Event Title"
description: "Event description"
author: "HEC IA"
pubDatetime: 2026-01-15T10:00:00Z
eventDate: 2026-02-05T14:00:00Z
eventEndDate: 2026-02-05T18:00:00Z
location: "Event Location"
tags: ["tag1", "tag2"]
featured: true
registrationLink: "https://registration-link.com"
---

Your event content here...
```

### Workshops

Create a new markdown file in `src/data/workshops/`:

```markdown
---
title: "Workshop Title"
description: "Workshop description"
author: "HEC IA"
pubDatetime: 2026-01-15T10:00:00Z
workshopDate: 2026-02-05T14:00:00Z
duration: "3 hours"
level: "beginner" # beginner, intermediate, or advanced
tags: ["machine-learning", "python"]
featured: true
materials: "https://github.com/hec-ia/workshop-materials"
---

Your workshop content here...
```

### News

Create a new markdown file in `src/data/news/`:

```markdown
---
title: "News Title"
description: "News description"
author: "HEC IA"
pubDatetime: 2026-01-25T10:00:00Z
tags: ["news", "announcement"]
featured: true
---

Your news content here...
```

### Technical Deep Dives

Create a new markdown file in `src/data/technical/`:

```markdown
---
title: "Technical Article Title"
description: "Article description"
author: "HEC IA Technical Team"
pubDatetime: 2026-01-28T10:00:00Z
tags: ["deep-learning", "nlp"]
difficulty: "advanced" # beginner, intermediate, or advanced
readingTime: "25 min"
featured: true
---

Your technical content here...
```

## 🎨 Customization

### Site Configuration

Edit `src/config.ts` to customize:

- Site title and description
- Author information
- Social links
- Posts per page
- And more...

### Theme Colors

The site uses Tailwind CSS. Customize colors in:

- `src/styles/base.css` for global styles
- `tailwind.config.js` for theme configuration

## 📂 Project Structure

```bash
/
├── public/
│   └── assets/          # Static assets
├── src/
│   ├── assets/          # SVG icons and images
│   ├── components/      # Astro components
│   ├── data/            # Content collections
│   │   ├── events/
│   │   ├── workshops/
│   │   ├── news/
│   │   └── technical/
│   ├── layouts/         # Page layouts
│   ├── pages/           # Route pages
│   ├── styles/          # Global styles
│   ├── utils/           # Utility functions
│   ├── config.ts        # Site configuration
│   └── content.config.ts # Content collections config
├── astro.config.ts
├── package.json
└── README.md
```

## 🧞 Available Commands

| Command                | Action                                           |
| :--------------------- | :----------------------------------------------- |
| `npm install`          | Installs dependencies                            |
| `npm run dev`          | Starts local dev server at `localhost:4321`      |
| `npm run build`        | Build your production site to `./dist/`          |
| `npm run preview`      | Preview your build locally, before deploying     |
| `npm run format:check` | Check code format with Prettier                  |
| `npm run format`       | Format codes with Prettier                       |
| `npm run sync`         | Generates TypeScript types for all Astro modules |
| `npm run lint`         | Lint with ESLint                                 |

## 🤝 Contributing

Contributions are welcome! Please feel free to submit a Pull Request.

1. Fork the repository
2. Create your feature branch (`git checkout -b feature/AmazingFeature`)
3. Commit your changes (`git commit -m 'Add some AmazingFeature'`)
4. Push to the branch (`git push origin feature/AmazingFeature`)
5. Open a Pull Request

## 📄 License

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

## 🙏 Acknowledgments

Built with:

- [Astro](https://astro.build/) - The web framework for content-driven websites
- [AstroPaper](https://github.com/satnaing/astro-paper) - The base theme
- [Tailwind CSS](https://tailwindcss.com/) - For styling
- [TypeScript](https://www.typescriptlang.org/) - For type safety

---

Made with ❤️ by HEC IA
│ │ ├── icons/
│ │ └── images/
│ ├── components/
│ ├── data/
│ │ └── blog/
│ │ └── some-blog-posts.md
│ ├── layouts/
│ ├── pages/
│ ├── scripts/
│ ├── styles/
│ ├── utils/
│ ├── config.ts
│ ├── constants.ts
│ ├── content.config.ts
│ ├── env.d.ts
│ └── remark-collapse.d.ts
└── astro.config.ts

````

Astro looks for `.astro` or `.md` files in the `src/pages/` directory. Each page is exposed as a route based on its file name.

Any static assets, like images, can be placed in the `public/` directory.

All blog posts are stored in `src/data/blog` directory.

## 📖 Documentation

Documentation can be read in two formats\_ _markdown_ & _blog post_.

- Configuration - [markdown](src/data/blog/how-to-configure-astropaper-theme.md) | [blog post](https://astro-paper.pages.dev/posts/how-to-configure-astropaper-theme/)
- Add Posts - [markdown](src/data/blog/adding-new-post.md) | [blog post](https://astro-paper.pages.dev/posts/adding-new-posts-in-astropaper-theme/)
- Customize Color Schemes - [markdown](src/data/blog/customizing-astropaper-theme-color-schemes.md) | [blog post](https://astro-paper.pages.dev/posts/customizing-astropaper-theme-color-schemes/)
- Predefined Color Schemes - [markdown](src/data/blog/predefined-color-schemes.md) | [blog post](https://astro-paper.pages.dev/posts/predefined-color-schemes/)

## 💻 Tech Stack

**Main Framework** - [Astro](https://astro.build/)
**Type Checking** - [TypeScript](https://www.typescriptlang.org/)
**Styling** - [TailwindCSS](https://tailwindcss.com/)
**UI/UX** - [Figma Design File](https://www.figma.com/community/file/1356898632249991861)
**Static Search** - [FuseJS](https://pagefind.app/)
**Icons** - [Tablers](https://tabler-icons.io/)
**Code Formatting** - [Prettier](https://prettier.io/)
**Deployment** - [Cloudflare Pages](https://pages.cloudflare.com/)
**Illustration in About Page** - [https://freesvgillustration.com](https://freesvgillustration.com/)
**Linting** - [ESLint](https://eslint.org)

## 👨🏻‍💻 Running Locally

You can start using this project locally by running the following command in your desired directory:

```bash
# pnpm
pnpm create astro@latest --template satnaing/astro-paper

# pnpm
pnpm create astro@latest -- --template satnaing/astro-paper

# yarn
yarn create astro --template satnaing/astro-paper

# bun
bun create astro@latest -- --template satnaing/astro-paper
````

Then start the project by running the following commands:

```bash
# install dependencies if you haven't done so in the previous step.
pnpm install

# start running the project
pnpm run dev
```

As an alternative approach, if you have Docker installed, you can use Docker to run this project locally. Here's how:

```bash
# Build the Docker image
docker build -t astropaper .

# Run the Docker container
docker run -p 4321:80 astropaper
```

## Google Site Verification (optional)

You can easily add your [Google Site Verification HTML tag](https://support.google.com/webmasters/answer/9008080#meta_tag_verification&zippy=%2Chtml-tag) in AstroPaper using an environment variable. This step is optional. If you don't add the following environment variable, the google-site-verification tag won't appear in the HTML `<head>` section.

```bash
# in your environment variable file (.env)
PUBLIC_GOOGLE_SITE_VERIFICATION=your-google-site-verification-value
```

> See [this discussion](https://github.com/satnaing/astro-paper/discussions/334#discussioncomment-10139247) for adding AstroPaper to the Google Search Console.

## 🧞 Commands

All commands are run from the root of the project, from a terminal:

> **_Note!_** For `Docker` commands we must have it [installed](https://docs.docker.com/engine/install/) in your machine.

| Command                               | Action                                                                                                                           |
| :------------------------------------ | :------------------------------------------------------------------------------------------------------------------------------- |
| `pnpm install`                        | Installs dependencies                                                                                                            |
| `pnpm run dev`                        | Starts local dev server at `localhost:4321`                                                                                      |
| `pnpm run build`                      | Build your production site to `./dist/`                                                                                          |
| `pnpm run preview`                    | Preview your build locally, before deploying                                                                                     |
| `pnpm run format:check`               | Check code format with Prettier                                                                                                  |
| `pnpm run format`                     | Format codes with Prettier                                                                                                       |
| `pnpm run sync`                       | Generates TypeScript types for all Astro modules. [Learn more](https://docs.astro.build/en/reference/cli-reference/#astro-sync). |
| `pnpm run lint`                       | Lint with ESLint                                                                                                                 |
| `docker compose up -d`                | Run AstroPaper on docker, You can access with the same hostname and port informed on `dev` command.                              |
| `docker compose run app pnpm install` | You can run any command above into the docker container.                                                                         |
| `docker build -t astropaper .`        | Build Docker image for AstroPaper.                                                                                               |
| `docker run -p 4321:80 astropaper`    | Run AstroPaper on Docker. The website will be accessible at `http://localhost:4321`.                                             |

> **_Warning!_** Windows PowerShell users may need to install the [concurrently package](https://www.npmjs.com/package/concurrently) if they want to [run diagnostics](https://docs.astro.build/en/reference/cli-reference/#astro-check) during development (`astro check --watch & astro dev`). For more info, see [this issue](https://github.com/satnaing/astro-paper/issues/113).

## ✨ Feedback & Suggestions

If you have any suggestions/feedback, you can contact me via [my email](mailto:contact@satnaing.dev). Alternatively, feel free to open an issue if you find bugs or want to request new features.

## 📜 License

Licensed under the MIT License, Copyright © 2025

---

Made with 🤍 by [Sat Naing](https://satnaing.dev) 👨🏻‍💻 and [contributors](https://github.com/satnaing/astro-paper/graphs/contributors).
