Skip to content

Projects

A showcase of my work and experiments

CMMhero Automation

CMMhero Automation provides automation tools, live dashboards, and game data features. Supports minigame solvers, encyclopedias, leaderboards, and license management with Discord authentication.

Next.js server components for fast loading and data fetching
WebSocket for real-time metrics and dashboards
Discord OAuth2 with secure session management
Debounced API requests and client caching
Modular components and custom hooks
TypeScript for shared full-stack types
Next.jsMongoDBWebSocket
CMMhero Automation screenshot 1
CMMhero Automation screenshot 2
CMMhero Automation screenshot 3
CMMhero Automation screenshot 4
CMMhero Automation screenshot 5
CMMhero Automation screenshot 6
CMMhero Automation screenshot 7
CMMhero Automation screenshot 8

H320 Discord Bot

H320 Discord Bot provides fun, utilities, moderation tools, and music playback. It stores user data, processes slash commands, and handles searches in a simple flow.

Discord.js with event-driven architecture
MongoDB for persistent data
AniList GraphQL integration
Music system with queue controls
Slash commands and autocomplete
XP system with aggregation pipelines
Node.jsDiscord.jsMongoDB
H320 Discord Bot screenshot 1
H320 Discord Bot screenshot 2
H320 Discord Bot screenshot 3
H320 Discord Bot screenshot 4
H320 Discord Bot screenshot 5
H320 Discord Bot screenshot 6
H320 Discord Bot screenshot 7
H320 Discord Bot screenshot 8

ZenType

ZenType offers a clean typing test with customizable themes and saved settings. It tracks results over time and provides detailed stats.

Custom React hooks for typing logic
LocalStorage persistence for settings/history
Dynamic theme engine with 20+ presets
Real-time WPM and accuracy calculation
Responsive layout with Tailwind CSS
ReactTypeScriptTailwind
ZenType screenshot 1
ZenType screenshot 2
ZenType screenshot 3
ZenType screenshot 4

Lachisean Library

Lachisean Library manages books, reviews, and user accounts through a structured CMS. Admins can update content, while users browse and interact with the catalog.

Laravel MVC
MySQL with normalized relationships
Middleware authorization
Dynamic category generation
Review system with timestamps
Similarity-based recommendations
Admin dashboard tools
LaravelPHPMySQL
Lachisean Library screenshot 1
Lachisean Library screenshot 2
Lachisean Library screenshot 3
Lachisean Library screenshot 4
Lachisean Library screenshot 5
Lachisean Library screenshot 6

Simplicon

Simplicon lets users create simple icons and favicons through an interactive editor. It supports layers, undo/redo, and exporting designs in common formats.

Hook-driven React state management
Custom history system for undo/redo
Drag-and-drop canvas interactions
Direct SVG editing pipeline
Auto-save via Local Storage
Tailwind CSS for layout and styling
ReactTypeScriptTailwind
Simplicon screenshot 1
Simplicon screenshot 2
Simplicon screenshot 3
Simplicon screenshot 4

Note Lachisean

Note Lachisean stores notes with private, shared, and public access options. It supports search, file attachments, and a simple editor for writing.

PHP backend with MySQL storage
Role-based visibility control
Full-text search with indexing
Secure file upload handling
Session-based authentication
Injection-safe query patterns
User and ownership management
HTML/CSSPHPMySQL
Note Lachisean screenshot 1
Note Lachisean screenshot 2
Note Lachisean screenshot 3
Note Lachisean screenshot 4
Note Lachisean screenshot 5
Note Lachisean screenshot 6
Note Lachisean screenshot 7

Dungeon Survivor

Dungeon Survivor is a small Unity game with wave-based combat and upgrade choices. Enemies use basic AI, and the game runs through clear states like defeat, victory, and upgrades.

Unity C# scripting with OOP architecture
Object pooling for performance
Event-based progression and powerups
Physics-based combat
Scene and state management
Modular stat upgrade system
UnityC#3D Game Dev
Dungeon Survivor screenshot 1
Dungeon Survivor screenshot 2
Dungeon Survivor screenshot 3
Dungeon Survivor screenshot 4
Dungeon Survivor screenshot 5

Foodiematch

Foodiematch generates restaurant recommendations based on collaborative and content-based filtering. The app uses location and preferences for infinite recommendations.

Flask backend with scikit-learn models
Collaborative and content-based filtering
React Native with Expo
Supabase authentication and real-time storage
Location-based filtering
Infinite recommendation flow with pagination
React NativeSupabasePython
Foodiematch screenshot 1
Foodiematch screenshot 2
Foodiematch screenshot 3
Foodiematch screenshot 4
Foodiematch screenshot 5
Foodiematch screenshot 6

H320 Gamelist

H320 Gamelist fetches game data from the RAWG API and displays it with filters and scrolling. It focuses on quick browsing and simple navigation.

Infinite scrolling implementation using Intersection Observer
Real-time data fetching with dynamic query parameters
Custom hook-based pagination and filtering logic
Responsive grid layouts with Tailwind CSS
Client-side routing with React Router DOM
Skeleton loading states for better UX
ReactTailwind
H320 Gamelist screenshot 1
H320 Gamelist screenshot 2
H320 Gamelist screenshot 3
H320 Gamelist screenshot 4
H320 Gamelist screenshot 5
H320 Gamelist screenshot 6

Tokosedia is a basic e-commerce demo with login, cart functions, and checkout flow. All changes update the page instantly using jQuery and localStorage.

jQuery for DOM events
Bootstrap UI
localStorage for cart data
Form validation
Modal and notification patterns
Dynamic cart and pricing logic
Session-based auth
HTML/CSSBootstrapjQuery
Tokosedia screenshot 1
Tokosedia screenshot 2
Tokosedia screenshot 3
Tokosedia screenshot 4

ZenTimer

ZenTimer combines timers, task lists, and notes into a single view. It saves progress locally and uses notifications and sounds to support focus sessions.

React hooks for timing logic
localStorage persistence
Web Audio API for sounds
Browser Notification API
Task CRUD state management
ReactTypeScriptTailwind
ZenTimer screenshot 1
ZenTimer screenshot 2
ZenTimer screenshot 3