person peeking from behind laptop
Available for new opportunities

Hi. I'm Connor.

I specialize in building innovative, user-focused applications

About Me

A glimpse into my world

hero

My Experience

A small list of cool things I use to construct my projects.

Next.Js

Typescript

Javascript

React

Redux

React Query

Tailwind

Node.Js

MongoDB

Express

Sql

Git
Performant
Reliable
Responsive
Robust
Scalable
Secure
Accessible
User Friendly
Maintainable
Interactive
Search Optimized
Usable
Performant
Reliable
Responsive
Robust
Scalable
Secure
Accessible
User Friendly
Maintainable
Interactive
Search Optimized
Usable

Real-world Results

Featured Projects

See how I transformed concepts into engaging digital experiences.

Top Projects

Productivity App


This is a full-stack productivity application built with React and Ruby on Rails, designed to help users manage their study sessions and track productivity. The app features a Pomodoro timer system, "Study With Me" sessions using YouTube's API, and comprehensive task management. Users can create accounts, track study sessions, manage tasks, and view their productivity analytics through Chart.js visualizations. The frontend utilizes modern React practices (Custom Hooks, React Router) and Tailwind CSS for styling, while the backend uses Rails with PostgreSQL for data persistence. Key features include session tracking, task management, YouTube integration for virtual study sessions, and detailed analytics dashboards that visualize productivity patterns. The app supports both light and dark modes, and uses session-based authentication for user management.

  • React.js
  • TailwindCSS
  • Postgres
  • Ruby on Rails
  • Chart.js
  • YouTube iFrame API
Productivity App

Magic Mirror


This Magic Mirror project is a smart home display application that transforms a Raspberry Pi, TV screen, and two-way mirror into an interactive information dashboard. Built primarily with Node.js and Electron for the application framework, it uses modern web technologies (HTML, CSS, JavaScript) to render modules that display real-time data like weather conditions (via OpenWeather API) and calendar events (through iCal integration). The application follows a modular architecture pattern, allowing for easy extension and customization of display widgets. Running on a Raspberry Pi (Linux-based system), it creates a sleek, minimalist interface that appears to float on the mirror's surface while providing daily information at a glance. The project demonstrates full-stack development capabilities, combining hardware integration with software development, API interactions, and frontend display logic.

  • Node.js
  • HTML
  • CSS
  • JavaScript
  • Electron
  • Raspberry Pi
  • OpenWeather API
  • iCal
Magic Mirror

Booking Automation Script


This Python script automates the golf bay booking process at PGA facilities using web automation and scheduling technologies. Built with Selenium WebDriver and ChromeDriver for browser automation, the script navigates through the PGA's booking system to secure practice bays during desired time slots. It implements a multi-bay fallback system, attempting bookings first in a primary bay (Bay 5) before trying two backup options (Bay 7 and Any Bay). The application runs on a scheduler using APScheduler, checking for available slots every 15 minutes across multiple time preferences (4:30 PM to 6:00 PM). Environment variables are managed through python-dotenv for secure credential handling, while comprehensive logging is implemented using Python's built-in logging module. The tech stack combines Python 3.x with Selenium for web automation, ChromeDriver for browser control, APScheduler for task scheduling, and environment configuration management, all running on macOS with a command-line interface.

  • Python
  • Selenium WebDriver
  • ChromeDriver
  • APScheduler
  • python-dotenv
  • Git
Booking Automation Script

All Projects

Productivity App


This is a full-stack productivity application built with React and Ruby on Rails, designed to help users manage their study sessions and track productivity. The app features a Pomodoro timer system, "Study With Me" sessions using YouTube's API, and comprehensive task management. Users can create accounts, track study sessions, manage tasks, and view their productivity analytics through Chart.js visualizations. The frontend utilizes modern React practices (Custom Hooks, React Router) and Tailwind CSS for styling, while the backend uses Rails with PostgreSQL for data persistence. Key features include session tracking, task management, YouTube integration for virtual study sessions, and detailed analytics dashboards that visualize productivity patterns. The app supports both light and dark modes, and uses session-based authentication for user management.

  • React.js
  • TailwindCSS
  • Postgres
  • Ruby on Rails
  • Chart.js
  • YouTube iFrame API
Productivity App

Magic Mirror


