Portfolio

Personal Assistant React App

A full-stack personal productivity app built with React, TypeScript, Node.js, Express, and MongoDB. Sparklane brings calendars, tasks, time tracking, budgeting, and meal planning together in one place.

In Development

Project Details

Sparklane is an evolving personal assistant app designed to make everyday organisation a little easier.

It currently includes Google Calendar integration, to-do lists, time logging, monthly budgeting, recurring payments, and an early-stage meal-planning area.

The project is still growing, with more features and improvements planned.

The app is currently available to a small test audience. Get in touch if you’d like access or want to share feedback.

Features

Key Features Implemented

  • Google Calendar event viewing and creation

  • User authentication and account settings

  • To-do list with editing and completion tracking

  • Time logging with daily and weekly summaries

  • Monthly budgeting with recurring payments

  • Payment calendar and paid/unpaid tracking

  • Responsive, mobile-friendly design

  • Meal-planning area and PCOS reference guide

  • Connection status monitoring

In Progress: Expanding the meal planner and adding more personal assistant features.

Technical Details

Frontend (React TypeScript)

Framework: React 19 with TypeScript Styling: Bootstrap 5, React Bootstrap, and custom CSS State Management: React Context API HTTP Client: Axios Authentication: Google OAuth with server-side session handling

Backend (Node.js Express)

Runtime: Node.js with Express.js Database: MongoDB with Mongoose Authentication: Passport.js with Google OAuth 2.0 Sessions: Express-session with MongoDB session storage Security: Helmet, CORS, encrypted OAuth tokens, rate limiting, and request logging

Architecture Pattern

RESTful API: Express routes organised by feature Component-based UI: Reusable React components and pages Separation of Concerns: Separate routes, models, components, helpers, and styles Persistent Data: User data and sessions stored securely with MongoDB