Morgan
Then
I came to development through an unconventional path and I think that shows in how I approach problems. Commerce graduate, ARIA-awarded music producer, and now a full-stack developer with three live projects and a genuine love for building things that work.
JavaScript (ES6+)
HTML5 · CSS3
Next.js (App Router)
Server Actions
Tailwind CSS · shadcn/ui
PostgreSQL · Raw SQL
Supabase Auth
Vercel (CI/CD)
Zod · React Hook Form
Remit
Invoicing web app
- Full-stack invoicing app built with Next.js, TypeScript, Supabase (auth + PostgreSQL), shadcn/ui and Tailwind. Client and invoice management with validated forms powered by Zod and React Hook Form.
- Each invoice carries a status — draft, sent, unpaid, paid, overdue and void, which conditionally renders an action menu, keeping the UI practical about what actions actually make sense.
- Shareable via a unique public URL, a pre-filled mailto action, and a browser-native Save to PDF flow. Chose void-over-delete after researching how professional invoicing tools handle financial records — invoices are immutable by design for better tax auditing trails.
decisiv
AI-prioritised task manager
- Next.js, TypeScript, Supabase, shadcn/ui with dark/light mode. Integrates Meta's Llama 4 Maverick via a third-party LLM API — calls run server-side through Server Actions to keep credentials off the client. Prompt-engineered the model to return structured JSON scoring each task; parsing and rendering that reliably was the core technical challenge.
- Built-in Pomodoro timer using useEffect and setInterval — learned first-hand why the cleanup function and dependency array matter when managing a ticking interval without stale closures or memory leaks. Deep work duration is tracked and persisted per session, with the data layer already in place for a future focus stats section.
- Users add personal context in a settings page so the model ranks tasks relative to their actual situation. Includes full account deletion and auth lifecycle management via Supabase.
Portfolio Website
This site
- Designed and built in vanilla HTML/CSS first to nail the layout and typography, then deliberately re-implemented in Next.js and TypeScript — treating the conversion itself as a learning exercise in component architecture and the App Router.
- Styled with CSS Modules and CSS custom properties throughout. Made the conscious choice to work without a utility framework to deepen understanding of the cascade, scoping, and design tokens at the CSS level.
- Deployed on Vercel with automatic CI/CD via GitHub; includes next/font for zero-layout-shift font loading and Open Graph metadata for clean link previews when shared.
Built to figure it out
I came to development after a decade music production, audio engineering and touring internationally. Over the years, I've learned how to manage complex projects, meet tight deadlines, and communicate clearly with non-technical stakeholders.
I am fluent in English and Mandarin and I hold a triple major Bachelor of Commerce from the University of Western Australia in Managerial Accounting, Finance and Business Economics. I approach code the same way I approached music and finance: understand the system, know what it's trying to do, then build something that actually works for the people using it.
I've been building seriously for just over a year and have three full-stack TypeScript projects live in production. I'm looking for a team where I can keep growing fast.
Let's build
something good
I'm open to junior positions and internships with teams who build things they're proud of. If that sounds like you, I'd love to chat.