This Magic Mirror project is a smart home display application that transforms a Raspberry Pi, TV screen, and two-way mirror into an interactive information dashboard. Built primarily with Node.js and Electron for the application framework, it uses modern web technologies (HTML, CSS, JavaScript) to render modules that display real-time data like weather conditions (via OpenWeather API) and calendar events (through iCal integration). The application follows a modular architecture pattern, allowing for easy extension and customization of display widgets. Running on a Raspberry Pi (Linux-based system), it creates a sleek, minimalist interface that appears to float on the mirror's surface while providing daily information at a glance. The project demonstrates full-stack development capabilities, combining hardware integration with software development, API interactions, and frontend display logic.

  • Node.js
  • HTML
  • CSS
  • JavaScript
  • Electron
  • Raspberry Pi
  • OpenWeather API
  • iCal
Magic Mirror

Booking Automation Script


This Python script automates the golf bay booking process at PGA facilities using web automation and scheduling technologies. Built with Selenium WebDriver and ChromeDriver for browser automation, the script navigates through the PGA's booking system to secure practice bays during desired time slots. It implements a multi-bay fallback system, attempting bookings first in a primary bay (Bay 5) before trying two backup options (Bay 7 and Any Bay). The application runs on a scheduler using APScheduler, checking for available slots every 15 minutes across multiple time preferences (4:30 PM to 6:00 PM). Environment variables are managed through python-dotenv for secure credential handling, while comprehensive logging is implemented using Python's built-in logging module. The tech stack combines Python 3.x with Selenium for web automation, ChromeDriver for browser control, APScheduler for task scheduling, and environment configuration management, all running on macOS with a command-line interface.

  • Python
  • Selenium WebDriver
  • ChromeDriver
  • APScheduler
  • python-dotenv
  • Git
Booking Automation Script

Latest Updates

Work Journal

Work Journal - Week 12
Development

January 18, 2025

Work Journal - Week 12

