violet nwe co-founder · purpl solutions
nwearkah@gmail.com +61 493 315 509
purpl.au
↗
the work, summarised i design, build and ship real products, fast. from AI-native tools to research software and live security.
aws sa-associate · aws ai · aws cloud · azure fund. · security+ · psm i
11 builds
selected work tap the folder
01 purpl the studio that ships live→
p outcome
purpl is a Sydney studio that designs, builds and ships real products end to end, fast, from AI-native tools to research and security software, alongside a growing portfolio of its own live, real-user apps. Currently taking on new clients.
“The studio that ships real products, fast.”
the problem
Most software ideas die in the gap between concept and a shipped, working product.
what i built
Designs and ships full products end to end, concept to production Ships its own products too (VolleyTube, CAAT and more) beside client work Runs studio operations and client delivery stack
Next.js TypeScript Supabase Vercel
hover: live preview 02 caat uni applications, sorted live→
c outcome
CAAT centralises the whole process into one structured, distraction-free workspace that reduces missed deadlines and cognitive load, especially for international students applying without dedicated counsellor support.
“Your entire university application, in one place.”
the problem
Managing a university application means juggling deadlines, essays, documents, school research and scholarships across different tabs, tools and apps.
what i built
Personalised student profile (academics, test scores, extracurriculars) School and scholarship browser with bookmarking and filtering by country, curriculum and major Application tracker: deadlines, status from researching to outcome, per-application notes Resume builder with guided section editors, free-text mode, A4 live preview and PDF export Essay draft workspace with version management Document vault for transcripts, score reports and supporting materials Dashboard with a customisable widget grid and feed stack
Next.js TypeScript Supabase TailwindCSS shadcn/ui Radix UI TipTap dnd-kit
hover: live preview
▶ ▶ demo 03 terminl leetcode interview prep in dev→
t terminl Product Jun 2026 - present outcome
terminl reframes prep around patterns: animated walkthroughs show the algorithm move before you write a line, you solve in the browser with instant AI review, and spaced repetition resurfaces each problem right before you would forget it.
“Coding-interview prep that teaches by pattern, not grind.”
the problem
Coding-interview prep usually means grinding hundreds of problems with no feel for the patterns underneath, so the skills never really stick.
what i built
Pattern-based curriculum with animated, step-by-step algorithm walkthroughs In-browser Monaco code editor to solve in Python or JavaScript Instant AI code review on correctness and time/space complexity, powered by Claude Spaced-repetition queue that resurfaces problems right before you would forget them Daily queue with XP, streaks, badges and company filters Two ways to run the AI: a managed subscription, or bring your own provider key (Anthropic, OpenAI, DeepSeek, Gemini, OpenRouter) stack
Next.js TypeScript React Neon Postgres Drizzle ORM Auth.js Monaco Editor Stripe Claude (Anthropic) TailwindCSS
hover: live preview 04 lunch dossier the friday lunch debate, settled live→
l outcome
The Lunch Dossier settles the weekly where-do-we-eat ritual into a single pick (by lot, by vote, or by quiet attrition), rotating the duty of choosing around the team and keeping an honest archive of every outing. Runs an office of six or sixty, each org kept to its own roster and ledger.
“An office's lunch, settled: one sitting at a time.”
the problem
Every week a team relitigates the same low-grade debate: where are we eating? Nobody wants to own the decision, it quietly eats time, and there's no honest record of where you've already been.
what i built
Three ways to decide each week: pick by lot, by vote, or by quiet attrition Runs on whichever day your office calls Friday: surfaces the next pick, files the rating, then rotates the choosing duty to the next team Per-organisation roster, walking radius and ledger; multi-org, kept separate An honest archive of where you've been, with ratings Organisations, sign-in and invite links stack
Next.js TypeScript Supabase
hover: live preview 05 acoustic levitator and analysis dashboard levitating droplets, analysed by computer vision live→
a acoustic levitator and analysis dashboard Research Sep 2025 - Nov 2025 outcome
A reproducible, researcher-friendly platform that combines physical experimentation with automated analysis, while surfacing the real challenges of hardware and software co-development and team coordination.
“Levitating droplets and analysing how they dry, with computer vision.”
the problem
Studying droplet drying needs consistent, reproducible measurement around a single physical rig.
what i built
Acoustic levitation setup with modular 3D-printed hardware and integrated heating Computer vision pipeline (OpenCV) extracting droplet diameter, area and eccentricity over time Full experiment workflow: upload, analyse, visualise, export Cloud storage of videos and results via AWS S3 with secure presigned URLs Persistent experiment tracking via PostgreSQL on AWS RDS with cached analysis results stack
React Python Flask OpenCV NumPy SciPy AWS S3 AWS RDS (PostgreSQL) Docker
06 inkd linkedin comments that sound like you in dev→
i inkd Product Jun 2026 - present outcome
Paste a post, pick an intent, and get three ready-to-use comment drafts in your voice. Powered by your Claude subscription with no per-token bill. A Chrome extension brings the same flow directly into LinkedIn.
“LinkedIn comments that sound like you, in seconds.”
the problem
Writing thoughtful LinkedIn comments takes more effort than the engagement it returns, so most people either skip it or post something generic.
what i built
Chrome MV3 extension that injects an Inkd button into every LinkedIn post action bar, scrapes post text and proxies generation to the local app 6 comment intents: add value, ask question, share perspective, soft promo, funny, congrats 3 draft tiers per generation: quick (1-2 lines), medium (3-4 lines), deep (full paragraph) Voice profile that learns your style from rejection feedback chips and auto-appends rules Distill voice button: Claude reads your generation history and suggests new voice rules CRM-lite Targets directory for LinkedIn handles and hashtags to engage with regularly Duplicate guard that warns if you've already commented on a post URL Dual Claude invocation: CLI subprocess (subscription) with SDK fallback stack
Electron Next.js React TypeScript SQLite (better-sqlite3) Anthropic SDK Tailwind CSS v4 Chrome MV3 Extension electron-builder
hover: live preview 07 aplyd every application tracked, every drop-off visible live→
a aplyd Product Jun 2026 - present outcome
A local-first job tracker with AI listing extraction, per-application Claude chat for prep, and a custom Sankey flow chart that shows exactly where in the funnel applications drop off.
“Every application tracked. Every drop-off visible.”
the problem
Job hunting across dozens of open tabs with no way to see where applications are stalling or dying.
what i built
AI extraction: paste a raw LinkedIn listing and Claude returns a clean structured object with company, role, salary, skills, deadline and responsibilities Outcome spine: a custom SVG Sankey-style chart showing the full hiring funnel with drop-off ribbons at each stage Per-application Claude chat with full job context auto-injected for prep questions, cover letters and follow-up drafts AI-generated guidance docs per stage: interview prep, company research, application strategy, follow-up email templates Stage history timeline preserving every pipeline move with timestamps Custom per-company pipelines with configurable stage lists Attachment vault for screenshots, PDFs and supporting materials License gate wired to purpl hq bundle (shared key with inkd) stack
Electron React Vite TypeScript SQLite (better-sqlite3) Anthropic SDK Tailwind CSS v4 electron-builder
08 slotd tell claude what needs doing. it plans the week. in dev→
s slotd Product Jun 2026 - present outcome
Import your calendar, drop tasks into the inbox with time estimates, hit Plan my week. Claude proposes time blocks around your real commitments with reasoning per block, then writes accepted blocks as actual calendar events.
“Tell Claude what needs doing. It plans the week.”
the problem
Having a task list and actually blocking time to do it are two different things. Fitting tasks around real meetings requires manual effort that almost never happens.
what i built
Week grid view (Mon-Sun, 6am-10pm) showing real events and AI-proposed blocks side by side with dashed outlines Natural language command bar: type anything from 'lunch w/ Sam thurs 1pm' to 'find 3h for the deck before Fri' Apple Calendar import via AppleScript plus .ics feed support for Google, Outlook and iCloud AI planner with three modes: propose (full week from scratch), command (targeted NL instruction), reshuffle (re-flow after changes) Plan review modal showing each proposed block with Claude's scheduling reasoning before committing Task inbox with estimated duration, priority, deadline and status tracking Configurable work hours, focus-block preferences, no-meetings-before time, and recurring commitments fed to Claude's prompt Fully local-first: SQLite, no accounts, no cloud sync stack
Electron React Vite TypeScript SQLite (better-sqlite3) Anthropic SDK Tailwind CSS v4 AppleScript (Calendar integration) electron-builder
hover: live preview 09 violet honeypot server a cowrie honeypot that watched the world try to break in live→
v outcome
Captured 20,000+ login attempts worldwide and analysed attacker methods and origins, demonstrating end-to-end system design and threat analysis. (The server is occasionally offline to save running costs.)
“A live honeypot that watched the world try to break in.”
the problem
Understand how real-world brute-force SSH and Telnet attacks actually behave.
what i built
Cowrie honeypot on AWS EC2 simulating SSH/Telnet ports (22, 80, 443, 2222) to capture global login attempts Python + cron automation parsing JSON logs into MySQL every 5 minutes Analytics and ML with Pandas, Matplotlib and Seaborn, plus Isolation Forest for anomaly detection IP geolocation map via the ipdata API by country and ASN Interactive PHP dashboard with a live attack counter, charts and a review system stack
AWS EC2 Ubuntu Python Cowrie MySQL PHP Pandas Matplotlib Seaborn ipdata API Isolation Forest
10 violet honeypot v2 the honeypot, rebuilt on a $0 stack live→
v outcome
A full rebuild on a modern, zero-cost stack. Same core idea as v1 (lure attackers, record everything, visualise it) but now a high-interaction trap that captures entire attacker shell sessions, fronted by a live mission-control dashboard and a machine-learning threat-analysis page. Live at v2.violethoneypot.com, pulling in thousands of real attacks.
“The honeypot, rebuilt: same idea, a deeper trap, zero running cost.”
the problem
v1 proved the concept but hit real limits: it ran on a paid AWS box that quietly racked up bills (so it sat offline most of the time), it only recorded login attempts, and the whole thing was a single PHP page. I wanted the same idea done properly: always on, capturing far more, and free to run forever.
what i built
High-interaction trap: Cowrie in proxy mode forwards attackers to a real, fully sealed backend VM, so it captures the entire post-login session (commands, downloads, keystrokes), not just the login attempts v1 saw Sealed by design: the backend has no outbound internet at the cloud layer, so even a rooted attacker cannot pivot, attack others, or mine crypto (the exact risk that gets cloud accounts banned) Python forwarder that tails the honeypot logs, enriches each source IP with geolocation, dedupes, and bulk-inserts into Postgres Live mission-control dashboard: real-time attack feed, a d3 world map of origins, KPI tiles, credential leaderboards, and an attacks-over-time chart ML threat-analysis page with four models: DBSCAN botnet-campaign clustering, a TF-IDF + Random Forest intent classifier (~90% accuracy) reading the captured commands, Isolation Forest anomaly detection, and a volume forecast Local-only admin console (control, raw sessions, intel) that is never deployed, so the public can never reach it even by trying to hack in stack
Cowrie (proxy mode) Oracle Cloud (Always Free) Python Supabase (Postgres + Realtime) Next.js TypeScript d3 scikit-learn pandas Vercel
hover: live preview 11 volleytube the volleyball world, in one app live→
v outcome
A live iOS app that is the community home for Sydney volleyball: set-by-set results, fixtures and ladders pulled automatically from Volleyball NSW, plus clips, player profiles, follows and match comments in one editorial feed. Free on the App Store.
“The home of Sydney volleyball: results, clips, and player profiles.”
the problem
Sydney volleyball lives across three leagues (PVL, SVL, YSVL), but results, fixtures and ladders are buried in Volleyball NSW pages, and there is nowhere for players and fans to share clips, follow each other, or talk about matches.
what i built
Four-tab app (home, results, videos, profiles) with a personalised feed: your next match, this weekend's fixtures, and activity from players you follow Set-by-set results, fixtures and ladders across the PVL, SVL and YSVL leagues, scraped automatically from Volleyball NSW, with manual score submission for when the scrapers lag Video clips: upload short highlights to a match's clips tab, or paste a YouTube link to share a full-match recording Player profiles with position, club, height, spike and block reach, and bio; follow players to track their clips and see when they play next Match comments with reactions (thumbs-up, dislike, heart), threaded replies and @-mentions Apple Sign In with an email/password fallback, push notifications for followed players and match updates, and exportable share cards for results Editorial design system: Fraunces serif headlines, hairline rules, monochrome reaction glyphs, and light and dark themes stack
Expo (SDK 54) React Native React TypeScript Expo Router Supabase (Postgres, Auth, Storage) Apple Sign In expo-video expo-notifications Reanimated Sentry EAS Build
hover: live preview
▶ ▶ demo
who is behind it
about tap the screen to unfold the story
co-founder / full-stack / AI-native / research / security
about ✕ fold away fold up the one who starts co-founder I co-founded purpl , a studio that ships real products instead of decks: client work and our own bets, in parallel.
I do this for the freedom. Being able to picture something and just go build it, my way, is the best feeling I know, and it’s the whole reason purpl exists.
purpl.solutions ↗
leave your message
tap to open