Projects

These are a few of my personal projects. You can explore more on my GitHub.

FancyAlt - Image Analysis API | Repository | API Docs | Live Demo

FancyAlt is an AI-powered image analysis API that generates accessible alt-text, creative stories, and performs content moderation using uploaded images or public image URLs. It integrates Azure AI Vision and OpenAI, with a modern, mobile-friendly front-end and Swagger-powered documentation.

  • Image Analysis: Supports both binary file uploads and public image URLs for processing.
  • Alt-Text and Stories: Uses Azure Vision for short alt-text and OpenAI to generate 2–3 sentence stories.
  • Content Moderation: Filters adult, racy, and gory content before further processing.
  • Interactive API Docs: Built using Swagger UI with custom styling and theming.
  • Modern UI: Bootstrap 5 front-end with dark mode toggle and mobile responsiveness.
  • Security: Rate limiting, input sanitization, Helmet headers, CORS, and strict upload validation.
  • Error Handling: Centralized custom error handler with structured responses and standard HTTP codes.
  • Maintenance: Daily cron job cleans up uploads; modular middleware for validation and error handling.
Tags: Web Application, API, Node.js, Express, Azure AI, OpenAI, Swagger

RunVenture - Fitness App | Repository | Design & Dev Process | Live Demo

RunVenture is a lightweight, modern fitness tracking app inspired by MapMyRun.com. Built with React.js, it supports route planning, GPS run tracking, music playback, training plans, and social challenges, all powered by browser APIs, Google Maps, and Spotify.

  • Live Run Tracking: Real-time GPS, pace, distance, and calorie tracking with a visual route map.
  • Route Planning: Interactive map-based route builder with difficulty scores and preview.
  • Spotify Integration: In-app music player with playlist selection and URL loading.
  • Training Plans: Customizable weekly plans with editable fitness goals and progress graphs.
  • Social Challenges: Join, share, and track community running challenges with visual progress.
  • Post-Run Summaries: Stats overview, best-run recognition, and hydration tips after each session.
  • LocalStorage Authentication: Lightweight login system stores user data locally for testing purposes.
  • Responsive Design: Mobile-friendly interface tested on major desktop and mobile browsers.
Tags: React.js, Google Maps API, Spotify API, User-Centered Design

Fetch Me a Movie - Movie Search App | Repository | Live Demo

Fetch Me a Movie is a sleek and responsive React app that allows users to search movies by title and view detailed information. The app is powered by the OMDb API and includes thoughtful accessibility features.

  • OMDb Integration: Real-time movie search with fallback mock data support.
  • Movie Detail View: Displays posters, directors, plots, runtime, genres, and more.
  • Responsive Design: Works seamlessly on both desktop and mobile devices.
  • Accessibility Focus: ARIA labels, keyboard navigation, and live feedback for screen readers.
  • UI Enhancements: Loading states, consistent color palette, and Poppins font styling.
Tags: React.js, API Integration, Accessibility, OMDb API

South Carolina Wildfire Monitoring App | Repository | Live Demo

A real-time wildfire monitoring web application for South Carolina using satellite data from NASA FIRMS. Visualizes active fires on an interactive map with automated backend updates.

  • NASA FIRMS Integration: Fetches and processes fire detection data from MODIS and VIIRS satellites.
  • Interactive Mapping: Leaflet-based map with fire markers, brightness, FRP, and confidence data.
  • Backend Automation: Express.js server updates fire data daily and serves it through an API.
  • Database: Supabase used to store and retrieve fire records.
  • Deployment: Hosted via Vercel with backend uptime monitoring through UptimeRobot.
Tags: React.js, Node.js, Express, Leaflet.js, Geospatial

Real-time Chat App (WebSockets) | Repository