This week was focused on exploring various frameworks, experimenting with third-party libraries, and integrating APIs into applications. Here's a breakdown of the week: ### **React Projects and Libraries** #### **1\. React Tutorial** * Followed [Tania Rascia's React Tutorial](https://www.taniarascia.com/getting-started-with-react/) to deepen understanding of React fundamentals: * Explored component structure, JSX, and props. * Halted at the "Pulling in API Data" section. #### **2\. Experimentation with React Libraries** * **Libraries Used:** * **`react-calendar`**: Implemented an interactive calendar. * **`react-awesome-button`**: Enhanced UI with animated buttons. * **`react-player`**: Embedded responsive video players. * Experimented with libraries from the [Awesome React Components list](https://github.com/brillout/awesome-react-components). #### **3\. News API Integration** * Created a **React app** to consume the [NewsAPI](https://newsapi.org/docs/endpoints): * Displayed articles with titles, authors, descriptions, and content. * Implemented a search filter for user-defined queries. * Moved API requests to a Rails backend for secure handling of API keys. #### **4\. GitHub OAuth Integration** * Set up GitHub OAuth authentication: * Registered a GitHub OAuth app and configured frontend/backend routes. * Implemented cookies to manage GitHub access tokens securely. * Built a `GitHubProfilePage` to display authenticated user profiles. #### **5\. React TypeScript Conversion** * Converted a blog frontend into TypeScript: * Added strong type definitions for props, posts, and API responses. * Used TypeScript to enforce type safety across CRUD actions. * Extended the app with user authentication using TypeScript. ### **Rails Backend Development** #### **1\. News API Backend** * Created a **Rails backend** to fetch data from NewsAPI: * Secured API keys using environment variables. * Configured CORS to allow frontend communication. * Added endpoints for fetching and searching articles. #### **2\. Exploring Third-Party APIs** * Tested APIs from the [Public APIs list](https://github.com/public-apis/public-apis): * Integrated API calls into Rails apps using the `http` gem. * Focused on handling authentication and secure request headers. #### **3\. OAuth and Secure Authentication** * Enhanced OAuth capabilities with GitHub: * Used the `http` gem to interact with GitHub's API. * Configured callbacks and profile endpoints to fetch user details. ### **Exploring New Frameworks** #### **1\. Vue.js** * Created a **Vue.js app** following [Tania Rascia's tutorial](https://www.taniarascia.com/getting-started-with-vue/): * Explored Vue components and data binding. * Practiced CRUD operations using the [Vue.js CRUD guide](https://github.com/actualize-day-2024-09/resources/blob/main/guide_vuejs3_vite_crud.md). #### **2\. Ionic Framework** * Began exploring **Ionic React**: * Experimented with building hybrid web/native mobile apps. * Reviewed the official [Ionic documentation](https://ionicframework.com/docs/react). ### **Problem Solving and CLI Skills** #### **1\. Balanced Brackets Problem** * Implemented a solution to validate nested braces in a string using stacks. #### **2\. CLI-Based Tasks** * Worked on file reading and parsing for the [Price Combinations Problem](https://docs.google.com/document/d/18wqpooP_-LXwf7y_SIN1tPoZ2CA9GXfTB6YxWums6yA/): * Learned how to process command-line arguments in Ruby. ### **Takeaways from Week 8** * **Strengthened React expertise**: Experimented with third-party libraries and integrated APIs effectively. * **API Security**: Shifted API key handling to the backend for better security practices. * **Broadened Framework Knowledge**: Started working with Vue.js and Ionic for diverse frontend capabilities. * **Improved Problem-Solving**: Tackled algorithm challenges and learned advanced CLI techniques. This week was an enriching experience in exploring technologies and building confidence in integrating diverse tools\! 🎯

Work Journal - Week 11
Development

January 11, 2025

Work Journal - Week 11

This week marked the beginning of the capstone project, where I started developing a full-stack productivity application using React and Ruby on Rails. The app is designed to assist users with task management, study session tracking, and productivity enhancement. Here's a detailed summary: ### **Capstone Project: Productivity App** #### **Project Overview** * **Purpose**: A productivity app featuring: * **Pomodoro timer system** for efficient time management. * "Study With Me" sessions using **YouTube's API**. * Comprehensive **task management** functionality. * **Technologies**: React (frontend), Ruby on Rails (backend). ### **Development Process** #### **1\. Planning and Schema Design** * Created the **schema** in Google Sheets to visualize and validate: * **Tables and attributes**: Users, Tasks, Sessions, etc. * Defined **relationships**: * **Users**: `has_many :tasks`, `has_many :sessions`. * **Tasks**: `belongs_to :user`. * **Sessions**: `belongs_to :user`. * Ensured schema integrity with appropriate `id`, `foreign_key`, and constraints. #### **2\. Backend Development (Rails API)** 1. **Initial Setup**: * Built the Rails backend using the API mode. * Added necessary gems (`bcrypt` for authentication, `jbuilder` for JSON views). 2. **Models and Associations**: * Defined models: * **User** with authentication (`has_secure_password`). * **Task** and **Session** models with associations. 3. **Authentication**: * Implemented: * `users#create`: User signup. * `login_sessions#create`: User login with session handling. * Ensured secure password handling using **bcrypt**. 4. **Controllers and CRUD Operations**: * Created: * **SessionsController**: Manage Pomodoro sessions. * **TasksController**: Handle task CRUD operations. * Added **JSON views** for easy frontend integration. * Tested CRUD functionality using **HTTPie**. 5. **Testing**: * Installed **Minitest**: * Wrote unit tests for models and controllers. * Ensured the correctness of associations and validations. #### **3\. Frontend Development (React)** 1. **Setup**: * Used the React CRUD cheat sheet to initialize the app. * Integrated **React Authentication**: * Built components for **Signup**, **Login**, and **Logout**. * Tested authentication flow on the home page. 2. **Task Management**: * Connected frontend to backend API endpoints. * Created components to manage tasks: * **TaskList**: Display all tasks. * **TaskForm**: Add or edit tasks. * **TaskDetail**: View individual task details. ### **Additional Exercises and Learning** #### **1\. Testing and TDD** * Practiced Test-Driven Development (TDD) using Minitest: * Completed exercises for the `Calculator` class: * Wrote tests for **addition, subtraction, multiplication, division**. * Added new methods (e.g., square, power) and their respective tests. * Built a **Coin Machine**: * Wrote a method to convert cents into the minimum number of coins. * Implemented and tested the **FizzBuzz** logic. #### **2\. SQL Practice** * Worked through **SQLBolt** exercises: * Focused on advanced queries using `JOIN`, `WHERE`, `ORDER BY`, and `LIMIT`. * Applied insights to backend query optimizations. #### **3\. Collaboration and Pair Programming** * Paired with a peer for TDD exercises: * Used a ping-pong approach for testing and implementation. * Practiced **mob programming** for collaborative problem-solving. ### **Key Features Built** 1. **Backend API**: * User authentication and session handling. * Full CRUD functionality for tasks and sessions. * JSON responses tailored for React consumption. 2. **Frontend Features**: * Authentication components (Signup, Login, Logout). * Task management interface. 3. **Testing**: * Minitest for backend unit and integration tests. ### **Takeaways** * **Project Planning**: Leveraged schema design tools to plan and validate relationships. * **TDD**: Reinforced the habit of writing tests first to guide development. * **Full-Stack Development**: Strengthened skills in integrating React with Rails APIs. * **Collaboration**: Practiced effective teamwork and communication during exercises. ### **Next Steps** * Build out additional features for the **Pomodoro timer** and **YouTube integration**. * Add frontend styling using **Tailwind CSS**. * Deploy the app for demonstration and feedback. This week set a solid foundation for the capstone project, focusing on robust backend development and seamless front-end integration. 🚀

Work Journal - Week 10
Development

January 4, 2025

Work Journal - Week 10

During the New Year's week, the focus was on collaborating on a Resume Application team project. I handled the Rails backend, ensuring the API was robust and met the application's requirements. Here's a detailed breakdown: ### **Team Project: Resume Application** #### **Backend Development (Ruby on Rails)** 1. **Initial Setup:** * Created a new Rails API application for the project. * Installed necessary gems and configured **CORS** for frontend-backend communication. * Added and seeded the database with **fake data** to simulate real-world application usage. 2. **Models and Relationships:** * Established `has_many` and `belongs_to` relationships across models: * **Users**: `has_many :experiences, :educations, :projects` * **Experiences, Educations, Projects**: `belongs_to :user` 3. **User Authentication:** * Added `users#create` (signup) and `sessions#create` (login) actions: * Secure password management using **bcrypt**. * Implemented session-based authentication to manage user logins. * Ensured secure handling of user credentials and sensitive data. 4. **CRUD Actions for Models:** * Developed **controllers** for: * **Users**: * `index`: Fetch all users. * `show`: Fetch details of a specific user. * `update`: Update user details with a fallback (`||`) condition. * `destroy`: Soft delete user accounts. * **Experiences, Educations, and Projects**: * Full **CRUD** functionality (Create, Read, Update, Delete). * Refined `update` actions with fallback conditions for better data integrity. 5. **Testing:** * Added **controller tests**: * Verified CRUD operations for all models. * Ensured API responses were accurate and as expected. 6. **Optimizations:** * Addressed potential **N+1 query problems** by leveraging Rails' `includes` method to preload associated data. * Experimented with **pagination** to handle large datasets efficiently: * Users could request paginated results with parameters like `?page=2`. 7. **Key Features Implemented:** * **JBuilder** for JSON responses: * Streamlined data representation for frontend consumption. * Updated and extended the seeds file: * Added 5 more users with relevant data to mimic realistic scenarios. * Fixed update actions for all models, ensuring consistent and error-free updates. ### **Additional Exercises** 1. **SQL Practice with SQLBolt:** * Completed interactive SQL lessons to strengthen database querying skills. * Focused on query optimization techniques such as filtering, ordering, and limiting results. 2. **Rails Best Practices:** * Explored solutions for the **N+1 query problem**: * Researched Rails' approach to eager loading and preloading. * Optimized API performance by minimizing the number of database queries. * Studied Rails ActiveRecord pitfalls and applied recommendations to avoid slow queries. 3. **Collaborative Development:** * Utilized GitHub for team collaboration: * Implemented pull request workflows to ensure clean code merges. * Mob programming sessions for collaborative problem-solving. * Enhanced the repository's **README** to document API endpoints and project details. 4. **Planning for Final Project:** * Reviewed potential project ideas for the final capstone. * Started brainstorming innovative features and technologies for implementation. ### **New Technologies and Skills** 1. **Advanced Rails Development:** * Learned best practices for building performant Rails APIs. * Enhanced proficiency with Rails testing frameworks. 2. **Database Optimization:** * Strengthened SQL skills through exercises and debugging real-world issues. * Implemented pagination and eager loading to improve API efficiency. 3. **Collaboration and Workflow:** * Practiced effective communication and task delegation in a team environment. * Mastered Git workflows with pull requests and code reviews. ### **Takeaways from Week 10** * **Backend Proficiency**: Delivered a scalable and efficient Rails API with robust CRUD functionality. * **Collaborative Coding**: Strengthened teamwork through Git workflows and mob programming. * **Optimization Focus**: Gained deeper insights into database and query optimization in Rails. This week reinforced backend development skills while preparing for future individual and team projects. 🚀

Contact Me

My inbox is always open. Whether you have a question or just want to say hello, I'll try my best to get back to you! Feel free to mail me about any relevant job updates.