Skip to main content

My projects

Screenshot of Gramcore

Gramcore

  • firebase
  • next
  • react
  • resend
  • tailwind
  • typescript

A smart SRS (Spaced Repetition System) app designed to help learners master English grammar permanently. Unlike traditional SRS apps, Gramcore adapts how you're tested based on your mastery level, progressing from recognition to production exercises. Built around the CEFR framework with 315+ grammar lessons from A1 to C2, it features scaffolded learning, interleaved practice, and production-focused exercises that build deeper memory than simple multiple choice. Full-stack build: Firebase handles auth, progress tracking, and data persistence, with Resend powering transactional emails.

Screenshot of Au coin du fruit

Au coin du fruit

  • firebase
  • fuse
  • next
  • playwright
  • react
  • stripe
  • tailwind
  • tanstack
  • turborepo
  • typescript
  • vitest
  • zod

A full-stack e-commerce platform for a fruit tree nursery, built as a Turborepo monorepo. Customers browse and buy fruit trees online via Stripe checkout, with Firebase powering the product catalog and order data. Search (Fuse.js) helps visitors find care and cultivation articles fast, validated end-to-end with Zod, Vitest, and Playwright. Accessibility and SEO were first-class requirements throughout.

Screenshot of The planets

The planets

  • next
  • react
  • tailwind
  • typescript
  • zod

This is an 8-page fact site that provides comprehensive information on all planets in our solar system. I developed a responsive design that ensures users can view the optimal layout depending on their device's screen size. The app includes interactive elements. Furthermore, planets are sized according to their real size.

Screenshot of Password generator app

Password generator app

  • next
  • radix-ui
  • react
  • tailwind
  • typescript

I created an intuitive password generator application that allows users to choose their desired password length and select options for including lowercase letters, uppercase letters, numbers, and symbols. The application's sleek design is fully accessible, making it easy for users of all abilities to generate secure passwords. The password strength indicator provides real-time feedback, helping users understand the strength of their password choices. I am proud to have created a user-friendly and accessible tool that promotes password security in a modern and engaging way.

Screenshot of Product list app

Product list app

  • scss
  • typescript
  • vite
  • vitest
  • vue
  • vueuse

A dessert ordering application built with Vue 3 and TypeScript. Users can browse products, add items to their shopping cart with quantity controls, and confirm their order through an accessible modal. The app features a clean architecture using the repository pattern, focus trap management for accessibility, and responsive design. I focused on creating reusable composables for shopping cart state management and ensuring a smooth user experience with real-time price formatting and order confirmation.

Screenshot of Age calculator app

Age calculator app

  • date-fns
  • next
  • react
  • react-hook-form
  • react-spring
  • scss
  • typescript
  • zod

This project allows users to easily calculate their age. The application features a sleek and intuitive user interface with form validation that prevents invalid dates and past dates from being entered, ensuring accurate results. The HTML design was carefully crafted with accessibility in mind, making it inclusive for all users. I'm proud of the attention to detail and functionality of this project, and I'm happy to share it with others.

Screenshot of Beer app

Beer app

  • next
  • react
  • react-query
  • stiches
  • testing-library
  • typescript
  • vitest
  • zod

This project was a thrilling opportunity to create a dynamic and user-friendly application for beer enthusiasts. With a sleek search bar, users can easily search for their favorite brews and view detailed information on each beer's details page. The home page features a rotating display of two unique beers every 10 seconds, creating an engaging and dynamic experience. The HTML design prioritizes accessibility, ensuring that all users can enjoy the application. It was a privilege to work on this project and create an application that brings joy to beer lovers around the world.