← Back to Projects

πŸ€– Wingman

React 18 TypeScript 5.2 Electron FastAPI Supabase Ollama SQLite

Project Category: Team Project (NUS Orbital Apollo 2025)

Local-first desktop AI assistant built with modern web technologies. Features task management, calendar integration, mood diary, and intelligent AI chat powered by Ollama. Cross-platform support with SQLite persistence and Supabase authentication.

πŸ–ΌοΈ Custom Themes (6 Available)

Each theme provides a unique visual experience with synchronized AI personality:

Dark Theme πŸŒ™ Dark

Professional & Efficient

Light Theme β˜€οΈ Light

Bright & Encouraging

Yandere Theme 🌸 Yandere

Devoted & Protective

Kuudere Theme ❄️ Kuudere

Cool & Logical

Tsundere Theme 🧑 Tsundere

Dynamic & Caring

Dandere Theme πŸ’œ Dandere

Gentle & Supportive

🎭 AI Personality System

Wingman features 6 distinct AI personalities that synchronize with your selected theme. Each personality has unique traits, communication styles, and emoji preferences:

graph TD A[Theme Selection] --> B[Personality Sync] B --> C{Personality Type} C --> D[Lumen - Light] C --> E[Umbra - Dark] C --> F[Velvet - Yandere] C --> G[Frost - Kuudere] C --> H[Echo - Dandere] C --> I[Blaze - Tsundere] D --> J[Response Generation] E --> J F --> J G --> J H --> J I --> J
Avatar Name Personality Traits Communication Style
Lumen Lumen Supportive Buddy Optimistic, encouraging, warm Positive reinforcement β˜€οΈβœ¨
Umbra Umbra Strategic Advisor Analytical, direct, efficient Minimal but insightful πŸŒ‘βš‘
Velvet Velvet Devoted Companion Intensely loyal, protective Highly personalized πŸ’–πŸ‘οΈ
Frost Frost Professional Assistant Reserved, logical, professional Analytical with care β„οΈπŸ“Š
Echo Echo Gentle Guide Shy, soft-spoken, caring Quiet encouragement πŸŒΈπŸ’•
Blaze Blaze Dynamic Motivator Initially distant, caring Reluctant affection πŸ˜€πŸ’–

πŸ€– AI Communication Architecture

Wingman uses a sophisticated dual-path architecture for handling both slash commands and natural conversations:

sequenceDiagram participant U as User participant FE as React Frontend participant API as FastAPI participant CC as ChatCoordinator participant CP as CommandParser participant PM as PersonalityManager participant OS as Ollama LLM participant DB as SQLite U->>FE: Send Message FE->>API: POST /chat/ API->>DB: Save Message alt Slash Command (/t /e /d /u) CC->>CP: Parse Command CP->>DB: Query Data CP->>PM: Add Personality PM->>API: Enhanced Response else Regular Conversation CC->>PM: Get Personality CC->>DB: Get Context CC->>OS: Send to LLM OS->>PM: AI Response PM->>API: Personality Response end API->>DB: Save Response API->>FE: JSON Response FE->>U: Display Message

πŸš€ Core Features

πŸ€– AI Chat Assistant

Intelligent conversations with personality-driven responses. Supports slash commands for instant data access (/t for tasks, /e for events, /d for diary, /u for users).

πŸ“… Task Management

Complete task lifecycle with recurring tasks, priorities, and deadlines. Smart scheduling with AI-powered suggestions and automatic failure detection.

πŸ“Š Mood Diary

Daily mood tracking with sentiment analysis. Visual charts and insights for mental wellness monitoring with privacy-first local storage.

πŸ”” Background Notifications

Smart notification system with 30-minute and 5-minute reminders. Continues running when app is minimized or closed using Electron's system tray.

πŸ”’ Privacy-First

Local-first architecture with SQLite database. Optional Supabase sync for cross-device access. Your data stays completely private on your machine.