A basic real-time chat app built with Node.js, Express.js, and Socket.IO. Features include nicknames, typing indicators, join/leave messages, and a live user list—ideal for learning WebSockets or extending into a full-featured chat platform.

  • Real-Time Messaging: Instant updates for all connected users via WebSockets.
  • User Experience: Join with nickname, view typing status, and see active users.
  • Responsive UI: Lightweight and adaptable to all device sizes.
  • Learning Tool: Foundation for adding private messaging, authentication, or chatrooms.
Tags: Node.js, Express, Socket.IO, WebSockets, Real-Time

Celestial Gatherings - Event Management App | Repository | Live Demo

A comprehensive space-themed event management web application built with Node.js, utilizing the Express framework and EJS template engine. Following the MVC design pattern, the application is deployed on Vercel, uses Cloudinary for cloud-hosting images, and MongoDB Atlas for the database. It offers robust features and functionalities, including:

  • MVC Architecture: The application follows the Model-View-Controller (MVC) design pattern, ensuring separation of concerns and facilitating maintenance and scalability.
  • Express Framework: Utilized for building the server-side of the application, providing robust routing and middleware functionalities.
  • EJS Template Engine: Used for rendering dynamic content on the client-side, enabling easy integration of server-side data into HTML templates.
  • Vercel Deployment: The application is deployed on Vercel, offering a seamless and scalable deployment solution.
  • Cloudinary Integration: Images are hosted on Cloudinary, ensuring efficient cloud-based image management and delivery.
  • MongoDB Atlas: The application uses MongoDB Atlas for cloud-based database management, providing a reliable and scalable data storage solution.
  • Event Management: Comprehensive CRUD functionalities for events, including creation, viewing, editing, and deletion of events. Events are categorized and can be viewed by category.
  • User Authentication and Authorization: Secure user authentication using hashed and salted passwords. Different access levels for users, ensuring only authorized users can perform specific actions.
  • Session Management: Persistent session management using express-session and connect-mongo, ensuring user sessions remain active even after server restarts.
  • RSVP Functionality: Authenticated users can RSVP to events hosted by others, with the ability to update their RSVP status (YES, NO, MAYBE). Hosts are restricted from RSVPing to their own events.
  • Flash Messages: Integration of flash messages for providing users with success and error notifications, enhancing user experience.
  • Dynamic Navigation Bar: The navigation bar dynamically displays menu items based on the user's role (guest or authenticated user), providing a personalized user experience.
  • Error Handling: Comprehensive error handling mechanisms for various scenarios, including invalid route parameters, database operation errors, and unauthorized requests. User-friendly error pages are displayed when errors occur.
  • Security Measures: Implementation of security measures to prevent common web application attacks, including input validation, output encoding, and limiting authentication requests. User inputs are sanitized and validated to prevent XSS attacks.
  • Front-End Input Validation: Front-end input validation ensures that all user inputs meet the required criteria before being processed by the server.
  • Logo and Branding: The application features a custom logo and branding under the name "Celestial Gatherings," enhancing its visual appeal and brand identity.
Tags: Web Application, JavaScript, Node.js, MVC, Express.js, MongoDB

Asteroid Data Analysis and Classification | Repository | Kaggle Notebook

A comprehensive analysis and classification of asteroid data using machine learning techniques. The dataset was sourced from the NASA JPL Small-Body Database. Key aspects of the project include:

  • Data Preprocessing: Handling missing values, encoding categorical variables, and feature selection for model training.
  • Exploratory Data Analysis: Visualizations including bar charts, scatter plots, and word clouds to understand data distribution and relationships.
  • Feature Engineering: Identified key features, such as perihelion distance (q), Earth Minimum Orbit Intersection Distance (moid_ld), and diameter, to predict Near-Earth Object (NEO) status.
  • Machine Learning Models: Implemented Random Forest for feature importance and a neural network using PyTorch for classification.
  • Model Evaluation: Achieved an accuracy of 99.95% on test data using neural network model with batch normalization and dropout for regularization.
  • Visualization Techniques: Used Seaborn and Matplotlib for creating informative visualizations that highlight key insights from the data.
  • Deployment and Sharing: The Jupyter Notebook and results are shared on Kaggle for reproducibility and further exploration by the data science community.
