Website of KashanLUG (Kashan Linux User Group) - a community dedicated to open-source, Linux, and free-software culture in Kashan, Iran.
Live site: basemax.github.io/KashanLug | GitHub: baseMax/KashanLug
KashanLUG is a non-profit technical community that organises in-person events, talks, and workshops around Linux, open-source software, and tech culture. This repository contains the full source code of the community website, built as a fast, fully-Persian (RTL) single-page application.
The first event - «دانش بیمرز» (Knowledge Without Borders) - takes place on Friday, 18 Mehr 1405 at the University of Kashan (تالار فردوسی), Kashan, Isfahan Province.
| Layer | Technology |
|---|---|
| Framework | Mithril.js 2.x (TSX / JSX) |
| Language | TypeScript 6 |
| Build | Vite 8 |
| Styling | Tailwind CSS 4 (via @tailwindcss/vite) |
| Font | Vazirmatn 5 (Persian / Latin) |
| Routing | m.route with hash prefix (#) |
No PostCSS, no React, no heavy runtime — Mithril renders the whole app with a ~10 kB gzipped core.
- Full RTL layout with Persian locale (Farsi digits, Jalali dates)
- Light / Dark theme toggle — persisted in
localStorage, toggled viadata-themeattribute - Atomic design component system under
src/components/ui/ - Fully typed with strict TypeScript; zero
anyescapes in production code @/path aliases throughout — no../../relative imports- Centralized site config in
src/data/site.ts(name, city, social handles, etc.) - Dynamic hero stats derived from actual data (speaker count, team size, event duration)
- Accessible custom
<Select>dropdown with outside-click detection - OTP authentication flow (
/auth) - Countdown timer to the event
- Responsive navigation with mobile hamburger menu
- Orange branded header — transparent over the home hero, solid gradient on all inner pages
src/
├── components/ # Shared UI components
│ └── ui/ # Atomic design primitives
├── data/ # All content data (single source of truth)
│ ├── site.ts # Org info, city, social links
│ ├── event.ts # Event info, speakers, schedule, sponsors
│ ├── team.ts # Executive team members
│ ├── about.ts # About page stats & values
│ ├── blog.ts # Blog posts
│ ├── contact.ts # Contact items (reads from site.ts)
│ └── charter.ts # Community charter
├── lib/ # Utilities (utils.ts, theme.ts)
├── pages/ # Page-level components
└── sections/ # Page sections (home/, event/, about/, …)
| Path | Page |
|---|---|
/ |
Home |
/event |
Event — «دانش بیمرز» |
/schedule |
Schedule |
/team |
Executive Team |
/blog |
Blog list |
/blog/:slug |
Blog post |
/about |
About KashanLUG |
/contact |
Contact |
/join |
Join / Volunteer |
/charter |
Community Charter |
/auth |
Login / Register (OTP) |
/resume |
Resume |
/:404... |
Not Found |
Prerequisites: Node.js ≥ 20, npm ≥ 10
# Clone
git clone https://github.com/baseMax/KashanLug.git
cd KashanLug
# Install dependencies
npm install
# Start dev server (http://localhost:5173)
npm run dev
# Type-check
npm run type-check
# Production build → dist/
npm run build
# Preview production build
npm run previewCopyright © 2026 Seyyed Ali Mohammadiyeh (MAX BASE)