Projects

One project at a time

Browser Extension Manager UI

Browser Extension Manager UI

10/26/2025

The project simulates a browser extension manager where users can toggle, filter, remove, and theme their extensions.

ReactViteTailwind CSS 4AutoAnimateLocal data.json
Character Counter

Character Counter

10/3/2025

React mini app that counts characters, words, and lines in real time. Built with Vite and Tailwind CSS 4 using custom theme tokens, dark mode, and utility classes for a clean, responsive layout. Uses useRef for direct textarea access, useState for managing counts and limits, and useEffect for auto updates and saved theme preferences.

ReactTailwind CSS 4ViteuseRefuseStateuseEffectDark ModeCustom Theme Tokens
Newsletter Sign-Up Form with Success Message

Newsletter Sign-Up Form with Success Message

9/10/2025

Responsive React project where users can subscribe by entering their email. Built with functional components, props, and lifted state to handle form validation, success feedback, and conditional rendering with Tailwind CSS 4

React Tailwind CSS 4VitePropsState LiftingConditional Rendering
Advice Generator App

Advice Generator App

8/20/2025

React app that fetches random advice from the Advice Slip API. Built with functional components, useState and useEffect hooks, and styled with Tailwind CSS 4 for a clean, responsive layout.

ReactTailwind CSS 4ViteuseStateuseEffectAdvice Slip API
Network Project

Network Project

4/10/2025

Simplified social networking app inspired by Twitter, built with Django and JavaScript. Users can create, edit, and like posts, follow others, and view personalized feeds. Includes pagination, authentication, and JavaScript-based updates without page reloads.

DjangoJavaScriptBootstrap 5PaginationAuthentication
Mail

Mail

3/23/2025

A full-featured email client built with Django and JavaScript for CS50W. Includes inbox, reply, archive, and dynamic mailbox views.

DjangoJavaScriptHTML 5CSS 3
Swiss Romande Hikes

Swiss Romande Hikes

2/1/2025

CS50W Capstone project — a personal hiking guide and trail explorer for the French-speaking region of Switzerland. Built with Django and JavaScript, featuring an interactive Mapbox map, trail filtering, live weather data from Open-Meteo API, and a comment system with real-time updates. All hikes are based on my own experiences and include original photos and trail details.

DjangoJavaScriptSCSSMapbox GL JSOpen-Meteo Responsive Design
Ribe Photo Portfolio Web App

Ribe Photo Portfolio Web App

11/16/2024

A responsive photography portfolio built for a professional photographer to showcase visual galleries. Developed with Flask and Jinja templates, styled using SCSS and Bootstrap 5, and integrated with Cloudinary for optimized image delivery. Includes a working contact form powered by SendGrid and deployed on Heroku for reliable hosting.

PythonFlaskBootstrap 5CloudinarySendGridHeroku
Interactive Rating Component

Interactive Rating Component

5/3/2023

A small JavaScript project where users can select and submit a rating, then see a thank-you state. Built with HTML, CSS, and JavaScript to explore DOM manipulation and interactive UI behavior.

HTML 5CSSVanilla JavaScriptDOM ManipulationFigma
Skilled E-Learning Landing Page

Skilled E-Learning Landing Page

4/10/2023

Responsive landing page built with SCSS and BEM. Practiced reusable mixins, structured class naming, and mobile-first layout adjustments to keep the design consistent across screens.

HTML 5SCSSBEMFigma