← Back home

Projects

All projects

  • selfTMP

    selfTMP project cover

    A lightweight self-hosted temporary sharing tool built with Go, combining Pastebin-style text snippets, temporary file sharing, and short URLs in one service. It supports custom short link IDs, expiration times, one-time links, password protection, and an admin dashboard, making it suitable as a private sharing portal for individuals or small teams behind a reverse proxy.

    // Stack

    • Go
    • SQLite
    • Docker

    // Highlights

    • Combines text, file, and short link sharing
    • Supports custom slugs, TTL, one-time links, and password protection
    • Easy to deploy with a single Go binary and SQLite
  • osga.dev

    Cover image for the osga.dev project

    A personal site built with Astro, focused on fast loading, bilingual content management, and a maintainable section-based structure for presenting work and identity.

    // Stack

    • Astro
    • TypeScript
    • CSS

    // Highlights

    • Bilingual content support
    • Centralized i18n-driven content
    • Component-based section architecture
  • SITCON

    SITCON 2026

    SITCON 2026 project cover

    Contributed to the development of SITCON 2026’s websites and event systems, including the official website, venue game, call for proposals, and call for sponsorship. The project uses multiple repositories to maintain separate sub-sites and features, supporting event information, proposal submission, sponsorship information, and on-site interactive experiences.

    // Stack

    • Astro
    • Next.js
    • Go
    • Three.js

    // Highlights

    • Enhanced browsing experience and event engagement through interactive design
    • Designed venue-based missions to encourage interaction among attendees, booths, and participants
    • Turned sponsorship materials into a distinctive web experience beyond a traditional PDF
  • NYUST ICS

    NYUST ICS project cover

    A timetable conversion tool designed for National Yunlin University of Science and Technology students. It parses DOCX course schedule files and converts them into ICS format, making it easy to import schedules into calendar apps. It supports course information parsing, consecutive class merging, timetable preview, and browser-side processing, reducing the effort required to manually create calendar events.

    // Stack

    • Next.js
    • React
    • TypeScript
    • Tailwind CSS

    // Highlights

    • Converts DOCX course schedules into ICS calendar files
    • Automatically parses course times, locations, and names, then merges consecutive class periods
    • Runs entirely in the browser, allowing quick use without registration
  • 2o4 Studio

    AetherClub Panel

    AetherClub project cover

    A rebuilt operations panel for AetherClub, replacing its previous system. Users sign in with Discord OAuth2 and are verified as server members, then land in role-specific workspaces for bosses, companions, support, and admins to manage orders, coupons, balances, income, ledgers, and rankings. A companion Discord bot handles welcome messages, auto-created voice rooms, and role-mention DMs.

    // Stack

    • Go
    • React
    • TypeScript
    • PostgreSQL
    • Discord.js

    // Highlights

    • Discord OAuth2 sign-in, server membership checks, and server-side sessions
    • Orders, coupons, balance transfers, withdrawal review, and event systems
    • One-shot Supabase to PostgreSQL import, plus virtualized tables and mobile card layouts
    • Bot with welcome embeds, auto-created voice rooms, and role-mention DMs
  • YunTech Counseling Center

    YunTech Counseling Center Website

    YunTech Counseling Center website project cover

    A full-stack site built with Next.js 16 and Payload CMS 3, with the public site, admin panel, and API in one app. It was redesigned around the center's official site map and brand, migrated real content from the legacy site, and ships through a CI/CD pipeline using Docker, Caddy, and a self-hosted runner.

    // Stack

    • Next.js
    • Payload CMS
    • PostgreSQL
    • Docker
    • Caddy

    // Highlights

    • Redesigned frontend and mega-menu navigation following the official site map and brand
    • Per-account edit permissions so center staff can maintain content
    • GHCR images, self-hosted runner deploys, HTTPS staging, and backup scripts
  • YunNET

    YunNET Support Discord Bot

    A Discord bot used by YunTech's dorm network team. Residents fill in their student ID, bed, and issue through a button and form, and the bot opens a private repair channel with the network staff. It supports closing, reopening, and deleting tickets plus message edit and delete logs; my work covered transcript export and the deployment pipeline.

    // Stack

    • TypeScript
    • Discord.js
    • MongoDB
    • Docker

    // Highlights

    • Modal-based ticket creation with private repair channels
    • HTML / PDF transcripts including edit and deletion history
    • Automatic deploys to the server via a self-hosted runner
  • SITCON

    SITCON Podcast

    SITCON Podcast project cover

    A static episode page for SITCON's podcast 學生戰鬥機. It reads the RSS feed to list every episode and links each one to Spotify, YouTube, and Apple Podcasts so listeners can jump straight to it.

    // Stack

    • HTML
    • CSS
    • JavaScript
    • RSS

    // Highlights

    • Generates the episode list from the RSS feed
    • Links each episode to Spotify, YouTube, and Apple Podcasts
  • QuickJump

    QuickJump is a Bash / Zsh command-line tool that lets users create custom hotkeys for frequently used folders, making it faster to switch directories and reducing repetitive cd commands. It supports autocompletion, JSON-based configuration, and installation scripts for a smoother development workflow.

    // Stack

    • Shell
    • Bash
    • Zsh
    • jq

    // Highlights

    • Quickly jump to frequently used folders with custom hotkeys
    • Supports Bash / Zsh integration and autocompletion
    • Manages paths through a JSON configuration file
  • YunTech MIS

    YunTech MIS Website Infra

    The YunTech MIS department's new website frontend, built with Next.js. I added the Docker Compose setup so the project builds and deploys consistently in containers.

    // Stack

    • Next.js
    • Docker

    // Highlights

    • Containerized frontend deployment with Docker Compose