Tags: Data Science, Machine Learning, Data Visualization, Python, PyTorch

Predicting the Purpose of a Satellite | Repository | Kaggle Notebook

Analysis of a comprehensive dataset of satellites currently orbiting Earth. The data includes details on country of origin, purpose, and operational specifics. Key aspects of the project include:

  • Data Cleaning and Preprocessing: Performed extensive data cleaning, including handling missing values, encoding categorical variables, and standardizing numerical features.
  • Feature Engineering: Identified key features such as 'Users', 'Class of Orbit', 'Type of Orbit', and 'Power (watts)' for predicting the purpose of satellites.
  • Machine Learning Models: Implemented RandomForest and LightGBM classifiers to predict satellite purposes with high accuracy, achieving a 97.62% accuracy rate on the test set.
  • Visualization and Analysis: Created visualizations to showcase feature importance and the distribution of satellite purposes, providing insights into the operational characteristics of satellites.
  • Model Deployment: Saved and deployed the trained models and preprocessing pipelines for future predictions and analysis.
Tags: Data Science, Machine Learning, Data Visualization, Python, LightGBM

Learning Platform - Framer Prototype | Repository | Live Demo

This project involved developing a web application prototype with Framer, progressing from low-fidelity wireframes to a high-fidelity, interactive prototype.

  • Purpose of the Prototype:
    • Educational Modules: Structured lessons that guide users through key data science concepts.
    • Interactive Quizzes: Engaging quizzes to reinforce learning and assess user understanding.
    • Practical Challenges: Real-world tasks that allow users to apply their knowledge in practical settings.
  • Development Process:
    • Low-Fidelity Wireframes: Sketched initial wireframes to outline the basic structure and flow of the application.
    • High-Fidelity Prototyping with Framer: Transformed low-fidelity sketches into a detailed, high-fidelity prototype using Framer's advanced tools for interaction and animation.
    • User Testing and Usability Testing: Conducted user testing to validate the prototype, gathering valuable feedback and insights to enhance interactions and overall user experience.
Tags: Wireframing, Prototyping, User Testing, Framer

Apartment Rental Mobile App - Balsamiq Prototype | Overview | Demo

This project involved developing a collaborative Balsamiq prototype for Home Hunt, an apartment rental company mobile app.

  • Prototype Functionality:
    • Map Search for Apartments: Users search using an interactive map with pin-based navigation.
      • Task #1 (My Solo Task): Developed the map search feature with:
        • Search criteria (location, bedrooms, price range, etc.).
        • Interactive pins with previews of key details.
        • Switching between list and map views.
        • Modals with slideshows and contact information.
    • Apartment Details & 3D Walkthrough: Explore floor plans, galleries, and tours.
    • Report Issues & Maintenance Requests: Submit and track maintenance requests.
    • Roommate Support: Tools for shared living (chores, rent ledger, calendar).
  • Development Process:
    • Wireframe Sketches: Sketched key functionalities.
    • Base Layout: Established a unified mobile layout with global header and footer.
    • Interactive Elements: Added radio buttons, cards, and bottom navigation.
    • User Studies: Conducted usability tests for feedback.
    • Content-Fidelity Matrix: Balanced realism and feasibility.
    • Project Reflection: Identified strengths (intuitive flow) and improvements (color palette).
Tags: Balsamiq, Prototyping, User Testing

Animated SVG Christmas Tree | Repository | Live Demo

Spreading Christmas cheer all throughout the year!

  • SVG Graphics: Created a visually appealing Christmas tree using scalable vector graphics (SVG).
  • CSS Animations: Added animated Christmas lights using CSS keyframe animations for a dynamic effect.
  • Responsive Design: Ensured the SVG tree is responsive on different screen sizes and devices.
Tags: SVG, CSS, Animation