🎨 6 Custom Themes

Beautiful themes with unique personalities. Each theme has synchronized AI personality, avatar, and custom color schemes with smooth transitions.

πŸ”” Notification System Architecture

Event-driven notification system with three complementary layers for reliable reminders:

graph TD A[User Creates Task/Event] --> B[NotificationScheduler] B --> C[In-Memory Timers] C --> D[30min Reminder] C --> E[5min Reminder] C --> F[Due/Start Alert] G[App Minimized/Closed] --> H[BackgroundService] H --> I[Electron Main Process] I --> J[OS Notifications] K[Real-time Updates] --> L[DataContext Events] L --> M[Scheduler Updates] M --> N[Timer Recalculation]

⚑ Slash Commands

Wingman supports instant data access through slash commands for quick information retrieval:

/t - Tasks        /e - Events       /d - Diary        /u - Users

Command Examples:

πŸ› οΈ Technology Stack

Frontend (Electron + React)

Backend (FastAPI + Python)

AI Models (Ollama)

🎯 My Contributions

AI Integration Pipeline

Architected the complete Ollama integration system with model switching, context management, and intelligent response parsing. Implemented automatic model recommendations based on system RAM.

Theme System Design

Created the comprehensive 6-theme system with CSS variables, smooth transitions, and theme persistence. Implemented dynamic theme switching with real-time UI updates.

Personality AI System

Built the personality-driven AI response engine with theme synchronization and context-aware interactions. Each personality has unique traits and emoji preferences.

Notification Architecture

Designed the event-driven background notification system with smart timing (30min, 5min reminders) and cross-platform OS integration using Electron's system tray.

Task Management Logic

Built the core task scheduling algorithm with priority queuing, deadline tracking, recurring task support, and automatic failure detection for overdue tasks.

Cross-Platform Packaging

Set up Electron Builder configuration for Windows, macOS, and Linux distributions. Implemented auto-updating capabilities and portable executable generation.

πŸ“Š Project Metrics

πŸš€ Getting Started

Prerequisites

Quick Start

# Clone the repository
git clone https://github.com/Yxiang-828/Wingman.git
cd Wingman

# Install dependencies
npm install
pip install -r requirements.txt

# Start Ollama service
ollama serve

# Run in development mode
npm run dev:electron

Production Build

# One-command complete build (Windows)
.\complete-build.bat

# Manual build steps
npm run build
npm run dist

πŸ’» Development Setup

Development Mode

npm run dev:electron    # Starts Vite dev server + Electron + FastAPI backend

Available Scripts

πŸ”§ Supported AI Models

πŸ“‹ Model Recommendations by RAM:

πŸ”§ Troubleshooting

Ollama Not Found

# Windows (PowerShell)
winget install --id Ollama.Ollama

# macOS
brew install ollama

# Linux
curl https://ollama.ai/install.sh | sh

AI Model Download Issues

# Check available models
ollama list

# Download model manually
ollama run "deepseek-r1:7b"

# Remove corrupted model
ollama rm "model-name"

# Then restart Wingman

Port Conflicts

If port 8080 is busy, Wingman will automatically find an available port. You can also manually set the port in the configuration file.

Build Errors

# Clear node modules and reinstall
rm -rf node_modules package-lock.json
npm install

# Clear Python cache
pip cache purge
pip install -r requirements.txt --force-reinstall

βœ… Final Evaluation - NUS Orbital Apollo 2025

All Features Accepted by Tutor

Evaluator: Aakash S/O Rengarajan Ramaswamy (NUS Orbital Tutor)

Our Wingman project successfully passed the final evaluation with all 8 core features accepted. The tutor praised the implementation quality, user experience, and technical execution across the entire application:

Wingman Final Evaluation - All Features Accepted

Evaluation Highlights:

πŸŽ‰ Final Result: 8/8 Features Accepted - Project Evaluation Successful

View on GitHub β†’ Download Latest Release β†’