React · Vite · Node.js · Express · MongoDB
A full-stack piano training web application for beginner musicians. Features interactive sheet music, melody playback with Tone.js, and real-time pitch detection via microphone using Pitchy.
TypeScript · React · Vite · Node.js · Express · Zod Validation
Full-stack medical records app with **strict TypeScript**, discriminated unions, runtime validation, and safe frontend–backend integration.
PHP · HTML5 · CSS3 · JavaScript · React · WordPress API
Custom WordPress prototype for discovering communities & events. Includes filtering interface and responsive bilingual design.
React Native · Apollo Client · GraphQL · SQLite
Mobile app for browsing GitHub repositories, submitting reviews, and authenticating users with JWT. Built with **React Native, Apollo, GraphQL**.
React · Vite · JavaScript · MUI · REST API
HR management application with employee lists, detail views, forms, and computed reminders. Includes global state via Context API.
PHP HTML5 CSS3 JS WordPress API
A custom WordPress theme for a website about mushrooms in Finland, combining education, blog content, and guided tour booking. Fully responsive, user-friendly, and optimized for multilingual support using Weglot (English & Finnish).
HTML5 CSS3 JS
This is an interactive JavaScript project that combines arrays, objects, loops, conditional statements, functions, and DOM manipulation. The user can view, add, filter, search, and delete animals – as well as sort the list alphabetically. The site's layout has been refined to be user-friendly and clear.
HTML5 CSS3 JS
Pancake Ordering App An interactive web application where the user can customize and order their own pancake by choosing the type, toppings and toppings. The chef can manage and update orders on their own "All Orders" page.
HTML5 CSS3 JS
An interactive web application where users can manage their personal bank account. They can log in securely with a PIN code (1234), check their account balance, deposit money, and withdraw funds if the balance allows. The application updates the balance instantly without reloading the page and displays error messages when necessary (e.g., “Insufficient funds”).
© AnnaShi 2025