Website komunitas modern untuk DevOps Jogja yang dibangun dengan Flask dan Tailwind CSS.
- Modern Homepage - Kesan teknologi infrastruktur dengan design responsif
- Blog System - Artikel dan blog teknologi dari file Markdown
- Event Management - Informasi event dari file Markdown
- Organizer Profiles - Profil pengurus dari file YAML
- About Page - Informasi komunitas dari file YAML
- Responsive Design - Menggunakan Tailwind CSS
- Python 3.11+
- uv 0.7+
- Node.js 14+
- npm atau yarn
git clone https://github.com/devops-jogja/devops-jogja-website.git
cd devops-jogja-website# Sync 'environment' dengan uv
uv sync --locked# Install Node.js dependencies
npm install
# Build Tailwind CSS
npm run build-css# Dengan uv
uv run app.pyWebsite akan berjalan di http://localhost:3000
devops-jogja-website/
βββ app.py # Main Flask application
βββ pyproject.toml # Python dependencies
βββ package.json # Node.js dependencies
βββ tailwind.config.js # Tailwind configuration
βββ static/
β βββ css/
β β βββ input.css # Tailwind input
β β βββ output.css # Compiled CSS
β β βββ homepage.css # Homepage specific styles
β βββ js/
β β βββ main.js # Global JavaScript
β β βββ homepage.js # Homepage specific JS
β βββ images/ # Image assets
β β βββ gallery/ # Gallery slider images
β β βββ sponsor/ # Sponsor logos
β βββ organizer/ # Organizer photos
βββ templates/
β βββ base.html # Base template
β βββ index.html # Homepage
β βββ blog/
β β βββ index.html # Blog listing
β β βββ post.html # Blog post detail
β βββ event/
β β βββ index.html # Event listing
β β βββ event.html # Event detail
β βββ organizer.html # Organizer page
β βββ about.html # About page
βββ content/
β βββ blog/ # Blog posts (Markdown)
β βββ event/ # Events (Markdown)
β βββ organizer.yaml # Organizer data
β βββ about.yaml # About page data
βββ utils/
βββ __init__.py
βββ markdown_parser.py # Markdown parser
βββ yaml_loader.py # YAML loader
Buat file Markdown di folder content/blog/ dengan format:
---
title: "Judul Blog Post"
date: "2024-01-15"
author: "Nama Author"
excerpt: "Ringkasan artikel"
tags: ["DevOps", "Docker", "Kubernetes"]
featured_image: "blog-image.jpg"
---
Konten blog post Anda di sini...Buat file Markdown di folder content/event/ dengan format:
---
title: "Nama Event"
date: "2024-02-20"
time: "19:00 WIB"
location: "Venue Name, Yogyakarta"
type: "Workshop" # Workshop, Meetup, Conference
registration_url: "https://eventbrite.com/..."
featured_image: "event-image.jpg"
---
Deskripsi event Anda di sini...Edit file content/organizer.yaml:
organizers:
- name: "Nama Organizer"
role: "Founder & Lead"
bio: "Deskripsi singkat"
photo: "organizer-1.jpg"
social:
github: "username"
linkedin: "username"
twitter: "username"Edit file content/about.yaml:
about:
title: "Tentang DevOps Jogja"
description: "Komunitas DevOps di Yogyakarta"
mission: "Misi komunitas"
vision: "Visi komunitas"
contact:
email: "hello@devopsjogja.org"
telegram: "@devopsjogja"Upload gambar ke folder static/images/gallery/ untuk ditampilkan di gallery slider homepage:
- Format yang didukung: JPG, PNG, GIF, WebP, HEIC/HEIF
- Ukuran optimal: 1200x675 pixels (16:9 aspect ratio)
- File size: Maksimal 2MB per gambar
- Naming: Gunakan nama deskriptif seperti
meetup-docker-workshop-2024.jpg
π HEIC Support:
- File HEIC/HEIF otomatis dikonversi ke format JPEG
- Kualitas konversi 90% untuk menjaga detail gambar
- File hasil konversi disimpan di
static/images/gallery/converted/ - Konversi hanya dilakukan sekali, file berikutnya menggunakan cache
Fitur Gallery Slider:
- Auto-running: Berganti slide otomatis setiap 4 detik
- Navigation: Tombol prev/next (muncul saat hover di desktop)
- Indicators: Dots navigation untuk loncat ke slide tertentu
- Touch Support: Swipe gesture untuk mobile devices
- Keyboard: Arrow keys untuk navigasi
- Responsive: Optimized untuk semua ukuran layar
- Clean Display: Tampilan bersih tanpa nama file
Gallery akan pause saat di-hover dan otomatis melanjutkan setelah mouse keluar.
Edit static/css/input.css untuk menambah custom styles:
@tailwind base;
@tailwind components;
@tailwind utilities;
/* Custom styles */
.tech-gradient {
background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
}Kemudian build ulang CSS:
npm run build-cssTambahkan interaktivitas di static/js/main.js.
# Build image
docker build -t devops-jogja-website .
# Run container
docker run -p 3000:3000 devops-jogja-website# Login to Heroku
heroku login
# Create app
heroku create devops-jogja-website
# Deploy
git push heroku main- Hubungkan GitHub repository ke Railway
- Deploy otomatis setiap push ke main branch
- Fork repository
- Buat feature branch (
git checkout -b feature/amazing-feature) - Commit changes (
git commit -m 'Add amazing feature') - Push ke branch (
git push origin feature/amazing-feature) - Buat Pull Request
- Blog Posts: Submit PR dengan file Markdown baru di
content/blog/ - Events: Submit PR dengan file Markdown baru di
content/event/ - Bug Reports: Gunakan GitHub Issues
This project is licensed under the MIT License - see the LICENSE file for details.
- DevOps Jogja Community - Website
- GitHub - @devops-jogja
- Flask framework
- Tailwind CSS
- Python Markdown
- PyYAML
- Semua kontributor komunitas DevOps Jogja
DevOps Jogja - Building Infrastructure, Building Community π
